IAM ポリシーを構成する
このページでは、メンバーが Certificate Authority Service リソースを作成および管理できるようにする Identity and Access Management(IAM)ポリシーを構成する方法について説明します。IAM の詳細については、IAM の概要をご覧ください。
一般的な IAM ポリシー
CA Service では、CA Service リソースの作成と管理のために、IAM ロールをユーザーまたはサービス アカウントに付与します。これらのロール バインディングは、次のレベルで追加できます。
- 特定の CA プールとその CA プール内の CA のアクセスを管理する CA プールレベル。
- スコープ内のすべての CA プールへのアクセス権を付与する、プロジェクト レベルまたは組織レベル。
上位レベルのリソースで付与されたロールは継承されます。たとえば、プロジェクト レベルで監査者(roles/privateca.auditor
)のロールを付与されたユーザーは、プロジェクト内のすべてのリソースを表示できます。認証局(CA)プールに設定されている IAM ポリシーは、その CA プール内のすべての CA によって継承されます。
証明書と CA リソースに対して IAM ロールを付与することはできません。
条件付き IAM ポリシー
異なる種類の証明書をリクエストする権限を持つ複数のユーザーが使用する可能性のある共有 CA プールがある場合は、IAM 条件を定義して、CA プールで特定のオペレーションを行うために属性ベースのアクセス権を適用できます。
IAM の条件付きロール バインディングを使用すると、指定した条件が満たされた場合にのみプリンシパルにアクセス権を付与できます。たとえば、証明書のリクエスト元のロールが CA プールのユーザー alice@example.com
に、リクエストされた DNS SAN が ['alice@example.com', 'bob@example.com']
のサブセットの状態でバインドされている場合、そのユーザーは、リクエストされた SAN が許可された 2 つの値のいずれかである場合にのみ、同じ CA プールから証明書をリクエストできます。Common Expression Language(CEL)式を使用して IAM バインディングの条件を設定できます。これらの条件により、ユーザーがリクエストできる証明書のタイプをさらに制限できます。IAM 条件での CEL 式の使用については、IAM ポリシーの Common Expression Language(CEL)言語をご覧ください。
準備
- API を有効にします。
- クイックスタートのいずれかの手順に沿って、CA と CA プールを作成します。
- Certificate Authority Service で使用可能な IAM ロールについて確認します。
プロジェクト レベルで IAM ポリシー バインディングを構成する
次のシナリオでは、ユーザーにプロジェクト レベルで CA Service のリソースへのアクセス権を付与する方法について説明します。
リソースの管理
CA Service 管理者(roles/privateca.admin
)には、すべての CA Service リソースを管理し、CA プールと証明書テンプレートに IAM ポリシーを設定する権限があります。
プロジェクト レベルで CA Service 管理者(roles/privateca.admin
)のロールをユーザーに割り当てるには、次の手順を使用します。
コンソール
Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
[
アクセスを許可] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] リストで、[CA Service 管理者] ロールを選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=MEMBER \
--role=roles/privateca.admin
次のように置き換えます。
- PROJECT_ID: プロジェクトの一意の識別子。
- MEMBER: CA Service 管理者のロールを割り当てるユーザーまたはサービス アカウント。
--role
フラグは、メンバーに割り当てる IAM ロールを取得します。
リソースの作成
CA Service オペレーション マネージャー(roles/privateca.caManager
)は、CA プールと CA を作成、更新、削除できます。このロールを使用すると、呼び出し元は CA プール内の CA によって発行された証明書を取り消すこともできます。
プロジェクト レベルで CA Service オペレーション マネージャー(roles/privateca.caManager
)のロールをユーザーに割り当てるには、次の手順を使用します。
コンソール
Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
[
アクセスを許可] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] リストで、[CA Service オペレーション マネージャー] ロールを選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=MEMBER \
--role=roles/privateca.caManager
次のように置き換えます。
- PROJECT_ID: プロジェクトの一意の識別子。
- MEMBER: IAM のロールを追加するユーザーまたはサービス アカウント。
--role
フラグは、メンバーに割り当てる IAM ロールを取得します。
gcloud projects add-iam-policy-binding
コマンドの詳細については、gcloud projects add-iam-policy-binding をご覧ください。
必要に応じて、既存の Cloud KMS 鍵を使用して CA を作成するには、呼び出し元が Cloud KMS 鍵の管理者である必要があります。
Cloud KMS 管理者(roles/cloudkms.admin
)は、暗号化と復号を除く、すべての Cloud KMS リソースへの完全アクセス権を持っています。Cloud KMS の IAM ロールの詳細については、Cloud KMS: 権限とロールをご覧ください。
Cloud KMS 管理者(roles/cloudkms.admin
)のロールをユーザーに付与するには、次の手順に従います。
コンソール
Google Cloud コンソールで、Cloud Key Management Service のページに移動します。
[キーリング] で、CA 署名鍵を含むキーリングをクリックします。
CA 署名鍵である鍵をクリックします。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] リストで、[Cloud KMS 管理者] ロールを選択します。
[保存] をクリックします。
gcloud
gcloud kms keys add-iam-policy-binding KEY \
--keyring=KEYRING --location=LOCATION \
--member=MEMBER \
--role=roles/cloudkms.admin
次のように置き換えます。
- KEY: 鍵の一意の識別子。
- KEYRING: 鍵を含むキーリング。キーリングの詳細については、キーリングをご覧ください。
- MEMBER: IAM バインディングを追加するユーザーまたはサービス アカウント。
--role
フラグは、メンバーに割り当てる IAM ロールを取得します。
gcloud kms keys add-iam-policy-binding
コマンドの詳細については、gcloud kms keys add-iam-policy-binding をご覧ください。
リソースの監査
CA Service 監査者(roles/privateca.auditor
)は、CA Service 内のすべてのリソースへの読み取りアクセス権を持っています。特定の CA プールに付与されると、CA プールへの読み取りアクセス権が付与されます。CA プールが Enterprise ティアにある場合、このロールを持つユーザーは、CA プール内の CA が発行した証明書と CRL も表示できます。CA プールのセキュリティとオペレーションの検証を担当する個人にこのロールを割り当てます。
プロジェクト レベルで CA Service 監査者(roles/privateca.auditor
)のロールをユーザーに割り当てるには、次の手順を使用します。
コンソール
Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
[
アクセスを許可] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] リストで、[CA Service 監査者] ロールを選択します。
[保存] をクリックします。
gcloud
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=MEMBER \
--role=roles/privateca.auditor
次のように置き換えます。
- PROJECT_ID: プロジェクトの一意の識別子。
- MEMBER: CA Service 監査者(
roles/privateca.auditor
)ロールを割り当てるユーザーの一意の識別子。
--role
フラグは、メンバーに割り当てる IAM ロールを取得します。
リソースレベルでの IAM ポリシー バインディングの構成
このセクションでは、CA Service の特定のリソースに IAM ポリシー バインディングを構成する方法について説明します。
CA プールの管理
リソースレベルで CA Service 管理者(roles/privateca.admin
)ロールを付与して、特定の CA プールまたは証明書テンプレートを管理できます。
コンソール
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA プール マネージャー] タブをクリックし、権限を付与する CA プールを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] リストで、[CA Service 管理者] ロールを選択します。
[Save] をクリックします。プリンシパルに、CA プール リソースに対する選択したロールが付与されます。
gcloud
ポリシーを設定するには、次のコマンドを実行します。
gcloud privateca pools add-iam-policy-binding POOL_ID \
--location LOCATION \
--member MEMBER \
--role roles/privateca.admin
次のように置き換えます。
- POOL_ID: IAM ポリシーを設定する CA プールの一意の識別子。
- LOCATION: CA プールのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
- MEMBER: IAM ロールを割り当てるユーザーまたはサービス アカウント。
--role
フラグは、メンバーに割り当てる IAM ロールを取得します。
gcloud privateca pools add-iam-policy-binding
コマンドの詳細については、gcloud privateca pools add-iam-policy-binding をご覧ください。
同じ手順に従って、証明書テンプレートに対する CA Service 管理者ロールを付与します。
特定の CA プールに CA Service オペレーション マネージャー(roles/privateca.caManager
)ロールを付与することもできます。このロールにより、呼び出し元は、その CA プール内の CA によって発行された証明書を取り消すことができます。
コンソール
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA プール マネージャー] タブをクリックし、権限を付与する CA プールを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] リストで、[CA Service オペレーション マネージャー] ロールを選択します。
[Save] をクリックします。プリンシパルには、CA が属する CA プール リソースに対して選択したロールが付与されます。
gcloud
特定の CA プールのロールを付与するには、次の gcloud
コマンドを実行します。
gcloud privateca pools add-iam-policy-binding POOL_ID \
--location LOCATION \
--member MEMBER \
--role roles/privateca.caManager
次のように置き換えます。
- POOL_ID: CA プールの一意の識別子。
- LOCATION: CA プールのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
- MEMBER: CA Service オペレーション マネージャー(
roles/privateca.caManager
)ロールを割り当てるユーザーの一意の識別子。
--role
フラグは、メンバーに割り当てる IAM ロールを取得します。
gcloud privateca pools add-iam-policy-binding
コマンドの詳細については、gcloud privateca pools add-iam-policy-binding をご覧ください。
証明書の作成
CA Service 証明書管理者(roles/privateca.certificateManager
)ロールをユーザーに付与し、CA プールに証明書発行リクエストを送信できるようにします。このロールは、CA Service のリソースへの読み取りアクセス権も付与します。読み取りアクセス権なしで証明書の作成のみを許可するには、CA Service 証明書リクエスト元(roles/privateca.certificateRequester
)のロールを付与します。CA Service の IAM ロールの詳細については、IAM を使用したアクセス制御をご覧ください。
特定の CA の証明書を作成する権限をユーザーに付与するには、次の手順を行います。
コンソール
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA プール マネージャー] をクリックして、権限を付与する CA プールを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] リストで、[CA Service Certificate Manager] ロールを選択します。
[Save] をクリックします。プリンシパルには、CA が属する CA プール リソースに対して選択したロールが付与されます。
gcloud
gcloud privateca pools add-iam-policy-binding 'POOL_ID' \
--location LOCATION \
--member MEMBER \
--role roles/privateca.certificateManager
次のように置き換えます。
- POOL_ID: CA プールの一意の識別子。
- LOCATION: CA プールのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
- MEMBER: CA Service Certificate Manager(
roles/privateca.certificateManager
)のロールを割り当てるユーザーの一意の識別子。
--role
フラグは、メンバーに割り当てる IAM ロールを取得します。
証明書テンプレートに IAM ポリシー バインディングを追加する
特定の証明書テンプレートに IAM ポリシーを追加するには、次の手順に沿って操作します。
コンソール
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[テンプレート マネージャー] タブをクリックし、権限を付与する証明書テンプレートを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の識別子を入力します。
[ロールを選択] プルダウン リストから付与するロールを選択します。
[保存] をクリックします。
gcloud
gcloud privateca templates add-iam-policy-binding TEMPLATE_ID \
--location=LOCATION \
--member=MEMBER \
--role=ROLE
次のように置き換えます。
- LOCATION: 証明書テンプレートのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
- MEMBER: IAM ポリシー バインディングを追加するユーザーまたはサービス アカウント。
- ROLE: メンバーに付与するロール。
gcloud privateca templates add-iam-policy-binding
コマンドの詳細については、gcloud privateca templates add-iam-policy-binding をご覧ください。
ユーザーの IAM ロールの変更の詳細については、アクセス権の付与をご覧ください。
IAM ポリシーのバインドの削除
既存の IAM ポリシー バインディングを削除するには、Google Cloud CLI の remove-iam-policy-binding
コマンドを使用します。
特定の CA プールの IAM ポリシーを削除するには、次の gcloud
コマンドを使用します。
gcloud
gcloud privateca pools remove-iam-policy-binding POOL_ID \
--location=LOCATION \
--member=MEMBER \
--role=ROLE
次のように置き換えます。
- LOCATION: CA プールのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
- MEMBER: IAM ポリシー バインディングを削除するユーザーまたはサービス アカウント。
- ROLE: メンバーから削除するロール。
gcloud privateca pools remove-iam-policy-binding
コマンドの詳細については、gcloud privateca pools remove-iam-policy-binding をご覧ください。
特定の証明書テンプレートの IAM ポリシーを削除するには、次の gcloud
コマンドを使用します。
gcloud
gcloud privateca templates remove-iam-policy-binding TEMPLATE_ID \
--location=LOCATION \
--member=MEMBER \
--role=ROLE
次のように置き換えます。
- LOCATION: 証明書テンプレートのロケーション。ロケーションの完全なリストについては、ロケーションをご覧ください。
- MEMBER: IAM ポリシー バインディングを削除するユーザーまたはサービス アカウント。
- ROLE: メンバーから削除するロール。
gcloud privateca templates remove-iam-policy-binding
コマンドの詳細については、gcloud privateca templates remove-iam-policy-binding をご覧ください。
ユーザーの IAM ロールの削除の詳細については、アクセス権の取り消しをご覧ください。
次のステップ
- CA Service の IAM ロールとそれに関連する権限を確認します。
- テンプレートと発行ポリシーについて学習する。
- ポリシー制御を管理する方法を確認する。