设备注册权限决定了哪些用户可以将新设备连接到您组织的 Cloudflare Zero Trust 实例。
-
在 Cloudflare 仪表板 ↗中,转到 Zero Trust > Team & Resources(团队和资源) > Devices(设备) > Device profiles(设备配置文件) > Management。
-
在 Device enrollment(设备注册) > Device enrollment permissions(设备注册权限) 中,选择 Manage(管理)。
-
在 Policies(策略) 选项卡中,配置一个或多个 Access 策略来定义谁可以加入其设备。例如,您可以允许具有公司电子邮件地址的所有用户:
规则类型 选择器 值 Include(包含) Emails ending in(电子邮件结尾为) @company.com
-
向您的
cloudflare_api_token↗ 添加以下权限:Access: Apps and Policies Write
-
使用
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" } } ] } -
使用
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)在无需任何用户交互的情况下注册设备,而不需要要求用户使用其凭证进行身份验证。由于不需要用户登录到身份提供商,因此无法在这些设备上执行基于身份的策略。
要使用服务令牌注册设备:
-
复制令牌的 Client ID(客户端 ID) 和 Client Secret(客户端密钥)。
-
前往 Access controls(访问控制) > Policies(策略) 并创建以下策略:
规则操作 规则类型 选择器 值 Service Auth(服务身份验证) Include(包含) Service Token(服务令牌) <TOKEN-NAME>确保将 Action(操作) 设置为 Service Auth(服务身份验证),而不是 Allow(允许)。
-
将 Access 策略添加到您的 设备注册权限。
-
在您的 MDM 部署参数 中,添加以下字段:
auth_client_id:服务令牌的 Client ID(客户端 ID)。auth_client_secret:服务令牌的 Client Secret(客户端密钥)。
-
将以下权限添加到您的
cloudflare_api_token↗:Access: Apps and Policies WriteAccess: Service Tokens Write
-
创建服务令牌 并复制其 Client ID(客户端 ID) 和 Client Secret(客户端密钥)。
-
创建以下 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 } } ] } -
将策略添加到用于 Cloudflare One Client 的
cloudflared_zero_trust_access_application中。 -
在您的 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。
企业客户可以在设备注册期间强制执行双向 TLS 身份验证(mTLS)。
证书要求
-
CA 证书可以来自公开受信任的 CA 或自签名。
-
在证书
Basic Constraints中,CA属性必须设置为TRUE。 -
证书必须使用以下列出的签名算法之一:
允许的签名算法
x509.SHA1WithRSAx509.SHA256WithRSAx509.SHA384WithRSAx509.SHA512WithRSAx509.ECDSAWithSHA1x509.ECDSAWithSHA256x509.ECDSAWithSHA384x509.ECDSAWithSHA512
要检查 mTLS 证书:
-
在 Cloudflare 仪表板 ↗中,前往 Zero Trust > Access controls(访问控制) > Service credentials(服务凭据) > Mutual TLS(双向 TLS)。
-
选择 Add mTLS Certificate(添加 mTLS 证书)。
-
为根 CA 输入任意名称。
-
在 Certificate content 中,粘贴您的根 CA 内容。
如果客户端证书由根 CA 直接签名,您只需上传根证书。如果客户端证书由中间证书签名,则必须上传完整的 CA 链(中间证书和根证书)。例如:
-----BEGIN CERTIFICATE----- <intermediate.pem> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <rootCA.pem> -----END CERTIFICATE-----
-
向您的
cloudflare_api_token↗ 添加以下权限:Access: Mutual TLS Certificates WriteAccess: Apps and Policies Write
-
使用
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"] } -
创建以下 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" } } ] } -
将策略添加到适用于 Cloudflare One 客户端的
cloudflared_zero_trust_access_application。 -
在您的设备上,将客户端证书添加到系统钥匙串。
当用户从 Cloudflare One Client 登录到您的 Zero Trust 组织时,他们的设备必须出示有效的客户端证书才能连接。