IAM を使用したアクセス制御
このページでは、Certificate Authority Service の IAM ロールについて説明します。
CA Service は、Identity and Access Management(IAM)ロールを使用してアクセス制御を行います。IAM では、誰(ID)がどのリソースに対してどのようなアクセス権(ロール)を持つかを定義することによって、アクセスを制御します。IAM ロールには、ユーザーが Google Cloud リソースで特定の操作を実行できるようにする一連の権限が含まれています。IAM ロールを付与するときに最小権限の原則に従うことで、Certificate Authority Service リソースの完全性を保護し、CA プールと全体の公開鍵基盤(PKI)自体のセキュリティを管理できます。
ユーザーまたはサービス アカウントに IAM ロールを割り当てる方法については、IAM ドキュメントのリソースへのアクセス権の付与、変更、取り消しをご覧ください。
事前定義ロール
次の表に、事前定義された IAM ロールと、各ロールに関連付けられた権限を示します。
ロール | 権限 | 説明 |
---|---|---|
CA Service 監査者 roles/privateca.auditor |
privateca.caPools.get privateca.caPools.getIamPolicy privateca.caPools.list privateca.certificateAuthorities.list privateca.certificateAuthorities.get privateca.certificateTemplates.get privateca.certificateTemplates.getIamPolicy privateca.certificateTemplates.list privateca.certificates.list privateca.certificates.get privateca.locations.get privateca.locations.list privateca.operations.get privateca.operations.list privateca.certificateRevocationLists.list privateca.certificateRevocationLists.get privateca.certificateRevocationLists.getIamPolicy resourcemanager.projects.get resourcemanager.projects.list
|
CA Service 監査者ロールには、すべての CA Service リソースに対する読み取り専用アクセス権があり、CA プール、CA、証明書、失効リスト、IAM ポリシー、プロジェクトのプロパティを取得して一覧表示できます。CA プールのセキュリティとオペレーションの検証を担当し、サービスを管理する日常業務を割り当てられていない個人にこのロールを割り当てることをおすすめします。 |
CA Service 証明書リクエスト元 roles/privateca.certificateRequester |
privateca.certificates.create
|
CA Service 証明書リクエスト元のロールでは、証明書リクエストを CA プールに送信できます。証明書のリクエストが許可されている信頼できる個人に、このロールを付与することをおすすめします。 このロールを持つユーザーは、発行ポリシーに従って任意の証明書をリクエストできます。 CA Service 証明書マネージャーのロールとは異なり、このロールでは、ユーザーが新しく発行された証明書を取得または一覧表示することや、CA プールに関する情報を取得することはできません。 |
CA Service ワークロード証明書リクエスト元 roles/privateca.workloadCertificateRequester |
privateca.certificates.createForSelf
|
CA Service ワークロード証明書リクエスト元は、呼び出し元の ID を使用して CA サービスから証明書をリクエストできます。 |
CA Service 証明書マネージャー roles/privateca.certificateManager |
roles/privateca.auditor からのすべての権限と以下の権限:privateca.certificates.create
|
CA Service 証明書マネージャーは、CA Service 証明書リクエスト元などの CA プールに証明書発行リクエストを送信できます。また、このロールは CA Service 監査者ロールの権限も継承します。マネージャーやリード エンジニアなど、CA プールでの証明書リクエストの作成、追跡、確認を担当する個人に、このロールを割り当てることをおすすめします。 |
CA Service 証明書テンプレート ユーザー roles/privateca.templateUser |
privateca.certificateTemplates.get privateca.certificateTemplates.list privateca.certificateTemplates.use
|
CA Service 証明書テンプレート ユーザーは、証明書テンプレートの読み取り、一覧表示、使用を行うことができます。 |
CA Service オペレーション マネージャー roles/privateca.caManager |
roles/privateca.auditor からのすべての権限と以下の権限:privateca.certificates.update privateca.caPools.create privateca.caPools.delete privateca.caPools.update privateca.certificateAuthorities.create privateca.certificateAuthorities.delete privateca.certificateAuthorities.update privateca.certificateRevocationLists.update privateca.certificateTemplates.create privateca.certificateTemplates.delete privateca.certificateTemplates.update privateca.certificates.update privateca.operations.cancel privateca.operations.delete resourcemanager.projects.get resourcemanager.projects.list storage.buckets.create
|
CA Service オペレーション マネージャーは、CA プールと CA を作成、更新、削除できます。このロールでは、証明書の取り消しと Cloud Storage バケットの作成を行うこともできます。また、CA Service 監査者と同じ機能も含まれます。このロールでは、個人が CA プールの発行ポリシーの構成に加え、組織内で CA プールの構成とデプロイを行う責任があります。 このロールでは、証明書の作成は許可されません。これを行うには、CA Service 証明書リクエスト元、CA Service 証明書マネージャー、または CA Service 管理者のロールを使用します。 |
CA サービス管理者 roles/privateca.admin |
roles/privateca.certificateManager および roles/privateca.caManager からのすべての権限と以下の権限:privateca.*.setIamPolicy privateca.caPools.use privateca.operations.cancel privateca.operations.delete privateca.resourcemanager.projects.get privateca.resourcemanager.projects.list storage.buckets.create
|
CA Service 管理者のロールは、CA Service オペレーション マネージャーと CA Service 証明書マネージャーのロールの権限を継承します。このロールでは、CA Service 内のすべてのアクションを実行できます。CA Service 管理者は、CA プールの IAM ポリシーを設定し、Cloud Storage バケットを作成できます。サービスの確立後は、このロールをできるだけ割り当てないことをおすすめします。このロールでは、個人が他のユーザーへの権限の割り当てや、CA Service 内の証明書リクエストの管理など、あらゆる管理作業を行うことができます。このロール アカウントに対する特別な制御とアクセスを実装し、不正なアクセスや使用を防止することをおすすめします。 |
CA Service サービス エージェントのロール
CA の作成時に既存の Cloud KMS 署名鍵または Cloud Storage バケットを指定する場合は、CA Service サービス エージェントのサービス アカウント(service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com
)に、それぞれのリソースへのアクセス権を付与する必要があります。
Cloud KMS の場合、roles/cloudkms.signerVerifier
は、署名鍵を使用して公開鍵を読み取るために必要です。roles/viewer
は、Cloud Monitoring 統合のキーをモニタリングするために必要です。
Cloud Storage の場合、roles/storage.objectAdmin
は、CA 証明書と CRL をバケットに書き込むために必要です。roles/storage.legacyBucketReader
は、Cloud Monitoring 統合のバケットをモニタリングするために必要です。詳細については、Cloud Storage に対する IAM ロールをご覧ください。
API を使用してサービスにアクセスする際には、次のコマンドを実行します。
サービス エージェントのロールを持つサービス アカウントを作成します。
gcloud
gcloud beta services identity create --service=privateca.googleapis.com --project=PROJECT_ID
ここで
- PROJECT_ID は、CA プールが作成されるプロジェクトの固有識別子です。
次の
gcloud
コマンドを使用して、サービス アカウントにroles/cloudkms.signerVerifier
ロールとroles/viewer
ロールを付与します。既存の Cloud KMS 署名鍵が指定されている場合:
gcloud
gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/cloudkms.signerVerifier'
ここで
- CRYPTOKEY_NAME は、鍵の名前です。
- KEYRING_NAME は、キーリングの名前です。
- 「LOCATION」は、キーリングを作成した Cloud KMS のロケーションです。
- 「PROJECT_NUMBER」は、サービス アカウントの名前です。
gcloud kms keys add-iam-policy-binding 'CRYPTOKEY_NAME' \ --keyring='KEYRING_NAME' \ --location='LOCATION' \ --member='serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com' \ --role='roles/viewer'
次の
gcloud
コマンドを使用して、サービス アカウントにroles/storage.objectAdmin
ロールとroles/storage.legacyBucketReader
ロールを付与します。既存の Cloud Storage バケットがある場合:
gcloud
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \ --role=roles/storage.objectAdmin
ここで
- BUCKET_NAME は、Cloud Storage バケットの名前です。
- PROJECT_NUMBER はサービス アカウントの固有識別子です。
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-privateca.iam.gserviceaccount.com \ --role=roles/storage.legacyBucketReader
API 権限
次の表に、CA Service API の各メソッドを呼び出すために必要な権限を示します。
権限 | 説明 |
---|---|
privateca.caPools.create |
認証局(CA)プールを作成します。 |
privateca.caPools.update |
CA プールを更新します。 |
privateca.caPools.list |
プロジェクト内の CA プールを一覧表示します。 |
privateca.caPools.get |
CA プールを取得します。 |
privateca.caPools.delete |
CA プールを削除します。 |
privateca.caPools.use |
CA プールを使用します。 |
privateca.caPools.getIamPolicy |
CA プールの IAM ポリシーを取得します。 |
privateca.caPools.setIamPolicy |
CA プールの IAM ポリシーを設定します。 |
privateca.certificateAuthorities.create |
CA を作成します。 |
privateca.certificateAuthorities.delete |
CA の削除のスケジュールを設定します。 |
privateca.certificateAuthorities.get |
CA または CA 証明書の署名リクエストを取得します。 |
privateca.certificateAuthorities.list |
プロジェクト内の CA を一覧表示します。 |
privateca.certificateAuthorities.update |
CA の有効化、アクティブ化、無効化、復元を含めて、CA を更新します。 |
privateca.certificates.create |
CA サービスに証明書をリクエストします。 |
privateca.certificates.createForSelf |
呼び出し元の ID を使用して CA サービスに証明書をリクエストします。 |
privateca.certificates.get |
証明書とそのメタデータを取得します。 |
privateca.certificates.list |
CA 内のすべての証明書を一覧表示します。 |
privateca.certificates.update |
取り消しを含めて、証明書のメタデータを更新します。 |
privateca.certificateRevocationLists.get |
CA 内の証明書失効リスト(CRL)を取得します。 |
privateca.certificateRevocationLists.getIamPolicy |
CRL の IAM ポリシーを取得します。 |
privateca.certificateRevocationLists.list |
CA 内のすべての CRL を一覧表示します。 |
privateca.certificateRevocationLists.setIamPolicy |
CRL の IAM ポリシーを設定します。 |
privateca.certificateRevocationLists.update |
CRL を更新します。 |
privateca.certificateTemplates.create |
証明書テンプレートを作成します。 |
privateca.certificateTemplates.get |
証明書テンプレートを取得します。 |
privateca.certificateTemplates.list |
すべての証明書テンプレートを一覧表示します。 |
privateca.certificateTemplates.update |
証明書テンプレートを更新します。 |
privateca.certificateTemplates.delete |
証明書テンプレートを削除します。 |
privateca.certificateTemplates.getIamPolicy |
証明書テンプレートの IAM ポリシーを取得します。 |
privateca.certificateTemplates.setIamPolicy |
証明書テンプレートの IAM ポリシーを設定します。 |
privateca.certificateTemplates.use |
証明書テンプレートを使用します。 |
privateca.operations.cancel |
長時間実行オペレーションをキャンセルします。 |
privateca.operations.delete |
長時間実行オペレーションを削除します。 |
privateca.operations.get |
長時間実行オペレーションを取得します。 |
privateca.operations.list |
プロジェクト内の長時間実行オペレーションを一覧表示します。 |
次のステップ
- IAM を使用して、Google Cloud リソースの権限とアクセス スコープを一元管理する方法を確認します。
- IAM ポリシーの構成方法を学習する。