説明
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 に置き換え、キー権限を準備してください。キーを明示しても、シークレットのアクセス制限を代替するものではありません。