このトピックでは、Cloud KMS リソースへのアクセスを管理する方法について説明します。
概要
鍵やキーリングなどの Cloud KMS リソースへのアクセスを管理するには、Identity and Access Management(IAM)ロールを付与します。鍵のローテーションやデータの暗号化など、特定の暗号オペレーションの実行権限を付与または制限できます。次のとおり、IAM のロールを付与できます。
- 鍵に直接
- その鍵リング内のすべての鍵によって継承される鍵リング
- プロジェクトのすべての鍵によって継承される Google Cloud プロジェクト
- フォルダ内のすべてのプロジェクトのすべての鍵によって継承される Google Cloud フォルダ
- 組織内のフォルダ内のすべての鍵によって継承される Google Cloud 組織
Cloud KMS のアクションおよび IAM のロールと権限の一覧については、権限とロールをご覧ください。Cloud KMS リソースとリソース間の関係については、Cloud KMS リソースをご覧ください。
始める前に
これらのタスクを完了するには、Google Cloud プロジェクトの Cloud KMS リソースを管理する権限が必要です。Cloud KMS 管理者のロール(roles/cloudkms.admin
)には、必要な権限が含まれています。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the required API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the required API.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- キーリングなどのリソースを作成します。
- 作成されたリソース(キーリング、鍵、鍵バージョンなど)のリソース IDを取得します。
Cloud KMS リソースへのアクセス権を付与または取り消すことができるのは、オーナー(roles/owner
)または Cloud KMS 管理者(roles/cloudkms.admin
)のロールを持つ IAM プリンシパルのみです。
リソースに対するロールの付与
次の例では、Cloud KMS 鍵へのアクセスを提供するロールを付与します。
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms keys add-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role
key を鍵の名前に置き換えます。key-ring は、鍵が配置されている鍵リングの名前に置き換えます。location を鍵リングの Cloud KMS の場所に置き換えます。principal-type と principal-email は、プリンシパルの種類とプリンシパルのメールアドレスに置き換えます。role は、追加するロールの名前に置き換えます。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。
Go
このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。
PHP
このコードを実行するには、まず Google Cloud での PHP の使用について学び、Cloud KMS PHP SDK をインストールします。
Python
このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。
リソースへのアクセスの取り消し
Cloud KMS 鍵に対するプリンシパルのアクセス権を削除するには、以下の操作を行います。
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms keys remove-iam-policy-binding key \ --keyring key-ring \ --location location \ --member principal-type:principal-email \ --role roles/role-name
key を鍵の名前に置き換えます。key-ring は、鍵が配置されている鍵リングの名前に置き換えます。location を鍵リングの Cloud KMS の場所に置き換えます。principal-type と principal-email は、プリンシパルの種類とプリンシパルのメールアドレスに置き換えます。role-name は、削除するロールの名前に置き換えます。
すべてのフラグと有効な値については、--help
フラグを指定してコマンドを実行してください。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。
Go
このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。
PHP
このコードを実行するには、まず Google Cloud での PHP の使用について学び、Cloud KMS PHP SDK をインストールします。
Python
このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。
リソースに対する権限を表示する
Cloud KMS 鍵の IAM ポリシーを表示するには:
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms keys get-iam-policy key \ --keyring key-ring \ --location location
key を鍵の名前に置き換えます。key-ring は、鍵が配置されている鍵リングの名前に置き換えます。location を鍵リングの Cloud KMS の場所に置き換えます。
すべてのフラグと有効な値については、--help
フラグを指定してコマンドを実行してください。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。
Go
このコードを実行するには、まず Go 開発環境を設定し、Cloud KMS Go SDK をインストールします。
Java
このコードを実行するには、まず Java 開発環境を設定し、Cloud KMS Java SDK をインストールします。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Cloud KMS Node.js SDK をインストールします。
PHP
このコードを実行するには、まず Google Cloud での PHP の使用について学び、Cloud KMS PHP SDK をインストールします。
Python
このコードを実行するには、まず Python 開発環境を設定し、Cloud KMS Python SDK をインストールします。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Cloud KMS Ruby SDK をインストールします。
最小権限の原則
最小権限の原則を実践するには、最も狭い権限セットをリソース階層内の最下位オブジェクトに付与します。
データを暗号化する権限をプリンシパルに付与するには(復号は不可)、鍵に対する
roles/cloudkms.cryptoKeyEncrypter
ロールを付与します。データの暗号化と復号の権限をプリンシパルに付与するには、鍵に対する
roles/cloudkms.cryptoKeyEncrypterDecrypter
ロールを付与します。データを検証する権限をプリンシパルに付与するには(署名は不可)、鍵に対する
roles/cloudkms.publicKeyViewer
ロールを付与します。データの署名と検証の権限をプリンシパルに付与するには、鍵に対する
roles/cloudkms.signerVerifier
ロールを付与します。鍵を管理する権限をプリンシパルに付与するには、鍵に対する
roles/cloudkms.admin
ロールを付与します。
他にもいろいろな使い方があります。権限とロールの完全なリストについては、Cloud KMS の権限とロールをご覧ください。
階層と継承
ポリシー バインディングは、プロジェクト、鍵リング、鍵、インポート ジョブ、その他の Cloud KMS リソースで指定できます。
鍵は鍵リングに属し、鍵リングはプロジェクトに属するため、その階層の上位レベルで特定のロールまたは権限を持つプリンシパルは、子リソースに対して同じ権限を継承します。つまり、あるプロジェクトに対して owner
ロールを持つユーザーは、そのプロジェクトのすべての鍵リングおよび鍵に対しても owner
になります。同様に、あるユーザーに鍵リングの cloudkms.admin
ロールが付与されている場合、その鍵リングに含まれるすべての鍵についても関連する権限が付与されます。
その逆は当てはまりません。つまり、鍵に対する権限はあっても、親キーリングに対する権限がないユーザーには、そのキーリングに対する権限はありません。
次のステップ
- Cloud KMS の権限とロールについて学習する。
- キーを作成する。
- データを暗号化、復号する。