このページでは、顧客管理の暗号鍵(CMEK)を使用してリポジトリに保存されているコンテンツを暗号化する方法について説明します。
概要
Google Cloud では、デフォルトで、Google が管理する暗号鍵を使用して、自動的に保存されているデータを暗号化します。データを保護する鍵について、特定のコンプライアンス要件や規制要件がある場合は、CMEK 鍵を使用して暗号化されたリポジトリを作成できます。リポジトリに関するメタデータ(リポジトリ名など)は、Google デフォルトの暗号化方式で暗号化されます。
CMEK を有効にすると、リポジトリ内にあるデータは、ユーザーが Cloud Key Management Service で管理する鍵を使用して暗号化されます。Identity and Access Management を使用して CMEK 鍵へのアクセスを制御できます。CMEK 鍵を一時的に無効にしたり、完全に破棄したりすると、その鍵で暗号化されたデータにはアクセスできなくなります。
CMEK を使用すると、鍵のライフサイクルと管理に関してより多くの側面を制御できますが、Cloud KMS サービスの追加コストが発生します。CMEK で暗号化されたリポジトリでは、アップロードまたはダウンロードごとに Cloud Key Management Service の暗号リクエストの割り当ても消費されます。
Cloud KMS は、Artifact Registry と同じ Google Cloud プロジェクトで実行することも、複数のプロジェクトで使用する鍵を一元的に管理する別のプロジェクトで実行することもできます。
リポジトリの作成時に Cloud KMS 鍵を割り当てます。
既存のリポジトリの暗号化メカニズムを変更することはできません。CMEK で暗号化されたリポジトリがある場合、暗号化メカニズムを Google のデフォルトの暗号化に変更したり、別の Cloud KMS 鍵を割り当てることはできません。
CMEK の一般的な用途や使用する理由などの詳細については、Cloud KMS のドキュメントをご覧ください。
鍵の作成と権限の付与
リポジトリの鍵を作成し、その鍵を使用してリポジトリ データを暗号化および復号する権限を付与するには、以下の手順を行います。
鍵を管理する Google Cloud プロジェクトで次の操作を行います。
- Cloud KMS API を有効化します。
- 鍵リングと鍵を作成します。鍵のロケーションは、暗号化するリポジトリのリポジトリ ロケーションと一致する必要があります。
Artifact Registry プロジェクトにリポジトリが作成されていない場合、Artifact Registry サービス アカウントはまだ存在していません。サービス アカウントを作成するには、次のコマンドを実行します。
gcloud beta services identity create --service=artifactregistry.googleapis.com --project=PROJECT
PROJECT を Artifact Registry を実行しているプロジェクトの ID に置き換えます。
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
次のコマンドを実行します。
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 のドキュメントをご覧ください。
これで、リポジトリを作成し、暗号化に使用する鍵を指定できるようになりました。
アクセス権の削除
CMEK で暗号化されたリポジトリへのアクセス権を削除するには、いくつかの方法があります。
- Cloud Console または
gcloud
ツールを使用して、Artifact Registry サービス アカウントから Cloud KMS CryptoKey の暗号化 / 復号のロールを取り消す。 - CMEK 鍵を一時的に無効にする。
- CMEK 鍵を完全に破棄する。
鍵を無効にするか破棄する前に、Artifact Registry サービス アカウントから権限を取り消すことをおすすめします。権限の変更は数秒で整合が行われるので、鍵の無効化または破棄の影響を確認できます。
リポジトリの暗号鍵を無効化または破棄すると、アーティファクト データの表示や取得ができなくなります。リポジトリに保存されているすべてのアーティファクト データにアクセスできなくなります。これには、ビルドされたアーティファクト、任意のバイナリデータ(blob)、Docker マニフェストや npm packument ファイルなどのマニフェストが含まれます。Artifact Registry 読み取りのロールまたは閲覧者のロールを持つユーザーは、アーティファクト名、バージョン、タグなどのアーティファクト メタデータを引き続き表示できます。
Artifact Registry 管理者ロールまたはオーナー ロールを持つユーザーはリポジトリを削除できます。
次のステップ
- CMEK で暗号化されたリポジトリを作成する
- CMEK の詳細を見る。
- 詳しくは、Google のデフォルトの暗号化についての記事をご覧ください。