デバイス登録の権限は、どのユーザーが組織の Cloudflare Zero Trust インスタンスに新しいデバイスを接続できるかを決めます。ユーザーがデバイスを登録すると、Cloudflare One Client はアイデンティティトークンを保存し、プライベートネットワーク内のサービスへの認証に使います。
-
Cloudflare ダッシュボード ↗ で、Zero Trust > Team & Resources > Devices > Device profiles > Management を開きます。
-
Device enrollment > Device enrollment permissions で Manage を選択します。
-
Policies タブで、デバイスを参加できるユーザーを定義する Access ポリシー を 1 つ以上設定します。たとえば、会社のメールアドレスを持つすべてのユーザーを許可できます。
ルールタイプ セレクター 値 Include Emails ending in @company.com
-
Login methods タブで:
a. ユーザーが認証に使える アイデンティティプロバイダー を選びます。アイデンティティプロバイダーを統合していない場合は、ワンタイム PIN を使えます。
b. (任意)単一の IdP だけでアクセスを許可する場合は、Apply instant authentication をオンにします。エンドユーザーには Cloudflare Access のログインページは表示されません。代わりに、Cloudflare が SSO ログインへ直接リダイレクトします。
-
Save を選択します。
-
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 } ] }
デバイスポスチャの評価は、デバイスが Zero Trust 組織に登録されたあとで行われます。特定のデバイスだけを登録できるようにしたい場合は、デバイス登録ポリシーに 相互 TLS 認証 ルールを追加することを推奨します。このルールは、登録するデバイスに特定のクライアント証明書があるかを確認します。
証明書の要件
-
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 を開きます。
-
Add mTLS Certificate を選択します。
-
ルート CA の名前を任意で入力します。
-
Certificate content にルート CA の内容を貼り付けます。
クライアント証明書がルート CA で直接署名されている場合は、ルートだけをアップロードします。クライアント証明書が中間証明書で署名されている場合は、CA チェーン全体(中間とルート)をアップロードする必要があります。例:
-----BEGIN CERTIFICATE----- <intermediate.pem> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <rootCA.pem> -----END CERTIFICATE----- -
Associated hostnames に、Zero Trust の チームドメイン を入力します:
<team-name>.cloudflareaccess.com -
デバイス登録の権限 に、Common Name または Valid Certificate のルールを追加します。たとえば、次のポリシーは特定のコモンネームを持つクライアント証明書を要求します。
アクション ルールタイプ セレクター 値 Allow Require Common Name <CERT-COMMON-NAME> -
デバイスで、クライアント証明書を システムキーチェーン に追加します。
-
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 Client 向けの
cloudflared_zero_trust_access_applicationに追加します。 -
デバイスで、クライアント証明書を システムキーチェーン に追加します。
多くの企業は、ユーザーディレクトリの信頼できる情報源として、単一のアイデンティティプロバイダーを使います。この情報源を使って、会社のユーザーを Zero Trust にオンボードしてください。たとえば、会社のメールアドレスで、メインのアイデンティティプロバイダーへログインすることを必須にします。そのあと、必要に応じて、業務委託先、ベンダー、買収した企業など、ネットワークへのアクセスが必要な相手向けに、別のログイン方法やアイデンティティプロバイダーを追加できます。