説明
AWS マネージドキー aws/secretsmanager も、KMS を使用してシークレット値を暗号化します。このキーを使うことだけで、暗号化が弱い、またはシークレットが公開されているとはいえません。
ただし、AWS マネージドキーのキーポリシーは直接変更できません。組織がキーポリシーやライフサイクルを直接管理する必要がある環境では、カスタマー管理 KMS キーが必要になる場合があります。
想定される影響
組織のキー管理基準を満たせない場合があります。カスタマー管理キーを使用しても、過剰なシークレット読み取り権限は別途制限する必要があります。また、キー権限を誤って変更すると、アプリケーションがシークレットを取得できなくなる可能性があります。
対処方法
- 組織の要件に応じてカスタマー管理の対称暗号化 KMS キーを選び、
kms_key_idに ARN またはエイリアスを指定してください。 - シークレットポリシー、IAM 権限、キーポリシーを併せて確認し、必要なプリンシパルだけに読み取りとキー使用の権限を付与してください。
- キー変更後に、必要なシークレットバージョンを実際に読み取れることを確認してください。既存バージョンに必要な以前のキーへのアクセス権限を早まって削除しないでください。
例
以下はシークレットリソースのキー選択だけを示しています。シークレット値は別途管理します。
AWS マネージドキー
hcl
resource "aws_secretsmanager_secret" "example" {
name = "test-cloudrail-1"
kms_key_id = "alias/aws/secretsmanager"
}
AWS が管理するキーポリシーでシークレット値を暗号化します。
カスタマー管理キー
hcl
resource "aws_secretsmanager_secret" "example" {
name = "test-cloudrail-1"
kms_key_id = "alias/MyAlias"
}
alias/MyAlias を同じリージョンの実際のカスタマー管理キーのエイリアスに置き換え、呼び出し元のキー権限を確認してください。キーの種類を変えるだけでは、シークレットへのアクセス権限は制限されません。