Cloudflare Access 的非交互式认证:服务令牌(Service Token)

为脚本或自动化服务提供安全的非交互式认证

Cloudflare Access 是一款访问控制工具,能确保访问请求都经过严格的身份验证。通常,这个验证过程是交互式的,需要用户通过浏览器登录。但如果需要让一个脚本、自动化任务或后端服务来访问这些受保护的资源,应该怎么办呢?

这时,服务令牌(Service Token) 就派上了用场。它为非交互式环境提供了认证方式。

什么是服务令牌?

服务令牌是一组专为应用程序或脚本设计的凭证,允许它们在没有用户直接参与的情况下,向受 Cloudflare Access 保护的资源进行身份验证。每个服务令牌都包含一个 客户端 ID(Client ID) 和一个 客户端密钥(Client Secret)

通过在 HTTP 请求头中包含这两个值,服务可以证明自己的身份,并通过 Access 策略的验证。

如何创建服务令牌

  1. 登录到 Cloudflare Zero Trust 管理面板。
  2. 在左侧导航栏中,找到 Access -> 服务身份验证
  3. 点击 创建服务令牌 按钮。
  4. 为服务令牌命名,例如 my-automation-script
  5. 点击 生成令牌

创建成功后,会显示 Client IDClient Secret务必立即复制并妥善保管 Client Secret,因为它只会出现一次。

如何使用服务令牌

要在应用程序或脚本中使用服务令牌,只需在发往受保护资源的 HTTP 请求中添加两个特定的请求头:

  • CF-Access-Client-Id: 服务令牌的 Client ID。
  • CF-Access-Client-Secret: 服务令牌的 Client Secret。

下面是一个使用 curl 的简单示例:

1
2
3
curl -X GET https://my-protected-app.example.com/api/data \
--header "CF-Access-Client-Id: <你的_CLIENT_ID>" \
--header "CF-Access-Client-Secret: <你的_CLIENT_SECRET>"

当 Cloudflare Access 收到这个请求时,它会验证这两个头信息。如果凭证有效,它将允许请求通过,否则将拒绝访问。

配置 Access 策略

仅仅创建了服务令牌还不够,下面创建一个 Access 策略,明确授权该令牌可以访问哪些资源。

  1. 在 Zero Trust 管理面板中,转到 Access -> 应用程序
  2. 选择想要授权访问的应用程序,或创建一个新的。
  3. 在应用程序的策略配置中,点击 创建新策略
  4. 为策略命名,例如 Allow Service Token Access
  5. 操作 一栏一定要选择 Service Auth
  6. 添加规则 部分:
    • 选择器: 选择 Service Token
    • : 选择刚才创建的服务令牌。
  7. 保存策略和应用程序设置。

通过这种方式,只有持有该特定服务令牌的请求才能匹配此策略规则,从而获得访问权限。

使用 Hugo 构建
主题 StackJimmy 设计