説明
KMSキーの不要な利用・管理権限は、そのキーに依存するデータやサービスに影響する可能性があります。実際のキーポリシー、IAM権限、KMSグラントを併せて確認してください。キーポリシーのResource: "*"は関連付けたキーを指し、既定の所有アカウントへの委任やポリシーの省略だけで公開アクセスになるわけではありません。
想定される影響
不要な署名・復号や管理操作が実際に許可されると、データの信頼性やサービスの可用性に影響する可能性があります。可能な操作はキーの用途と実際の権限によって決まります。
対処方法
- キーの利用者と管理者を分け、必要な操作と有効な条件で権限を限定してください。
- 今後の
kms:PutKeyPolicyに必要な管理経路を維持し、ロックアウト防止チェックを回避しないでください。必要な利用・管理操作が維持され、不要な要求が拒否されることを確認してください。
例
署名・検証用RSAキーの例であり、復号用のキーではありません。SigningRoleArnに実際の署名用ロールARNを指定してください。変更後の所有アカウントのステートメントはIAM経由の委任を維持するため、デプロイ・管理主体には適切なIAM権限も必要です。
変更前
yaml
Resources:
RSASigningKey:
Type: AWS::KMS::Key
Properties:
Description: RSA-3072 asymmetric CMK for signing and verification
KeySpec: RSA_3072
KeyUsage: SIGN_VERIFY
KeyPolicy:
Version: "2012-10-17"
Id: key-default-1
Statement:
- Sid: Enable IAM User Permissions
Effect: Allow
Principal:
AWS: "*"
Action: kms:*
Resource: "*"
主体とKMS操作を広く許可します。有効な制御と実際に必要な権限を併せて確認してください。
変更後
yaml
Parameters:
SigningRoleArn:
Type: String
Resources:
RSASigningKey:
Type: AWS::KMS::Key
Properties:
Description: RSA-3072 asymmetric CMK for signing and verification
KeySpec: RSA_3072
KeyUsage: SIGN_VERIFY
KeyPolicy:
Version: "2012-10-17"
Id: key-default-1
Statement:
- Sid: EnableIAMUserPermissions
Effect: Allow
Principal:
AWS: !Sub 'arn:${AWS::Partition}:iam::${AWS::AccountId}:root'
Action: kms:*
Resource: "*"
- Sid: Allow use of the key
Effect: Allow
Principal:
AWS: !Ref SigningRoleArn
Action:
- kms:Sign
- kms:Verify
- kms:DescribeKey
Resource: "*"
所有アカウントへの委任を残し、指定ロールに署名・検証・キー情報の参照を許可します。ほかのポリシーやグラントも含めて実際のアクセスを確認してください。