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

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

概要

Google Cloud では、デフォルトで、Google が所有し 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 サービス アカウントに CryptoKey Encrypter/Decrypter IAM ロールroles/cloudkms.cryptoKeyEncrypterDecrypter)を付与します。作成した鍵にこの権限を付与します。

    コンソール

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

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

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

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

      1. [情報パネルを表示] を選択します。
      2. [メンバーを追加] をクリックします。
      3. Artifact Registry サービス アカウントを追加します。サービス アカウントは service-PROJECT-NUMBER@gcp-sa-artifactregistryiam.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
      

      ここで

      • 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 CryptoKey を制限できます。

  • 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 の組織のポリシーをご覧ください。

次のステップ