Amazon-Web-Services

適用於 AWS 登陸區(控制塔)的良好 KMS 密鑰策略看起來如何?

  • February 9, 2022

我最近通過手動將 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": "*"
       }
   ]
}

我希望有人覺得這很有用。請注意,我懷疑您可以並且也許應該使用條件來限制最後一條語句。沒有讓我自己工作。

引用自:https://serverfault.com/questions/1084652