このドキュメントでは、ロードバランサのバックエンド サービスでマネージド ワークロード ID を構成する方法について説明します。マネージド ID を割り当てると、ロードバランサとそのバックエンドはバックエンド mTLS を使用して相互に認証できます。
マネージド ワークロード ID を使用してバックエンド mTLS を構成するには、次の操作を行う必要があります。
- マネージド ワークロード ID の X.509 証明書を発行するように Certificate Authority Service 認証局(CA)プールを構成します。
- 名前空間、マネージド ID、構成証明ポリシー、インライン証明書発行構成リソース、インライン信頼構成リソースを含む Workload Identity プールを作成して、信頼ドメインを構成します。1
- インライン証明書発行の構成を使用して、CA を Workload Identity プールにバインドします。
- CA プールからの証明書のリクエストをマネージド ワークロード ID に許可します。
- ロードバランサを作成し、マネージド ID をバックエンド サービスにアタッチします。
1 ロードバランサとそのバックエンドが異なる信頼ドメインにある場合にのみ、インライン信頼構成を作成する必要があります。この例では、ロードバランサとバックエンドの両方が同じ信頼ドメインの一部であるため、インライン信頼構成リソースの構成は省略可能です。
バックエンドのマネージド ID を作成するには、 マネージド ワークロード ID の概要をご覧ください。
始める前に
Google Cloud プロジェクトを作成または選択します。
プロジェクトの選択または作成に必要なロール
- プロジェクトを選択する: プロジェクトの選択に特定の IAM ロールは必要ありません。ロールが付与されているプロジェクトであれば、どのプロジェクトでも選択できます。
-
プロジェクトを作成する: プロジェクトを作成するには、
resourcemanager.projects.create権限を含むプロジェクト作成者ロール(roles/resourcemanager.projectCreator)が必要です。ロールを付与する方法を確認する。
-
Google Cloud プロジェクトを作成します。
gcloud projects create PROJECT_ID
PROJECT_IDは、作成する Google Cloud プロジェクトの名前に置き換えます。 -
作成した Google Cloud プロジェクトを選択します。
gcloud config set project PROJECT_ID
PROJECT_IDは、 Google Cloud プロジェクトの名前に置き換えます。
マネージド ワークロード ID を使用したバックエンド mTLS の概要のドキュメントを確認します。
Certificate Authority Service を使用した証明書の発行について理解する。
IAM、Certificate Authority Service、Compute Engine、Certificate Manager、ネットワーク セキュリティの API を有効にします。
API を有効にするために必要なロール
API を有効にするには、
serviceusage.services.enable権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。gcloud services enable iam.googleapis.com
privateca.googleapis.com compute.googleapis.com certificatemanager.googleapis.com networksecurity.googleapis.com 許可リストに追加されたプロジェクトを課金と割り当てに使用するように Google Cloud CLI を構成します。
gcloud config set billing/quota_project PROJECT_ID
PROJECT_IDは、マネージド ワークロード ID(プレビュー版)の許可リストに追加されたプロジェクトの ID に置き換えます。バックエンドのマネージド ID を作成します。詳細については、マネージド ワークロード ID の概要をご覧ください。
必要なロール
マネージド ワークロード ID を作成し、マネージド ワークロード ID 証明書をプロビジョニングするために必要な権限を取得するには、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
-
マネージド ワークロード ID を作成して構成する:
-
IAM Workload Identity プール管理者 (
roles/iam.workloadIdentityPoolAdmin) -
サービス アカウント管理者(
roles/iam.serviceAccountAdmin)
-
IAM Workload Identity プール管理者 (
- CA プールを作成して構成する: CA サービス管理者(
roles/privateca.admin) TargetHTTPSProxyなどのロードバランサ リソースの作成: Compute ロードバランサ管理者(roles/compute.loadBalancerAdmin)- Certificate Manager リソースの使用: Certificate Manager オーナー(
roles/certificatemanager.owner) -
セキュリティとネットワーキングのコンポーネントを作成する:
-
Compute ネットワーク管理者 (
roles/compute.networkAdmin) -
Compute セキュリティ管理者(
roles/compute.securityAdmin)
-
Compute ネットワーク管理者 (
-
プロジェクトの作成(任意): プロジェクト作成者(
roles/resourcemanager.projectCreator)
ロールの付与については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
マネージド ワークロード ID の証明書を発行するように CA Service を構成する
CA プールを使用して、ルート CA を設定できます。CA プールは、マネージド ワークロード ID に X.509 証明書を発行します。
ルート CA プールを作成する
gcloud privateca pools create コマンドを使用して、エンタープライズ ティアにルート CA プールを作成します。この階層は、有効期間が長く、少量の証明書の発行に適しています。
gcloud privateca pools create ROOT_CA_POOL_ID \
--location=REGION \
--project=PROJECT_ID \
--tier=enterprise
次のように置き換えます。
ROOT_CA_POOL_ID: ルート CA プールの一意の IDREGION: ルート CA プールが配置されているリージョンPROJECT_ID: プロジェクト ID
CA プールの詳細については、CA プールを作成するをご覧ください。
ルート CA を作成する
gcloud privateca roots create コマンドを使用して、ルート CA プールにルート CA を作成します。
ルート CA を作成するには、次のコマンドを実行します。
gcloud privateca roots create ROOT_CA_ID \
--pool=ROOT_CA_POOL_ID \
--subject="CN=ROOT_CA_CN, O=ROOT_CA_ORGANIZATION" \
[--key-algorithm="KEY_ALGORITHM"] \
--max-chain-length=1 \
--location=REGION \
--project=PROJECT_ID \
--auto-enable
次のように置き換えます。
ROOT_CA_ID: ルート CA の一意の名前。CA 名は 64 文字以下で、大文字と小文字の英数字、アンダースコア、ハイフンのみを使用できます。CA 名はリージョン内で一意である必要があります。ROOT_CA_POOL_ID: ルート CA プールの ID。ROOT_CA_CN: ルート CA の共通名。ROOT_CA_ORGANIZATION: ルート CA の組織。KEY_ALGORITHM: Cloud KMS 鍵の作成に使用するアルゴリズム。このフラグは省略可能です。このフラグを含めない場合、鍵アルゴリズムはデフォルトでrsa-pkcs1-4096-sha256になります。REGION: ルート CA プールが配置されているリージョン。PROJECT_ID: プロジェクト ID。
ルート CA の詳細については、ルート CA を作成するをご覧ください。
マネージド ワークロード ID を作成する
マネージド ワークロード ID を使用すると、 Google Cloud は Certificate Authority Service から X.509 証明書を自動的にプロビジョニングして管理できます。Workload Identity は、Workload Identity プール内で定義され、名前空間と呼ばれる管理境界に編成されます。
ワークロード ID プールを作成する
マネージド ワークロード ID を作成するには、TRUST_DOMAIN モードでプールを作成する必要があります。マネージド ワークロード ID の Workload Identity プールを作成するには、gcloud iam workload-identity-pools create コマンドを使用します。
gcloud iam workload-identity-pools create WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--mode="TRUST_DOMAIN"
WORKLOAD_IDENTITY_POOL_ID は、プールの固有 ID に置き換えます。ID は 4 ~ 32 文字で、小文字の英数字とダッシュのみを使用できます。先頭と末尾は英数字にする必要があります。ワークロード ID プールを作成した後に、その ID を変更することはできません。
Workload Identity プールが TRUST_DOMAIN モードで作成されたことを確認するには、gcloud iam workload-identity-pools describe コマンドを使用します。
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global"
出力は次のようになります。
mode: TRUST_DOMAIN name: projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID state: ACTIVE
この出力には次の値が含まれます。
PROJECT_NUMBER:Google Cloud プロジェクトのプロジェクト番号WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの ID
名前空間の作成
gcloud iam workload-identity-pools namespaces create コマンドを使用すると、ワークロード ID プールに名前空間を作成できます。
gcloud iam workload-identity-pools namespaces create NAMESPACE_ID \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
次のように置き換えます。
NAMESPACE_ID: 名前空間の一意の ID。ID は 2 ~ 63 文字で、小文字の英数字とダッシュのみを使用できます。先頭と末尾は英数字にする必要があります。名前空間を作成した後に、その ID を変更することはできません。WORKLOAD_IDENTITY_POOL_ID: 前に作成した Workload Identity プール ID。
マネージド ワークロード ID を作成する
gloud iam workload-identity-pools managed-identities create コマンドを使用すると、Workload Identity プールにマネージド ワークロード ID の名前空間を作成できます。
gcloud iam workload-identity-pools managed-identities create MANAGED_IDENTITY_ID \
--namespace="NAMESPACE_ID" \
--workload-identity-pool="WORKLOAD_IDENTITY_POOL_ID" \
--location="global"
次のように置き換えます。
MANAGED_IDENTITY_ID: マネージド ID の一意の ID。ID は 2 ~ 63 文字で、小文字の英数字とダッシュのみを使用できます。先頭と末尾は英数字にする必要があります。マネージド ワークロード ID を作成した後に、その ID を変更することはできません。NAMESPACE_ID: 前に作成した名前空間 ID。WORKLOAD_IDENTITY_POOL_ID: 前に作成した Workload Identity プール ID。
マネージド ワークロード ID は SPIFFE 識別子で、次のような形式になります。
spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
証明書ポリシーを作成する
この例では、構成証明ポリシーに、バックエンド サービスが特定のプロジェクトの一部であるかどうかを確認する構成証明ルールが含まれています。構成証明ポリシーの検証に合格すると、IAM は Certificate Authority Service からマネージド ID の X.509 証明書をリクエストします。
証明書ポリシーを作成するには、次のコマンドを実行して証明書ルールを追加します。
gcloud iam workload-identity-pools managed-identities add-attestation-rule MANAGED_IDENTITY_ID \
--namespace=NAMESPACE_ID \
--workload-identity-pool=WORKLOAD_IDENTITY_POOL_ID \
--google-cloud-resource='//compute.googleapis.com/projects/PROJECT_NUMBER/type/BackendService/*' \
--location=global
次のように置き換えます。
MANAGED_IDENTITY_ID: マネージド ID の一意の ID。ID は 2 ~ 63 文字で、小文字の英数字とダッシュのみを使用できます。先頭と末尾は英数字にする必要があります。マネージド ワークロード ID を作成した後に、その ID を変更することはできません。NAMESPACE_ID: 前に作成した Namespace ID。WORKLOAD_IDENTITY_POOL_ID: 前に作成した Workload Identity プール ID。PROJECT_NUMBER: Google Cloud プロジェクトのプロジェクト番号。
インライン証明書発行の構成を作成する
CA を Workload Identity プールにバインドするには、Workload Identity プールにインライン証明書発行の構成が必要です。
インライン証明書発行構成を構成するには、JSON 形式の構成ファイル(cic.json)を作成します。ファイルの形式は次のようになります。
{
"inlineCertificateIssuanceConfig": {
"caPools": {
"REGION": "projects/PROJECT_NUMBER/locations/REGION/caPools/ROOT_CA_POOL_ID",
},
["lifetime": "CERTIFICATE_LIFETIME"],
["rotationWindowPercentage": ROTATION_WINDOW_PERCENTAGE],
["keyAlgorithm": "ALGORITHM"]
}
}
次のように置き換えます。
REGION: CA が配置されているリージョン。PROJECT_NUMBER: プロジェクト番号。PROJECT_ID変数で指定されたプロジェクトからプロジェクト番号を取得するには、次のコマンドを実行します。gcloud projects describe PROJECT_ID --format="value(projectNumber)"
ROOT_CA_POOL_ID: ルート CA プールの ID。CERTIFICATE_LIFETIME: CA プールによって発行されるワークロード証明書の有効期間(秒単位)。例: 86400 秒(24 時間)。CERTIFICATE_LIFETIMEは 24 時間~ 30 日の範囲の値で指定する必要があります。CERTIFICATE_LIFETIMEが指定されていない場合、証明書の有効期間はデフォルトで 24 時間になります。CERTIFICATE_LIFETIMEは省略可能です。ROTATION_WINDOW_PERCENTAGE: 更新がトリガーされる証明書の存続期間の割合。ROTATION_WINDOW_PERCENTAGEの値は 50 ~ 80 の範囲で指定してください。デフォルト値は 50 です。ROTATION_WINDOW_PERCENTAGEは任意です。ALGORITHM: 秘密鍵の生成に使用される暗号化アルゴリズム。ALGORITHMの有効な値は、ECDSA_P256(デフォルト)、ECDSA_P384、RSA_2048、RSA_3072、RSA_4096です。ALGORITHMは省略可能です。
インライン信頼構成を作成する
この構成例では、ロードバランサとバックエンドの両方が同じトラスト ドメインの一部であり、同じルート証明書を共有しています。そのため、インライン信頼構成の構成は任意です。共通のルート オブ トラストは、信頼チェーンを構築し、信頼ドメイン内のワークロードの ID を検証するために使用されます。
デフォルトでは、同じ信頼ドメイン内のワークロードは、マネージド ワークロード ID を使用して相互に認証できます。異なる信頼ドメインにあるワークロードを相互に認証する場合は、Workload Identity プールで信頼関係を明示的に宣言する必要があります。これを行うには、他の信頼ドメインからの証明書を認識して受け入れるインライン信頼構成を作成します。
インライン信頼構成を作成する手順は次のとおりです。
証明書をダウンロードします。
gcloud privateca pools get-ca-certs ROOT_CA_POOL_ID \ --output-file=CERTIFICATE_PATH \ --location=REGION次のように置き換えます。
ROOT_CA_POOL_ID: ルート CA プールの IDCERTIFICATE_PATH: PEM エンコードされた証明書を出力するパスREGION: ルート CA プールのリージョン
PEM 形式の証明書を含む、インライン信頼構成を含む JSON 形式の構成ファイル(
tc.json)を作成します。ファイルは次のようになります。
{ "inlineTrustConfig": { "additionalTrustBundles": { "TRUST_DOMAIN_NAME1": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----" } ] }, "TRUST_DOMAIN_NAME2": { "trustAnchors": [ { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL3\n-----END CERTIFICATE-----" }, { "pemCertificate": "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL4\n-----END CERTIFICATE-----" } ] } } } }次のように置き換えます。
TRUST_DOMAIN_NAME: 信頼ドメインは、別の(または同じ)Workload Identity プールの信頼ドメインを含む、任意の信頼ドメイン(「example.com」など)にできます。Workload Identity プールの信頼ドメインの場合、信頼ドメイン名は次の形式で指定します。
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog
この形式では、次のように置き換えます。
WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_NUMBER: Workload Identity プールを含むプロジェクトのプロジェクト番号
CERTIFICATE_MATERIAL: 信頼ドメインで証明書を発行するために信頼されている、PEM 形式の CA 証明書。PEM 形式の証明書ファイルを 1 行の文字列にエンコードするには、次のコマンドを使用します。cat trust-anchor.pem | sed 's/^[ ]*//g' | sed -z '$ s/\n$//' | tr '\n' $ | sed 's/\$/\\n/g'
CA を Workload Identity プールにバインドする
CA 階層を作成し、CA の証明書発行構成を作成したら、CA を Workload Identity プールにバインドできます。CA を Workload Identity プールにバインドするには、CA の証明書発行の構成を使用して Workload Identity プールを更新する必要があります。その後、プールが更新されたことを確認します。
Workload Identity プールを更新する
CA を Workload Identity プールにバインドするには、CA の証明書発行の構成を使用して Workload Identity プールを更新します。その後、プールが更新されたことを確認します。
プールを更新するには、次のコマンドを実行します。
gcloud iam workload-identity-pools update WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--inline-certificate-issuance-config-file=CIC_JSON_FILE_PATH \
[--inline-trust-config-file=TC_JSON_FILE_PATH] \
--project=PROJECT_ID
次のように置き換えます。
WORKLOAD_IDENTITY_POOL_ID: Workload Identity プール ID。CIC_JSON_FILE_PATH: 前に作成したインライン証明書発行構成の JSON 形式の構成ファイル(cic.json)のパス。TC_JSON_FILE_PATH: 以前に作成したインライン信頼構成の JSON 形式の構成ファイル(tc.json)のパス。ワークロードが異なる信頼ドメイン間で認証を行う場合は、このファイルを指定する必要があります。それ以外の場合は、--inline-trust-configを省略できます。
Workload Identity プールが更新されたことを確認する
証明書発行の構成と信頼構成とともに Workload Identity プールが更新されたことを確認するには、次のコマンドを実行します。
gcloud iam workload-identity-pools describe WORKLOAD_IDENTITY_POOL_ID \
--location="global" \
--project=PROJECT_ID
次のように置き換えます。
WORKLOAD_IDENTITY_POOL_ID: Workload Identity プール ID。PROJECT_ID: プロジェクト ID
出力は次のようになります。
inlineCertificateIssuanceConfig:
caPools:
REGION: projects/PROJECT_NUMBER/locations/REGION1/caPools/ROOT_CA_POOL_ID
keyAlgorithm: ALGORITHM
lifetime: CERTIFICATE_LIFETIME
rotationWindowPercentage: ROTATION_WINDOW_PERCENTAGE
inlineTrustConfig:
additionalTrustBundles:
TRUST_DOMAIN_NAME1:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL1
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL2
-----END CERTIFICATE-----
TRUST_DOMAIN_NAME2:
trustAnchors:
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL3
-----END CERTIFICATE-----
- pemCertificate: |-
-----BEGIN CERTIFICATE-----
CERTIFICATE_MATERIAL4
-----END CERTIFICATE-----
mode: TRUST_DOMAIN
name: projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID
state: ACTIVE
この出力には次の値が含まれます。
PROJECT_NUMBER: プロジェクト番号REGION: ルート CA プールが配置されているリージョンROOT_CA_POOL_ID: ルート CA プールの IDALGORITHM: 秘密鍵の生成に使用される暗号化アルゴリズムCERTIFICATE_LIFETIME: CA プールによって発行されたワークロード証明書の有効期間(秒単位)ROTATION_WINDOW_PERCENTAGE: 更新がトリガーされる証明書の存続期間の割合。TRUST_DOMAIN_NAME: 信頼ドメインは、別の(または同じ)Workload Identity プールの信頼ドメインを含む、任意の信頼ドメイン(「example.com」など)にできます。CERTIFICATE_MATERIAL: 信頼ドメインで証明書を発行するために信頼されている PEM 形式の CA 証明書WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの ID
出力に inlineCertificateIssuanceConfig または inlineTrustConfig が存在しない場合は、課金と割り当てに正しいプロジェクトを使用するように gcloud CLI が正しく構成されていることを確認します。gcloud CLI の新しいバージョンへの更新が必要になることがあります。
CA プールの証明書のリクエストをマネージド ワークロード ID に許可する
CA を Workload Identity プールにバインドしたら、マネージド ワークロード ID に CA プールからの証明書のリクエストを許可する必要があります。
信頼ドメインに CA サービス ワークロード証明書リクエスト元ロール(
roles/privateca.workloadCertificateRequester)を付与します。このロールは、CA Service 証明書チェーンから証明書をリクエストする信頼ドメインを承認します。gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.workloadCertificateRequester \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_ID次のように置き換えます。
ROOT_CA_POOL_ID: ルート CA プールの IDREGION: ルート CA プールのリージョンPROJECT_NUMBER: プロジェクト番号PROJECT_IDからPROJECT_NUMBERを取得するには、次のコマンドを実行します。gcloud projects describe PROJECT_ID --format="value(projectNumber)"
WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_ID: プロジェクト ID
信頼ドメインに CA Service プール読み取りロール(
roles/privateca.poolReader)を付与します。このロールにより、CA の証明書チェーンからの署名付き X.509 証明書の取得が信頼ドメインに許可されます。gcloud privateca pools add-iam-policy-binding ROOT_CA_POOL_ID \ --location=REGION \ --role=roles/privateca.poolReader \ --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/WORKLOAD_IDENTITY_POOL_ID" \ --project=PROJECT_ID次のように置き換えます。
ROOT_CA_POOL_ID: ルート CA プールの IDREGION: ルート CA プールのリージョンPROJECT_NUMBER: プロジェクト番号WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_ID: プロジェクト ID
ロードバランサを作成し、マネージド ID をバックエンド サービスに割り当てる
マネージド ID を割り当てることができるのは、バックエンド サービスの作成時のみです。
このセクションの手順は、ロードバランサのバックエンド サービスにマネージド ID を割り当てる場合にのみ該当します。これは、ロードバランサのバックエンド構成の一部です。
グローバル外部アプリケーション ロードバランサ ロードバランサを設定するには、VM インスタンス グループのバックエンドを使用してグローバル外部アプリケーション ロードバランサを設定するの手順に沿って操作します。ロードバランサのバックエンド サービスを設定する段階では、次の操作も行う必要があります。
コンソール
Google Cloud コンソールで、[ロード バランシング] ページに移動します。
[バックエンドの構成] セクションで、バックエンド サービスを作成するための関連する詳細情報を追加します。
[高度な構成] セクションを開きます。
[バックエンド認証] セクションで、[マネージド ID] オプションを選択します。
マネージド ID をバックエンド サービスに割り当てるには、[マネージド ID] フィールドに、前に作成したマネージド ワークロード ID を入力します。
[作成] をクリックします。
ロードバランサを設定するで説明されている手順に沿って、ロードバランサの構成を完了します。
gcloud
マネージド ID をバックエンド サービスに割り当てるには、
gcloud beta compute backend-services createコマンドを使用するときに--identityフラグを追加します。gcloud beta compute backend-services create BACKEND_SERVICE_NAME \ --load-balancing-scheme=EXTERNAL_MANAGED \ --protocol=HTTPS \ --health-checks=HEALTH_CHECK_NAME \ --identity='//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID' \ --global次のように置き換えます。
BACKEND_SERVICE_NAME: バックエンド サービスの名前HEALTH_CHECK_NAME: ヘルスチェックの名前WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_NUMBER: プロジェクト番号NAMESPACE_ID: Namespace の IDMANAGED_IDENTITY_ID: マネージド ID の ID
自動作成されたリソース
ロードバランサのバックエンド サービスでマネージド ID を構成すると、マネージド ワークロード ID によって次のリソースが自動的に作成されます。
- バックエンド認証構成: ロードバランサのバックエンド サービスに接続されている
- Certificate Manager のマネージド ID 証明書: バックエンド認証構成に関連付けられている
- Certificate Manager の信頼構成: バックエンド認証構成に関連付けられている
以降のセクションでは、自動的に作成されたリソースが構成されているかどうかを確認するために、構成を確認する方法について説明します。
設定を確認します
構成を検証して、自動的に作成されたリソースが構成されているかどうかを確認します。
自動的に作成されたリソースには mi という接頭辞が付きます。これは、リソースがマネージド ワークロード ID によって作成されたことを示します。
バックエンド認証構成とマネージド ID の作成を確認する
バックエンド認証構成とマネージド ID の作成を確認するには、gcloud beta compute backend-services describe コマンドを使用してバックエンド サービスを記述します。
gcloud beta compute backend-services describe BACKEND_SERVICE_NAME --global
出力は次のようになります。
affinityCookieTtlSec: 0 connectionDraining: drainingTimeoutSec: 0 creationTimestamp: '2025-11-06T02:15:43.680-08:00' description: '' enableCDN: false fingerprint: lTZwas8aylg= healthChecks: - https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/healthChecks/HEALTH_CHECK_NAME id: '719352032' kind: compute#backendService loadBalancingScheme: EXTERNAL_MANAGED name: BACKEND_SERVICE_NAME port: 80 portName: PORT_NAME protocol: HTTPS selfLink: https://www.googleapis.com/compute/beta/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME sessionAffinity: NONE timeoutSec: 30 tlsSettings: authenticationConfig: //networksecurity.googleapis.com/projects/PROJECT_ID/locations/global/backendAuthenticationConfigs/mi-bac-423b651f-d549-4a9f-a4f2-g2bcaa7108bd identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
この出力には次の値が含まれます。
PROJECT_ID: プロジェクト IDHEALTH_CHECK_NAME: ヘルスチェックの名前BACKEND_SERVICE_NAME: バックエンド サービスの名前。PORT_NAME: ポート名REGION: ルート CA プールが配置されているリージョンWORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_NUMBER: プロジェクト番号NAMESPACE_ID: Namespace の IDMANAGED_IDENTITY_ID: マネージド ID の ID
バックエンド認証構成が自動的に作成され、backendService.tlsSettings.authenticationConfig フィールドに接続されます。接頭辞 mi で始まるバックエンド認証構成は、次のセクションで MI_BACKEND_AUTHENTICATION_CONFIG_ID と呼ばれます。
マネージド ワークロード ID も backendService.tlsSettings.identity フィールドに接続されます。次の形式となります。
//WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
Certificate Manager のマネージド ID 証明書と Certificate Manager の信頼構成の作成を確認する
Certificate Manager のマネージド ID 証明書と Certificate Manager の信頼構成がバックエンド認証構成リソースに接続されていることを確認するには、gcloud network-security backend-authentication-configs describe コマンドを使用します。
gcloud network-security backend-authentication-configs describe MI_BACKEND_AUTHENTICATION_CONFIG_ID \
--location=global
出力は次のようになります。
clientCertificate: projects/PROJECT_NUMBER/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d createTime: '2025-11-06T10:15:56.237734973Z' etag: xwyxl1VYVoh4QIwf3nhKhAVXgcuOqoN7xdqAiS8Esvs name: projects//locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd trustConfig: projects/PROJECT_NUMBER/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742 updateTime: '2025-11-06T10:16:01.964275141Z'
clientCertificate と trustConfig は、マネージド ワークロード ID によって自動的に作成され、バックエンド認証構成リソースに接続されます。
接頭辞 mi で始まる clientCertificate は、次のセクションで MI_CLIENT_CERTIFICATE_ID と呼ばれます。
接頭辞 mi で始まる trustConfig は、次のセクションで MI_TRUST_CONFIG_ID と呼ばれます。
Certificate Manager の証明書がマネージド ID 証明書であることを確認する
Certificate Manager のマネージド ID 証明書の詳細を表示するには、gcloud certificate-manager certificates describe コマンドを使用します。
gcloud certificate-manager certificates describe MI_CLIENT_CERTIFICATE_ID
出力は次のようになります。
createTime: '2025-11-06T10:15:46.187892797Z' expireTime: '2025-11-07T22:55:47Z' extendedKeyUsage: clientAuth: true managedIdentity: identity: //WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID state: ACTIVE name: projects/PROJECT_ID/locations/global/certificates/mi-crt-181fa461-3b53-40fa-8515-507d47337c5d pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE----- scope: CLIENT_AUTH updateTime: '2025-11-06T10:15:49.427339950Z' usedBy: - name: //networksecurity.googleapis.com/projects/PROJECT_NUMBER/locations/global/backendAuthenticationConfigs/mi-bac-477b381f-d349-4a8f-a6f2-f2bbaa7109bd
この出力には次の値が含まれます。
WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_NUMBER: プロジェクト番号NAMESPACE_ID: Namespace の IDMANAGED_IDENTITY_ID: マネージド ID の IDCERTIFICATE_MATERIAL: PEM エンコード形式の X.509-SVID
Certificate Manager マネージド ID 証明書には managedIdentity プロパティがあり、マネージド ID 証明書として識別されます。Certificate Manager のマネージド ID 証明書リソースは、X.509-SVID を PEM でエンコードされた形式で保存します。
Certificate Manager マネージド ID 証明書のスコープは CLIENT_AUTH です。これは、この証明書がバックエンド mTLS でクライアント証明書として使用されることを示します。
SPIFFE ID が X.509-SVID の SAN の一部であることを確認する
X.509-SVID には、SAN フィールドの URI としてエンコードされた SPIFFE ID が含まれています。この SPIFFE ID は、Workload Identity プールのマネージド ID に対応しています。
証明書の人間が読める形式を出力するには、次のコマンドを実行します。
openssl x509 -text -noout \ <<< "-----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL\n-----END CERTIFICATE-----"
出力は次のようになります(省略)。
Certificate:
Data:
Version: 3 (0x2)
Signature Algorithm: ecdsa-with-SHA256
Issuer: O = example.com, CN = Example CA
Validity
Not Before: Nov 6 10:15:48 2025 GMT
Not After : Nov 7 10:15:47 2025 GMT
Subject:
Subject Public Key Info:
Public Key Algorithm: id-ecPublicKey
Public-Key: (256 bit)
X509v3 extensions:
X509v3 Subject Alternative Name: critical
URI:spiffe://WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog/ns/NAMESPACE_ID/sa/MANAGED_IDENTITY_ID
この出力には次の値が含まれます。
WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_NUMBER: プロジェクト番号NAMESPACE_ID: Namespace の IDMANAGED_IDENTITY_ID: マネージド ID の ID
Certificate Manager の信頼構成に spiffeTrustStore フィールドが含まれていることを確認する
Certificate Manager の信頼構成には、spiffeTrustStores というフィールドが含まれています。spiffeTrustStores フィールドには、Workload Identity プールの信頼ドメイン(出力では で表されます)に関連付けられた信頼バンドルと、Workload Identity プールのインライン信頼構成の WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.googadditionalTrustBundles フィールドで指定された追加の信頼バンドルが含まれます。
Certificate Manager の信頼構成の詳細を表示するには、gcloud certificate-manager trust-configs describe コマンドを使用します。
gcloud certificate-manager certificates describe MI_TRUST_CONFIG_ID
MI_TRUST_CONFIG_ID は、マネージド ID によって自動的に作成された信頼構成に置き換えます。
次の出力例では、ホスト example.com は信頼が拡張される追加の信頼ドメインです。
createTime: '2025-11-06T10:15:50.048030758Z'
etag: kDoKfm5W6Il2HPvduKZWpuYpyrKrNVq4jqMEICE-6rQ
name: projects/PROJECT_ID/locations/global/trustConfigs/mi-tc-e4f05160-f20f-4109-aae3-4c1a68891742
spiffeTrustStores:
example.com:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL1\n-----END CERTIFICATE-----
WORKLOAD_IDENTITY_POOL_ID.global.PROJECT_NUMBER.workload.id.goog:
trustAnchors:
- pemCertificate: -----BEGIN CERTIFICATE-----\nCERTIFICATE_MATERIAL2\n-----END CERTIFICATE-----
updateTime: '2025-11-07T08:25:15.760754841Z'
この出力には次の値が含まれます。
PROJECT_ID: プロジェクト IDCERTIFICATE_MATERIAL: 信頼ドメインで証明書を発行するために信頼されている PEM 形式の CA 証明書WORKLOAD_IDENTITY_POOL_ID: Workload Identity プールの IDPROJECT_NUMBER: プロジェクト番号MANAGED_IDENTITY_ID: マネージド ID の ID
Certificate Manager の信頼構成の詳細については、Certificate Manager の信頼構成をご覧ください。