%20%E3%81%AB%E9%81%A9%E3%81%97%E3%81%9F%20KMS%20%E3%82%AD%E3%83%BC%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%A8%E3%81%AF%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E3%82%82%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
最近、Control Tower SNS トピックに KMS キーを手動で追加して、Control Tower を「破壊」しました。Control Tower がスタックのチェックやアップグレードを実行したときに、この方法がうまく機能しませんでした。キーを削除し、スタックの一部を操作して正常な状態にする必要がありましたが、SNS トピックが暗号化されておらず、Security Hub が不調です。
以前、SNS トピックで使用する KMS キーをすべての組織アカウント (各アカウントに 1 つずつ) にデプロイしましたが、ランディング ゾーンの作成または変更時にキーを付与すれば、Control Tower がこれを実行できることがわかりました。私の理解では、このキーは管理アカウント内の単一のキーである必要があり、少なくとも Config サービスと CloudTrail サービスを許可するポリシーが必要ですが、すべてのアカウントでも使用できます。
どなたか、それがどのように見えるかのテンプレートを教えていただければ、大変助かります。よろしくお願いします。:)
答え1
これを放っておくわけにはいかないので、テストしてみたところ、次の方法が良い解決策である可能性が高いことがわかりました。
私が学んだ重要なポイント:
- サービスには「kms:GenerateDataKey」権限のみが必要なようです。
- *ワイルドカードが必要な場合は、「StringEquals」ではなく「StringLike」条件を使用してください。
これドキュメンテーション非常に役に立ちました。「aws:SourceArn」または「aws:SourceAccount」を使用したポリシーの作成には成功しませんでしたが、「kms:EncryptionContext:context」では成功しました。
これが私のポリシーです。アカウント番号は編集されています。
{
"Version": "2012-10-17",
"Id": "SNS-KMS-Key",
"Statement": [
{
"Sid": "Key admin in mgmt account",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::112211221122:root"
},
"Action": "kms:*",
"Resource": "*"
},
{
"Sid": "AWS-services permissions in all accounts",
"Effect": "Allow",
"Principal": {
"Service": [
"config.amazonaws.com",
"cloudtrail.amazonaws.com"
]
},
"Action": [
"kms:GenerateDataKey",
"kms:Encrypt",
"kms:Decrypt",
"kms:DescribeKey",
"kms:ReEncrypt*"
],
"Resource": "*"
}
]
}
誰かの役に立つことを願っています。最後のステートメントを制限するために条件を使用できる、あるいは使用すべきであると思われることに注意してください。私自身はうまくいきませんでした。
答え2
上記の回答と、次の AWS サービスロールがキーを使用できるようにすることで、これを機能させることができました。
"arn:aws:iam::112211221122:role/service-role/AWSControlTowerConfigAggregatorRoleForOrganizations",
"arn:aws:iam::112211221122:role/service-role/AWSControlTowerStackSetRole",
"arn:aws:iam::112211221122:role/service-role/AWSControlTowerAdmin",
"arn:aws:iam::112211221122:role/service-role/AWSControlTowerCloudTrailRole"
これらすべてが必要かどうかはわかりませんが、推測しただけです。