このトピックでは、鍵を自動または手動でローテーションする方法について説明します。鍵のローテーションの詳細については、鍵のローテーションをご覧ください。
必要なロール
鍵をローテーションするために必要な権限を取得するには、鍵に対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud KMS 管理者 (
roles/cloudkms.admin) -
データを再暗号化する: Cloud KMS CryptoKey の暗号化/復号 (
roles/cloudkms.cryptoKeyEncrypterDecrypter)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、鍵のローテーションに必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
鍵をローテーションするには、次の権限が必要です。
-
メインの鍵バージョンを変更する:
cloudkms.cryptoKeys.update -
自動ローテーションを変更または無効にする:
cloudkms.cryptoKeys.update -
新しい鍵バージョンを作成する:
cloudkms.cryptoKeyVersions.create -
古い鍵バージョンを無効にする:
cloudkms.cryptoKeyVersions.update -
データを再暗号化する:
-
cloudkms.cryptoKeyVersions.useToDecrypt -
cloudkms.cryptoKeyVersions.useToEncrypt
-
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
これらの権限のすべてを含むカスタムロールを持つ 1 人のユーザーが、鍵をローテーションし、独自にデータを再暗号化できます。Cloud KMS 管理者のロールを持つユーザーと Cloud KMS 暗号鍵の暗号化/復号のロールを持つユーザーは、協力して鍵のローテーションとデータの再暗号化を行うことができます。ロールを割り当てるときは、最小権限の原則に従います。詳細については、権限とロールをご覧ください。
鍵をローテーションする場合、以前の鍵バージョンで暗号化されたデータは自動的に再暗号化されることはありません。詳しくは、復号と再暗号化をご覧ください。鍵をローテーションしても、既存の鍵バージョンが自動的に無効になったり、破棄されたりすることはありません。不要になった鍵バージョンを破棄すると、費用を削減できます。
自動ローテーションを構成する
カスタム ローテーション スケジュールで新しい鍵を作成する
新しい鍵の作成時に自動ローテーションを構成するには:
コンソール
Google Cloud コンソールを使用して鍵を作成すると、Cloud KMS は自動的にローテーション期間と次のローテーション時間を設定します。デフォルト値を使用するか、別の値を指定できます。
異なるローテーション期間と開始時間を指定する場合は、鍵の作成時に次の操作を行ってから、[作成] ボタンをクリックします。
[鍵のローテーション期間] で、オプションを選択します。
[開始日] で、最初の自動ローテーションを行う日付を選択します。[開始日] をデフォルト値のままにして、鍵を作成してから 1 回の鍵のローテーション期間が経過した後に最初の自動ローテーションを開始できます。
gcloud
コマンドラインで Cloud KMS を使用するには、まず Google Cloud CLI の最新バージョンをインストールまたはアップグレードします。
gcloud kms keys create KEY_NAME \
--keyring KEY_RING \
--location LOCATION \
--purpose "encryption" \
--rotation-period ROTATION_PERIOD \
--next-rotation-time NEXT_ROTATION_TIME
以下を置き換えます。
KEY_NAME: 鍵の名前KEY_RING: 鍵を含むキーリングの名前。LOCATION: キーリングの Cloud KMS のロケーションROTATION_PERIOD: 鍵をローテーションする間隔。たとえば、30dは 30 日ごとに鍵をローテーションします。ローテーション期間は 1 日~100 年にする必要があります。詳細については、CryptoKey.rotationPeriod をご覧ください。NEXT_ROTATION_TIME: 最初のローテーションが完了する時点のタイムスタンプ(例:2023-01-01T01:02:03)。--next-rotation-timeを省略すると、最初のローテーションをコマンドの実行時から 1 回のローテーション期間にスケジュール設定できます。詳細については、CryptoKey.nextRotationTimeをご覧ください。
すべてのフラグと有効な値については、--help フラグを指定してコマンドを実行してください。
C#
このコードを実行するには、まず C# 開発環境を設定し、Cloud KMS C# SDK をインストールします。