跳转到内容
搜索文档

设备注册权限

最后更新 查看 MarkdownAgent 设置

设备注册权限决定了哪些用户可以将新设备连接到您组织的 Cloudflare Zero Trust 实例。

设置设备注册权限

  1. Cloudflare 仪表板中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Device profiles(设备配置文件) > Management

  2. Device enrollment(设备注册) > Device enrollment permissions(设备注册权限) 中,选择 Manage(管理)

  3. Policies(策略) 选项卡中,配置一个或多个 Access 策略来定义谁可以加入其设备。例如,您可以允许具有公司电子邮件地址的所有用户:

    规则类型 选择器
    Include(包含) Emails ending in(电子邮件结尾为) @company.com
  1. Login methods(登录方法) 选项卡中:

    a. 选择用户可用于身份验证的身份提供程序。如果您尚未集成身份提供程序,可以使用一次性 PIN 码

    b. (可选)如果计划仅允许通过单个 IdP 进行访问,请开启 Apply instant authentication(应用即时身份验证)。最终用户将不会看到 Cloudflare Access 登录页面。相反,Cloudflare 会将用户直接重定向到您的 SSO 登录事件。

  2. 选择 Save(保存)

  1. 向您的 cloudflare_api_token 添加以下权限:

    • Access: Apps and Policies Write
  2. 使用 cloudflare_zero_trust_access_policy 资源创建一个可重用的 Access 策略:

    resource "cloudflare_zero_trust_access_policy" "allow_company_emails" {
    	account_id   = var.cloudflare_account_id
    	name         = "Allow company emails"
    	decision     = "allow"
    	include      = [
    		{
    			email_domain = {
    				domain = "@example.com"
    			}
    		}
    	]
    }
  3. 使用 cloudflare_zero_trust_access_application 资源创建类型为 warp 的应用程序。

    resource "cloudflare_zero_trust_access_application" "device_enrollment" {
    	account_id       = var.cloudflare_account_id
    	type             = "warp"
    	name             = "Warp device enrollment"
    	allowed_idps              = [cloudflare_zero_trust_access_identity_provider.microsoft_entra_id.id]
    	auto_redirect_to_identity = true
    	app_launcher_visible      = false
    	policies = [
    		{
    			id = cloudflare_zero_trust_access_policy.allow_company_emails.id
    			precedence = 1
    		}
    	]
    }

用户现在可以通过登录您的身份提供商来注册其设备。要防止用户在注册后退出您的组织,请在设备客户端设置中禁用允许设备离开组织(Allow devices to leave organization)

示例策略

检查服务令牌(service token)

您可以使用服务令牌(service token)在无需任何用户交互的情况下注册设备,而不需要要求用户使用其凭证进行身份验证。由于不需要用户登录到身份提供商,因此无法在这些设备上执行基于身份的策略。

要使用服务令牌注册设备:

  1. 创建服务令牌

  2. 复制令牌的 Client ID(客户端 ID)Client Secret(客户端密钥)

  3. 前往 Access controls(访问控制) > Policies(策略) 并创建以下策略:

    规则操作 规则类型 选择器
    Service Auth(服务身份验证) Include(包含) Service Token(服务令牌) <TOKEN-NAME>

    确保将 Action(操作) 设置为 Service Auth(服务身份验证),而不是 Allow(允许)

  4. 将 Access 策略添加到您的 设备注册权限

  5. 在您的 MDM 部署参数 中,添加以下字段:

    • auth_client_id:服务令牌的 Client ID(客户端 ID)
    • auth_client_secret:服务令牌的 Client Secret(客户端密钥)
  1. 将以下权限添加到您的 cloudflare_api_token

    • Access: Apps and Policies Write
    • Access: Service Tokens Write
  2. 创建服务令牌 并复制其 Client ID(客户端 ID)Client Secret(客户端密钥)

  3. 创建以下 Access 策略:

    resource "cloudflare_zero_trust_access_policy" "warp_enrollment_service_token" {
    	account_id     = var.cloudflare_account_id
    	name           = "Allow service token"
    	decision       = "non_identity"
    	include = [
    		{
    			service_token = {
    				token_id = cloudflare_zero_trust_access_service_token.example_service_token.id
    			}
    		}
    	]
    }
  4. 将策略添加到用于 Cloudflare One Client 的 cloudflared_zero_trust_access_application 中。

  5. 在您的 MDM 部署参数 中,添加以下字段:

    • auth_client_id:服务令牌的 Client ID(客户端 ID)
    • auth_client_secret:服务令牌的 Client Secret(客户端密钥)

当您使用 MDM 提供商部署 Cloudflare One Client 时,Cloudflare One Client 将自动把设备连接到您的 Zero Trust 组织。

您可以通过转到 Team & Resources(团队和资源) > Devices(设备) 来验证哪些设备已经注册。使用服务令牌(或任何其他服务身份验证策略)注册的设备的 Email(电子邮件) 字段将显示为 non_identity@<team-name>.cloudflareaccess.com

检查 mTLS 证书

企业客户可以在设备注册期间强制执行双向 TLS 身份验证(mTLS)

证书要求

  • CA 证书可以来自公开受信任的 CA 或自签名。

  • 在证书 Basic Constraints 中,CA 属性必须设置为 TRUE

  • 证书必须使用以下列出的签名算法之一:

    允许的签名算法

    x509.SHA1WithRSA

    x509.SHA256WithRSA

    x509.SHA384WithRSA

    x509.SHA512WithRSA

    x509.ECDSAWithSHA1

    x509.ECDSAWithSHA256

    x509.ECDSAWithSHA384

    x509.ECDSAWithSHA512

要检查 mTLS 证书:

  1. Cloudflare 仪表板中,前往 Zero Trust > Access controls(访问控制) > Service credentials(服务凭据) > Mutual TLS(双向 TLS)

  2. 选择 Add mTLS Certificate(添加 mTLS 证书)

  3. 为根 CA 输入任意名称。

  4. Certificate content 中,粘贴您的根 CA 内容。

    如果客户端证书由根 CA 直接签名,您只需上传根证书。如果客户端证书由中间证书签名,则必须上传完整的 CA 链(中间证书和根证书)。例如:

    -----BEGIN CERTIFICATE-----
    <intermediate.pem>
    -----END CERTIFICATE-----
    -----BEGIN CERTIFICATE-----
    <rootCA.pem>
    -----END CERTIFICATE-----
  1. Associated hostnames 中,输入您的 Zero Trust 团队域<team-name>.cloudflareaccess.com

  2. 在您的设备注册权限中,添加 Common NameValid Certificate 规则。例如,以下策略要求具有特定常用名称的客户端证书:

    操作 规则类型 选择器
    Allow(允许) Require Common Name <CERT-COMMON-NAME>
  3. 在您的设备上,将客户端证书添加到系统钥匙串

  1. 向您的 cloudflare_api_token 添加以下权限:

    • Access: Mutual TLS Certificates Write
    • Access: Apps and Policies Write
  2. 使用 cloudflare_zero_trust_access_mtls_certificate 资源将 mTLS 证书添加到您的账户:

    resource "cloudflare_zero_trust_access_mtls_certificate" "example_mtls_cert" {
    	account_id     = var.cloudflare_account_id
    	name           = "WARP enrollment mTLS cert"
    	certificate    = <<EOT
    	-----BEGIN CERTIFICATE-----
    	xxxx
    	xxxx
    	-----END CERTIFICATE-----
    	EOT
    	associated_hostnames = ["your-team-name.cloudflareaccess.com"]
    }
  3. 创建以下 Access 策略:

    resource "cloudflare_zero_trust_access_policy" "warp_enrollment_mtls" {
    	account_id     = var.cloudflare_account_id
    	name           = "Allow employees with mTLS cert"
    	decision       = "allow"
    	include = [
    		{
    			email_domain = {
    				domain = "@example.com"
    			}
    		}
    	]
    
    	require = [
    		{
    			common_name = {
    				common_name = "Common name 1"
    			}
    		},
    				{
    			common_name = {
    				common_name = "Common name 2"
    			}
    		}
    	]
    }
  4. 将策略添加到适用于 Cloudflare One 客户端的 cloudflared_zero_trust_access_application

  5. 在您的设备上,将客户端证书添加到系统钥匙串

当用户从 Cloudflare One Client 登录到您的 Zero Trust 组织时,他们的设备必须出示有效的客户端证书才能连接。

这篇文档对您有帮助吗?