
我最近透過手動將 KMS 密鑰新增至 Control Tower SNS 主題來「破壞」了 Control Tower。當控制塔對堆疊進行檢查或升級時,這種方法效果不佳。我必須刪除金鑰並推動一些堆疊才能使其處於健康狀態,但現在 SNS 主題未加密,Security Hub 感到不滿。
以前,我部署了一個KMS 金鑰,用於所有組織帳戶的SNS 主題(每個帳戶一個),但我現在了解到,如果我給Control Tower 建立或修改登陸區域的金鑰,它就可以為我執行此操作。據我了解,此金鑰必須是管理帳戶中的單一金鑰,並且具有至少允許 Config 和 CloudTrail 服務的策略,但也可在我的所有帳戶中使用。
如果有人能提供我一個模板,說明它的外觀,我將非常感激。謝謝,麻煩您了。 :)
答案1
我不能放過這個,所以我去測試並發現以下可能是一個很好的解決方案。
我學到的要點:
- 看起來服務只需要「kms:GenerateDataKey」權限。
- 如果您想要 *-通配符,請使用“StringLike”條件,而不是“StringEquals”
這文件非常有用。我未能成功制定使用「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"
我不知道這些是否需要,我只是猜測。