97 lines
2.4 KiB
Markdown
97 lines
2.4 KiB
Markdown
|
---
|
|||
|
title: 【教程】使用 Cloudflare Zero Trust 限制访问
|
|||
|
date: 2023/1/29 20:04
|
|||
|
tags: [cloudflare, access, api]
|
|||
|
categories: 技术
|
|||
|
permalink: 373.html
|
|||
|
index_img: https://i.dawnlab.me/2f2f141df278a55104d74d969487d8e7.png
|
|||
|
---
|
|||
|
|
|||
|
# 简介
|
|||
|
|
|||
|
## 零信任网络访问(ZTNA)
|
|||
|
|
|||
|
用户通过客户端或 Web 浏览器连接到企业资源,无需使用 VPN。当请求通过我们的网络进行路由和加速时,它们将被根据 Zero Trust 规则进行评估,这些规则集成了来自身份提供者、设备和其他上下文的信号。
|
|||
|
|
|||
|
过去,RDP 软件、SMB 文件查看器和其他胖客户端程序需要 VPN 来连接到专用网络连接。如今,团队可以通过 Cloudflare 的网络私密地路由任何 TCP 或 UDP 流量,并一次性对流量进行加速、验证和过滤,获得最佳性能和安全性。。
|
|||
|
|
|||
|
<!-- more -->
|
|||
|
|
|||
|
说人话就是你可以限制用户需要进行登录后才能访问你的业务
|
|||
|
|
|||
|
# 添加应用(以 web 应用举例)
|
|||
|
|
|||
|
你需要首先绑定并且解析此域名,例如 `xxx.example.com`
|
|||
|
|
|||
|
## [官方文档](https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/self-hosted-apps/)
|
|||
|
|
|||
|
## 提示
|
|||
|
|
|||
|
应用类型选择 `Self-hosted`
|
|||
|
|
|||
|
### 设置 App
|
|||
|
|
|||
|
`session duration` 建议选择 24 小时,避免过多重定向
|
|||
|
|
|||
|
#### Subdomain
|
|||
|
|
|||
|
填入 `xxx`
|
|||
|
|
|||
|
#### Domain
|
|||
|
|
|||
|
选择 `example.com`
|
|||
|
|
|||
|
### 添加策略
|
|||
|
|
|||
|
名称可随便填写,`Action` 不变选择 `Allow`
|
|||
|
|
|||
|
#### Include
|
|||
|
|
|||
|
左边选择 `Emails`,右边填入 Cloudflare 账户邮箱用于登录。
|
|||
|
|
|||
|
#### Require
|
|||
|
|
|||
|
左边选择 `Login Methods`,右边选择 `One-time PIN`
|
|||
|
|
|||
|
# 体验
|
|||
|
|
|||
|
此时,打开 `xxx.example.com` 将会要求你进行邮件认证,输入 Cloudflare 账户邮箱登录即可。
|
|||
|
|
|||
|
# 使用程序进行访问
|
|||
|
|
|||
|
## [官方文档](https://developers.cloudflare.com/cloudflare-one/identity/service-tokens/)
|
|||
|
|
|||
|
## 提示
|
|||
|
|
|||
|
### 创建 Service Token
|
|||
|
|
|||
|
### 关联 Token 到应用
|
|||
|
|
|||
|
进入应用访问策略配置页面,添加新策略
|
|||
|
|
|||
|
策略名随意,`Action` 选择 `Service Auth`。
|
|||
|
|
|||
|
#### Include
|
|||
|
|
|||
|
左边选择 `Service Token`,右边选择刚才建立的 Token。
|
|||
|
|
|||
|
### 设置请求头
|
|||
|
|
|||
|
`Client ID` 和 `Client Secret` 创建时已提供。
|
|||
|
|
|||
|
```
|
|||
|
CF-Access-Client-Id: <Client ID>
|
|||
|
CF-Access-Client-Secret: <Client Secret>
|
|||
|
```
|
|||
|
|
|||
|
```python
|
|||
|
from httpx import get
|
|||
|
|
|||
|
headers = {
|
|||
|
"CF-Access-Client-Id": "",
|
|||
|
"CF-Access-Client-Secret": "",
|
|||
|
}
|
|||
|
|
|||
|
get("xxx.example.com", headers=headers)
|
|||
|
```
|