このページでは、リポジトリに保存されているコンテンツを、顧客管理の暗号鍵(CMEK)で暗号化する方法について説明します。
概要
デフォルトでは、Artifact Registry はお客様のコンテンツを保存時に 暗号化します。Artifact Registry では、ユーザーが追加で 操作を行わなくても、暗号化が行われます。このオプションは、Google のデフォルトの暗号化と呼ばれます。
暗号鍵を管理する場合は、Cloud KMS の顧客管理の暗号鍵 (CMEK)を、Cloud KMS を含む CMEK 統合サービスで使用できます。Cloud KMS 鍵を使用すると、保護 レベル、ロケーション、ローテーション スケジュール、使用とアクセスの権限、暗号境界を制御できます。 Cloud KMS を使用すると、監査ログを表示し、鍵のライフサイクルを管理することもできます。データを保護する対称 鍵暗号鍵(KEK)は Google が所有して管理するのではなく、ユーザーが Cloud KMS でこれらの鍵の制御と管理を行います。
CMEK を使用してリソースを設定した後は、Artifact Registry リソースへのアクセスは、Google のデフォルトの暗号化を使用する場合と同様です。暗号化 オプションの詳細については、顧客管理の暗号鍵(CMEK)をご覧ください。
Cloud KMS Autokey による CMEK
CMEK を手動で作成して Artifact Registry リソースを保護することも、Cloud KMS Autokey を使用することもできます。Autokey を使用すると、Artifact Registry でのリソース作成をサポートするために、キーリングと鍵がオンデマンドで生成されます。 暗号化と復号のオペレーションに鍵を使用するサービスエージェントがまだ存在しない場合、そのエージェントが作成され、必要な Identity and Access Management(IAM)ロールが付与されます。詳細については、Autokey の概要をご覧ください。
CMEK を手動で設定するには、 鍵の作成と権限の付与をご覧ください。
Autokey を使用して CMEK を設定するには、このページの Autokey を使用して鍵を作成するをご覧ください。
CMEK 鍵は、リポジトリを作成するときに割り当てます。既存のリポジトリの暗号化メカニズムは変更できません。CMEK で暗号化された リポジトリがある場合、暗号化メカニズムを Google 所有の Google 管理の 暗号鍵を使用するように変更したり、暗号化用の別の Cloud KMS 鍵を 割り当てたりすることはできません。
CMEK 全般について詳しくは、CMEK の概要をご覧ください。
鍵の作成と権限の付与
次の手順では、リポジトリの鍵を作成し、その鍵を使用してリポジトリ データを暗号化および復号する権限を付与する方法について説明します。Cloud KMS で直接作成された鍵または Cloud External Key Manager で利用できる外部管理鍵を使用できます。
鍵を管理する Google Cloud プロジェクトで、次の操作を行います。
次のいずれかのオプションを使用してキーリングと鍵を作成します。
Cloud KMS の鍵のロケーションは、暗号化するリポジトリの リポジトリ ロケーションと一致する必要があります。
Artifact Registry プロジェクトでリポジトリを作成していない場合、Artifact Registry サービス アカウントは存在しません。サービス アカウントを作成するには、次のコマンドを実行します。
gcloud beta services identity create --service=artifactregistry.googleapis.com --project=PROJECTPROJECT は、 Artifact Registry が実行されているプロジェクトの ID に置き換えます。
Artifact Registry サービス アカウントに CryptoKey Encrypter/Decrypter IAM ロール (
roles/cloudkms.cryptoKeyEncrypterDecrypter)を付与します。作成した鍵にこの権限を付与します。コンソール
[暗号鍵] ページに移動します。
作成した鍵を選択します。
Artifact Registry サービス アカウントにアクセス権を付与します。
- 情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。
- [アクセス権を付与] をクリックします。
- [新しいプリンシパル] フィールドに、Artifact Registry サービス アカウントを追加します。サービス アカウントは service-PROJECT-NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com です。ここで、PROJECT-NUMBER は、Artifact Registry が実行されている Google Cloud プロジェクトの プロジェクト番号です。
- [**ロールを選択**] で、[**Cloud KMS**] > [**Cloud KMS 暗号鍵の暗号化/復号**] を選択します。
- [保存] をクリックします。
前の手順を繰り返して、リポジトリを作成するアカウントにアクセス権を付与します。
[**鍵の管理**] ページに戻り、鍵をもう一度選択します。
情報パネルが表示されていない場合は、[情報パネルを表示] をクリックします。[ロール/プリンシパル] セクションにロールが表示されます。
gcloud
次のコマンドを実行して、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 プロジェクトのプロジェクト番号です。
前の手順を繰り返して、リポジトリを作成するアカウントにアクセス権を付与します。
このコマンドの詳細については、 gcloud kms keys add-iam-policy-binding のドキュメントをご覧ください。
次に、リポジトリを作成し 暗号化に使用する鍵を指定します。
Autokey を使用して鍵を作成する
Autokey は、リポジトリと同じ場所に新しい鍵を作成します。
必要なロール
Autokey を使用して保護されたリポジトリを作成するために必要な権限を取得するには、フォルダまたはプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud KMS Autokey ユーザー (
roles/cloudkms.autokeyUser) - Artifact Registry 管理者 (
roles/artifactregistry.admin)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタム ロールや他の事前定義 ロールから取得することもできます。
キーの作成
Autokey で鍵を作成する前に、 Cloud KMS Autokey を有効にする必要があります。
[リポジトリ] ページを Google Cloud コンソールで開きます。
[リポジトリを作成] をクリックします。
[暗号化] セクションで、[Cloud KMS with Autokey automated management] を選択します。
[作成] をクリックします。
アクセス権の削除
CMEK で暗号化されたリポジトリへのアクセス権を削除する方法はいくつかあります。
- 次のいずれかの方法を使用して、Artifact Registry サービス アカウント から Cloud KMS CryptoKey の暗号化/復号のロール を取り消します:
- 一時的に顧客管理の暗号鍵を無効にします。
- CMEK 鍵を完全に破棄する。
鍵を無効にするか破棄する前に、Artifact Registry サービス アカウントから権限を取り消すことをおすすめします。権限の変更の整合性は数秒以内に確保されるため、鍵の無効化や破棄の影響を確認できます。
リポジトリの暗号鍵を無効化または破棄すると、アーティファクト データの表示や取得ができなくなります。リポジトリに保存されているすべてのアーティファクト データにアクセスできなくなります。これには、ビルドされたアーティファクト、任意のバイナリデータ(blob)、Docker マニフェストや npm packument ファイルなどのマニフェストが含まれます。Artifact Registry 読み取りのロール(roles/artifactregistry.reader)または閲覧者のロール(roles/artifactregistry.viewer)を持つユーザーは、アーティファクト名、バージョン、タグなどのアーティファクト メタデータを引き続き表示できます。
Artifact Registry 管理者ロール(roles/artifactregistry.admin)またはオーナー ロール(roles/owner)を持つユーザーはリポジトリを削除できます。
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 は前述の制約をサポートしています。プロジェクトで
Artifact Registry API を有効にすると、Artifact Registry
は Google Cloud Google Cloud 搭載の Google 管理の 暗号鍵を使用して、トピック ID が
gcrである Pub/Sub トピックを自動的に作成しようとします。ただし、Pub/Sub API が制約 constraints/gcp.restrictNonCmekServices
の Deny ポリシーリストにある場合、Pub/Sub はトピックを作成しません。このシナリオでは、CMEK 暗号化を使用して
gcr トピックを作成する必要があります。詳細については、トピックを暗号化するための Pub/Sub
の手順をご覧ください。
組織のポリシーの構成について詳しくは、CMEK の組織のポリシーをご覧ください。