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
)のロールをユーザーに割り当てるには、次の手順を使用します。
Console
Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
[
アクセスを許可] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] リストで、[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
)のロールをユーザーに割り当てるには、次の手順を使用します。
Console
Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
[
アクセスを許可] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] リストで、[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
)ロールをユーザーに付与するには、次の手順に従います。
Console
Google Cloud コンソールで [Cloud Key Management Service] ページに移動します。
[キーリング] で、CA 署名鍵を含むキーリングをクリックします。
CA 署名鍵である鍵をクリックします。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] リストで、[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
)のロールをユーザーに割り当てるには、次の手順を使用します。
Console
Google Cloud コンソールの [IAM] ページに移動します。
プロジェクトを選択します。
[
アクセスを許可] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] リストで、[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 プールまたは証明書テンプレートを管理できます。
Console
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA プール マネージャー] タブをクリックし、権限を付与する CA プールを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] リストで、[CA Service 管理者] ロールを選択します。
[保存] をクリックします。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 によって発行された証明書を取り消すことができます。
Console
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA プール マネージャー] タブをクリックし、権限を付与する CA プールを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] リストで、[CA Service オペレーション マネージャー] ロールを選択します。
[保存] をクリックします。プリンシパルに、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 の証明書を作成するためのアクセス権をユーザーに付与するには、次の手順を使用します。
Console
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[CA プール マネージャー] をクリックし、権限を付与する CA プールを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] リストで、[CA Service Certificate Manager] ロールを選択します。
[保存] をクリックします。プリンシパルに、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 証明書マネージャー(
roles/privateca.certificateManager
)ロールを割り当てるユーザーの固有識別子。
--role
フラグは、メンバーに割り当てる IAM ロールを受け取ります。
証明書テンプレートへの IAM ポリシー バインディングの追加
特定の証明書テンプレートに IAM ポリシーを追加するには、次の手順を使用します。
Console
Google Cloud コンソールで、[Certificate Authority Service] ページに移動します。
[テンプレート マネージャー] タブをクリックし、権限を付与する証明書テンプレートを選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。次に、[権限] をクリックします。
[
プリンシパルを追加] をクリックします。[新しいプリンシパル] フィールドに、プリンシパルのメールアドレスまたはその他の ID を入力します。
[ロールを選択] プルダウン リストから、付与するロールを選択します。
[保存] をクリックします。
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 ロールとそれに関連する権限を確認します。
- テンプレートと発行ポリシーについて学習する。
- ポリシー制御を管理する方法を確認する。