顧客管理の暗号鍵の有効化

このページでは、リポジトリに保存されているコンテンツを顧客管理の暗号鍵(CMEK)で暗号化する方法について説明します。

概要

Google Cloud では、デフォルトで、Google が管理する暗号鍵を使用して、自動的に保存されているデータを暗号化します。データを保護する鍵について、特定のコンプライアンス要件または規制要件がある場合は、CMEK 鍵で暗号化されたリポジトリを作成できます。リポジトリ名などのリポジトリに関するメタデータは、Google のデフォルトの暗号化で暗号化されます。

CMEK を有効にすると、Cloud Key Management Service で管理する鍵を使用してリポジトリ内のデータが暗号化されます。CMEK 鍵へのアクセスは、Identity and Access Management を使用して制御できます。CMEK 鍵を一時的に無効化または破棄すると、その鍵で暗号化されたデータにはアクセスできません。

CMEK を使用すると、鍵のライフサイクルと管理をより幅広く制御できますが、Cloud KMS サービスの追加費用も発生します。使用する鍵のタイプによっては、CMEK で暗号化された Artifact Registry リポジトリや他の Google Cloud リソースも Cloud KMS の割り当てを消費する可能性があります。アプリケーションとワークフローのアプリケーション レイヤ Secret 暗号化を有効にするために十分な割り当てがあることを確認してください。

Cloud KMS は、Artifact Registry と同じ Google Cloud プロジェクトで実行することも、複数のプロジェクトで使用する鍵を一元的に管理する別のプロジェクトで実行することもできます。 職掌分散をサポートし、鍵へのアクセスを詳細に制御するには、他の Google Cloud リソースを含む別のプロジェクト内で鍵を作成し、管理することをおすすめします。

CMEK 鍵は、リポジトリを作成するときに割り当てます。既存のリポジトリの暗号化メカニズムは変更できません。CMEK で暗号化されたリポジトリがある場合、暗号化メカニズムを Google のデフォルトの暗号化に変更したり、暗号化用の別の Cloud KMS 鍵を割り当てたりすることはできません。

CMEK の一般的な用途や使用する理由などの詳細については、Cloud KMS のドキュメントをご覧ください。

鍵の作成と権限の付与

次の手順では、リポジトリの鍵を作成し、その鍵を使用してリポジトリ データを暗号化および復号する権限を付与する方法について説明します。Cloud KMS で直接作成された鍵または Cloud External Key Manager で利用できる外部管理鍵を使用できます。

  1. 鍵を管理する Google Cloud プロジェクトで、次の操作を行います。

    1. Cloud KMS API を有効化します。

    2. 次のいずれかのオプションを使用してキーリングと鍵を作成します。

      Cloud KMS 鍵のロケーションは、暗号化するリポジトリのリポジトリ ロケーションと一致する必要があります。

  2. Artifact Registry プロジェクトでリポジトリをまだ作成していない場合、Artifact Registry サービス アカウントはまだ存在しません。サービス アカウントを作成するには、次のコマンドを実行します。

    gcloud beta services identity create --service=artifactregistry.googleapis.com --project=PROJECT
    

    PROJECT は、Artifact Registry が実行されているプロジェクトの ID に置き換えます。

  3. Artifact Registry サービス アカウントに暗号鍵の暗号化/復号の IAM ロールroles/cloudkms.cryptoKeyEncrypterDecrypter)を付与します。作成した鍵に対してこの権限を付与します。

    コンソール

    1. [暗号鍵] ページに移動します。

      [Cloud KMS] ページを開きます。

    2. 作成した鍵を選択します。

    3. Artifact Registry サービス アカウントにアクセス権を付与します。

      1. [情報パネルを表示] を選択します。
      2. [メンバーを追加] をクリックします。
      3. Artifact Registry サービス アカウントを追加します。サービス アカウントはservice-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com であり、ここでPROJECT-NUMBERは、Artifact Registry が実行されている Google Cloud プロジェクトのプロジェクト番号です。
      4. [ロールを選択] で、[Cloud KMS] > [Cloud KMS 暗号鍵の暗号化 / 復号] を選択します。
      5. [保存] をクリックします。
    4. 前の手順を繰り返して、リポジトリを作成するアカウントへのアクセス権を付与します。

    5. [暗号鍵] ページに戻り、鍵をもう一度選択します。

    6. [情報パネルを表示] を選択します。[ロール / メンバー] 列にロールが表示されます。

    gcloud

    1. 次のコマンドを実行して、Artifact Registry サービス アカウントへのアクセスを許可します。

      gcloud kms keys add-iam-policy-binding [--project=PROJECT] \
             KEY --location LOCATION --keyring=KEYRING \
             --member serviceAccount:service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com \
             --role roles/cloudkms.cryptoKeyEncrypterDecrypter
      

      Where

      • PROJECT は鍵を持つプロジェクトの ID です。
      • KEY は鍵名です。
      • LOCATION は、鍵のロケーションです。鍵のロケーションは、暗号化するリポジトリのリポジトリ ロケーションと一致している必要があります。
      • KEYRING は鍵リング名です。
      • PROJECT-NUMBER は、Artifact Registry を実行している Google Cloud プロジェクトのプロジェクト番号です。
    2. 前の手順を繰り返して、リポジトリを作成するアカウントへのアクセス権を付与します。

    このコマンドの詳細については、gcloud kms keys add-iam-policy-binding のドキュメントをご覧ください。

これで、リポジトリを作成し、暗号化に使用する鍵を指定できるようになりました。

アクセス権の削除

CMEK で暗号化されたリポジトリへのアクセス権を削除するには、いくつかの方法があります。

鍵を無効化または破棄する前に、Artifact Registry サービス アカウントから権限を取り消すことをおすすめします。権限の変更は数秒で整合性が確保されるため、鍵の無効化または破棄の影響を確認できます。

リポジトリの暗号鍵を無効化または破棄すると、アーティファクト データの表示や取得ができなくなります。リポジトリに保存されているすべてのアーティファクト データにアクセスできなくなります。これには、ビルドされたアーティファクト、任意のバイナリデータ(blob)、Docker マニフェストや npm packument ファイルなどのマニフェストが含まれます。Artifact Registry 読み取りのロールまたは閲覧者のロールを持つユーザーは、アーティファクト名、バージョン、タグなどのアーティファクト メタデータを引き続き表示できます。

Artifact Registry 管理者ロールまたはオーナー ロールを持つユーザーはリポジトリを削除できます。

CMEK の組織のポリシー

Artifact Registry は、CMEK 保護を必要とする可能性がある組織のポリシーの制約をサポートしています。

ポリシーにより、CMEK 保護に使用できる Cloud KMS CryptoKeys を制限できます。

  • Artifact Registry API が制約 constraints/gcp.restrictNonCmekServices のサービスの Deny ポリシーリストにある場合、Artifact Registry は CMEK で保護されていない新しいリポジトリの作成を拒否します。

  • constraints/gcp.restrictCmekCryptoKeyProjects が構成されると、Artifact Registry は許可されたプロジェクト、フォルダ、または組織の CryptoKey によって保護された CMEK 保護リポジトリを作成します。

Pub/Sub は同じ制約をサポートしています。Google Cloud プロジェクトで Artifact Registry API を有効にすると、Artifact Registry は Google が管理する暗号鍵を使用して、トピック ID が gcr である Pub/Sub トピックを自動的に作成しようとします。Pub/Sub API が制約 constraints/gcp.restrictNonCmekServicesDeny ポリシーリストにある場合、Pub/Sub はトピックの作成を拒否します。CMEK 暗号化を使用して gcr トピックを作成するには、Pub/Sub のトピックを暗号化する手順をご覧ください。

組織のポリシーの構成の詳細については、CMEK 組織ポリシーをご覧ください。

次のステップ