Secrets Manager シークレットの暗号化キー設定の確認

Secrets Manager の既定の暗号化を確認し、必要に応じてカスタマー管理 KMS キーを明示してください。

説明

Secrets Manager は KMS を使用してシークレット値を暗号化します。新しいシークレットで kms_key_id を省略すると AWS マネージドキー aws/secretsmanager が使われるため、省略は平文保存を意味しません。

キーポリシーやライフサイクルを直接管理する必要がある環境では、カスタマー管理キーを明示すると組織の基準を一貫して適用できます。シークレットの用途と組織のポリシーに応じて、必要なキー管理の水準を決めてください。

想定される影響

既定のキーだけを使用する構成では、カスタマー管理キーを要求するポリシーを満たせない場合があります。キーの種類にかかわらず、過剰なシークレット読み取り権限があると、シークレット値が漏えいする可能性があります。

対処方法

  • カスタマー管理キーが必要なシークレットでは、kms_key_id に対称暗号化 KMS キーの ARN またはエイリアスを指定してください。
  • キーポリシーとシークレットの読み取り権限を併せて確認し、組織のキー選択基準をテンプレートにも反映してください。
  • 既存シークレットのキーを変更した後は、必要なバージョンを読み取れることを確認し、以前のキーに依存するバージョンへのアクセスを維持してください。

例

既定キーの使用

hcl
resource "aws_secretsmanager_secret" "example" {
  name = "example"
}

新しいシークレットは AWS マネージドキーを使用します。このリソース宣言は、シークレット値自体を設定しません。

キーの指定

hcl
resource "aws_secretsmanager_secret" "example" {
  name       = "example"
  kms_key_id = "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
}

例の ARN を実際のカスタマー管理キーの ARN に置き換え、キー権限を準備してください。キーを明示しても、シークレットのアクセス制限を代替するものではありません。

参考資料