鍵のローテーション

Cloud KMS でのローテーション

Cloud KMS では、鍵のローテーションは、鍵の新しい鍵バージョンを生成し、そのバージョンをメイン バージョンとしてマークする処理になります。

新しい鍵バージョンを作成すると新しい暗号鍵のマテリアルが生成され、その鍵バージョンをメインとしてマークすると、新しいデータの暗号化に使用されるようになります。どの時点においても、それぞれの鍵について、デフォルトで Cloud KMS がデータの暗号化にメインとして使用する鍵バージョンが存在することになります。

鍵をローテーションしても、以前の鍵バージョンが無効になったり破棄されたりすることはありません。以前の鍵バージョンはメインではなくなりますが、引き続きデータの復号に使用できます。

鍵をローテーションさせる理由

鍵をローテーションさせると、Payment Card Industry Data Security Standard(PCI DSS)要件などの標準化されたセキュリティ プラクティスへの準拠が容易になります。セキュリティを考慮し、以下のような理由から鍵を定期的にローテーションさせることをおすすめします。

  • 特定の鍵バージョンの暗号解読に使用される暗号化されたメッセージの数が抑えられます。同様に、特定の鍵バージョンの暗号解読に使用される暗号テキストのバイト数も抑えられます。鍵の推奨有効期間はアルゴリズムによって異なり、生成されたメッセージ数や暗号化された合計バイト数によって決定されます。たとえば、Galois / Counter Mode(GCM)での対称鍵の推奨有効期間は、https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38d.pdf に記載されているように、暗号化されたメッセージの数によって決まります。

  • より強力なアルゴリズムで鍵をローテーションさせることで、必要な事態に備えることができます。鍵をローテーションしていないシステムでは、特定の鍵に対する依存が大きくなり、インシデント発生後に鍵のローテーションを開始することは非常に困難です。

    同様に、鍵が漏洩した場合にも備えることができます。インシデントからの復元中に初めて鍵のローテーションを試すことはおすすめできません。

  • 鍵バージョンの不正使用に備えて、暗号化されたテキストの量を抑えることができます。

  • 鍵バージョンの不正使用や不正が疑われる使用を防ぐことができます。

鍵のローテーションの頻度

暗号鍵のローテーションは次の 2 つの方法で行われます。

  • 定期ローテーション: 使用する暗号鍵を定期的にローテーションさせ、単一の鍵で保護されるデータの量を制限します。定期ローテーションは社内コンプライアンスのために必要になる場合があります。
  • 不定期ローテーション: 疑わしいインシデントの後、緊急の追加措置として特別に行われるローテーション。以前のバージョンの鍵で暗号化されたデータの再暗号化が必要になる場合もあります。

たとえば 90 日ごとのように定期ローテーション スケジュールを設定すると、複雑な設定を行わずにセキュリティを向上させることができます。定期ローテーションでは、単一の鍵で暗号化されるデータの量が制限され、不定期ローテーションが必要になった場合の鍵のロックインが回避されます。また、古いバージョンのデータへのアクセスを制限するために鍵バージョンの無効化が使用できるようになります。

より厳格かつ複雑な実装では、古いデータを再暗号化して一定期間後に鍵を無効にする無効化スケジュールを設定することもできます(たとえば、最大 5 年分のデータのために 20 個の鍵バージョンを有効にするなど)。これを安全かつ正確に実装することは困難です。

不定期ローテーションのみに頼るのではなく、必要に応じて定期ローテーション スケジュールと合わせて不定期ローテーションを使用することをおすすめします。

自動ローテーション

ローテーション スケジュールを設定すると、Cloud KMS は自動的に鍵のローテーションを行います。鍵のローテーション スケジュールは、gcloud コマンドライン ツールまたは Google Cloud Platform Console を使用して設定できます。

ローテーション スケジュールは、ローテーション期間と次のローテーション時間によって定義されます。ローテーション期間は、新しい鍵バージョンが自動的に生成される時間の間隔で、1 日以上である必要があります。次のローテーション時間は、次にスケジュールされるローテーションの日付で、これは将来の日付である必要があります。自動ローテーションは次のローテーション時間に開始され、それ以降はローテーション期間ごとに行われます。

次のローテーション時間のみが指定されている場合(ローテーション期間は指定されていない)、鍵はその日付に 1 回ローテーションされるようにスケジュールされ、その時点でそのフィールドはクリアされます。次のローテーション時間を指定せずにローテーション期間のみを指定すると、エラーになります。

CreateCryptoKeyVersion および UpdateCryptoKeyVersion メソッドを介して手動で行われる鍵のローテーションは、鍵のローテーション スケジュールに影響しません。

gcloud コマンドライン ツールを使用して自動ローテーションを有効にする場合は、ローテーション期間に任意の期間を指定できます。GCP Console で自動ローテーションを有効にする場合は、ローテーション期間に一般的なオプション(30 日など)が表示されますが、独自の日数に設定することもできます。

手動ローテーション

手動ローテーションは、不定期な鍵のローテーションだけでなく、Cloud KMS の外部で管理される定期ローテーションにも使用できます。鍵は、gcloud コマンドライン ツールまたは CGP Console を使用して手動でローテーションさせることができます。

ローテーションに関する考慮事項

  • 上記の鍵のローテーション コマンドを使用した場合、鍵のローテーションによって、すでに暗号化されているデータが新たに生成された鍵バージョンで再暗号化されることはありません。 鍵の不正使用が疑われる場合は、その鍵で保護されているデータを再暗号化し、以前の鍵バージョンを無効にするか、破棄をスケジュールする必要があります。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud KMS ドキュメント