Console を使用した認証者の作成

このページでは、Google Cloud Console を使用して Binary Authorization の認証者を作成する方法について説明します。ここで説明する手順は、コマンドラインgcloud コマンドまたは REST API でも実行できます。このタスクは、Binary Authorization の設定の一部です。

概要

認証者は、Binary Authorization が証明書の検証で使用する GCP リソースです。証明書の詳細については、Binary Authorization の概要をご覧ください。

認証者を作成するには、次のことを行います。

  • 認証者の ID 確認に使用する PKIX 鍵ペアを設定します。Cloud Key Management Service(Cloud KMS)で生成された非対称鍵ペアは PKIX と互換性があります。
  • Binary Authorization で認証者を作成し、作成した公開鍵を関連付けます。

単一プロジェクト設定では、Binary Authorization ポリシーを構成したプロジェクトに認証者を作成します。マルチプロジェクト設定では、多くの場合、デプロイ担当者プロジェクトにポリシーを構成し、それとは別の認証者プロジェクトに認証者を保存します。

暗号鍵を設定する

Binary Authorization では、PKIX 鍵を使用して認証者の ID を安全に確認します。これにより、確認済みの当事者のみがコンテナ イメージを承認できるようになります。

このガイドでは、PKIX 鍵ペアの生成に推奨の楕円曲線デジタル署名アルゴリズム(ECDSA)を使用していますが、RSA 鍵または PGP 鍵で署名することもできます。署名アルゴリズムの詳細については、鍵の目的とアルゴリズムをご覧ください。

PKIX 鍵ペアを作成する

Binary Authorization では、非対称 PKIX 鍵ペアを使用して認証者の ID を確認できます。鍵ペアは、認証者が証明書のデジタル署名に使用する秘密鍵と、Binary Authorization サービスによって保存され、認証者に追加される公開鍵で構成されます。

PKIX 鍵ペアは、署名者が証明書のデジタル署名に使用する公開鍵と、認証者に追加する公開鍵で構成されます。デプロイ時に、Binary Authorization はこの公開鍵を使用して秘密鍵で署名された証明書を検証します。

Cloud KMS で生成され、保存されている非対称鍵ペアは PKIX 形式に準拠しています。Binary Authorization で使用する Cloud KMS 鍵を作成する方法については、非対称鍵の作成をご覧ください。鍵を作成する場合は、鍵の目的として非対称署名を必ず選択してください。

新しいローカル非対称 PKIX 鍵ペアを生成してファイルに保存するには:

  1. 鍵を生成します。

    PRIVATE_KEY_FILE="/tmp/ec_private.pem"
    openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}
    
  2. このファイルには公開鍵と秘密鍵が含まれているため、認証者に追加するには公開鍵を別のファイルに抽出する必要があります。

    PUBLIC_KEY_FILE="/tmp/ec_public.pem"
    openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
    

認証者を作成する

次のステップでは、認証者を作成し、Container Analysis メモと公開鍵を関連付けます。

Binary Authorization は、Container Analysis を使用して、認証プロセスで使用される信頼できるメタデータを保存します。作成する認証者ごとに、1 つの Container Analysis メモを作成する必要があります。それぞれの証明書が、このメモのオカレンスとして保存されます。

認証者を作成するには:

  1. attestor プロジェクトの Binary Authorization ページに移動します。

    Binary Authorization ページに移動

  2. [認証者] タブで [作成] をクリックします。

    デフォルト ルールを示すポリシータブのスクリーンショット

  3. [Create New Attestor] をクリックします。

    [Create New Attestor] ページのスクリーンショット

  4. [認証者の名前] にフィールドに認証者の名前を入力します(例: build-secureprod-qa)。

  5. [Container Analysis メモを自動生成する] を選択して、新しいメモを作成します。

    以前に作成した既存のメモを使用する場合は、このオプションの選択を解除し、[Container Analysis メモ ID] フィールドに完全修飾名を入力します。名前の形式は projects/PROJECT_ID/notes/NOTE_ID です。

  6. 認証者に公開鍵を追加します。

    PKIX(ローカルキー)

    1. [Add a PKIX Key] をクリックします。
    2. [ファイルからインポート] をクリックします。
    3. 前に保存した PKIX 鍵ファイルに移動して選択します。注: 公開鍵を PEM 形式で貼り付けることもできます。

    PKIX(Cloud KMS)

    1. [Add a PKIX Key] をクリックします。
    2. [Cloud KMS からインポート] をクリックします。
    3. 表示されたウィンドウに鍵バージョンのリソース ID を入力します。リソース ID の形式は次のとおりです。

      projects/KMS_KEY_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION
      

      ここで

      • KMS_KEY_PROJECT_ID は、鍵が格納されているプロジェクトの ID です。
      • KMS_KEY_LOCATION は鍵の場所です(global がデフォルトです)。
      • KMS_KEYRING_NAME はキーリングの名前です。
      • KMS_KEY_NAME は鍵の名前です。
      • KMS_KEY_VERSION は鍵バージョンです。
    4. [送信] をクリックします。

  7. [作成] をクリックします。

認証者が作成されたことを確認する

認証者が作成されたことを確認するには:

  1. Google Cloud Console の [Binary Authorization] ページに戻ります。

  2. [認証者] タブを開きます。

作成した認証者が表示されている [認証者] タブのスクリーンショット

マルチプロジェクト設定

マルチプロジェクト設定を使用している場合は、デプロイ担当者と認証者のプロジェクトを別々に作成しています。この場合、作成された証明書をデプロイ担当者がデプロイ時に使用できるように、認証者のリソースに追加の権限を設定する必要があります。

デプロイ担当者プロジェクトの IAM ロール バインディングを追加する

デプロイ担当者プロジェクトのサービス アカウントの IAM ロール バインディングを認証者に追加する必要があります。これは、Binary Authorization がポリシーを評価する際に使用され、アカウントに認証者へのアクセス権があるかどうかが判定されます。

このステップは Google Cloud Console ではサポートされていないため、コマンドラインから IAM ロール バインディングを追加する必要があります。

IAM ロール バインディングを追加するには:

  1. プロジェクト名と番号を格納する環境変数を設定します。

    DEPLOYER_PROJECT_ID=PROJECT_ID
    DEPLOYER_PROJECT_NUMBER="$(
        gcloud projects describe "${DEPLOYER_PROJECT_ID}" \
          --format="value(projectNumber)"
    )"
    
  2. プロジェクトのサービス アカウント名を格納する環境変数を設定します。

    DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
    
  3. IAM ロール バインディングを追加します。

    gcloud --project ATTESTOR_PROJECT_ID \
        beta container binauthz attestors add-iam-policy-binding \
        "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \
        --member="serviceAccount:${DEPLOYER_SERVICE_ACCOUNT}" \
        --role=roles/binaryauthorization.attestorsVerifier
    

Binary Authorization を設定したユーザーの IAM ロール バインディングを追加する

追加する認証者を表示する権限が必要になるため、認証者を追加するユーザーの IAM ロール バインディングをデプロイ担当者プロジェクトの Binary Authorization ポリシーに追加する必要があります。認証者の追加後、必要であれば、この権限を安全に取り消すことができます。

このステップは Google Cloud Console でサポートされていないため、コマンドラインから IAM ロール バインディングを追加する必要があります。

IAM ロール バインディングを追加するには:

gcloud --project ATTESTOR_PROJECT_ID \
    beta container binauthz attestors add-iam-policy-binding \
    "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \
    --member=ADMIN_EMAIL_ACCOUNT \
    --role=roles/binaryauthorization.attestorsViewer

認証者の追加後に IAM ロール バインディングを削除するには:

gcloud --project ATTESTOR_PROJECT_ID \
    beta container binauthz attestors remove-iam-policy-binding \
    "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \
    --member=ADMIN_EMAIL_ACCOUNT \
    --role=roles/binaryauthorization.attestorsViewer

次のステップ