Amazon-Web-Services
適用於 AWS 登陸區(控制塔)的良好 KMS 密鑰策略看起來如何?
我最近通過手動將 KMS 密鑰添加到控制塔 SNS 主題來“破壞”控制塔。當控制塔對堆棧進行檢查或升級時,這並不能很好地工作。我不得不移除密鑰並輕推一些堆棧以使其處於健康狀態,但現在 SNS 主題未加密,Security Hub 不滿意。
以前我為所有組織帳戶(每個帳戶一個)部署了一個用於 SNS 主題的 KMS 密鑰,但我現在明白,如果我給它一個用於創建或修改登陸區的密鑰,Control Tower 可以為我執行此操作。據我了解,此密鑰必須是管理賬戶中的單個密鑰,並且具有至少允許 Config 和 CloudTrail 服務的策略,但也可用於我的所有賬戶。
如果有人可以請為我提供一個外觀模板,我將不勝感激。謝謝,麻煩您了。:)
我不能放手,所以我去測試並發現以下可能是一個很好的解決方案。
我學到的關鍵點:
- 看起來服務只需要“kms:GenerateDataKey”權限。
- 如果需要 *-wildcard,請使用“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": "*" } ] }
我希望有人覺得這很有用。請注意,我懷疑您可以並且也許應該使用條件來限制最後一條語句。沒有讓我自己工作。