本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
IAM 政策的最佳實務
保護對 的存取對於所有 AWS 資源的安全 AWS KMS keys 至關重要。 KMS金鑰用於保護 中許多最敏感的資源 AWS 帳戶。花時間設計控制金鑰存取的金鑰政策、IAM政策、授予和VPC端點政策KMS。
在控制KMS金鑰存取IAM的政策陳述式中,使用最低權限原則。僅提供IAM委託人必須使用或管理的KMS金鑰所需的許可。
下列最佳實務適用於控制存取 AWS KMS 金鑰和別名IAM的政策。如需一般IAM政策最佳實務指引,請參閱《 IAM 使用者指南》中的安全最佳實務IAM。
- 使用金鑰政策
-
盡可能在影響一個KMS金鑰的金鑰政策中提供許可,而不是在可套用到許多KMS金鑰IAM的政策中提供許可,包括其他金鑰的政策 AWS 帳戶。對於 kms:PutKeyPolicy 和 kms:ScheduleKeyDeletion 等敏感許可,這一點尤其重要,但對於決定如何保護資料的密碼編譯操作也如此。
- 限制 CreateKey 許可
-
僅將建立金鑰 (kms:CreateKey) 的許可授予需要金鑰的主體。建立KMS金鑰的委託人也會設定其金鑰政策,因此他們可以授予自己和其他人許可,以使用和管理他們建立的KMS金鑰。當您允許此許可時,請考慮使用政策條件對其進行限制。例如,您可以使用 kms:KeySpec 條件來限制對稱加密KMS金鑰的許可。
- 在IAM政策中指定KMS金鑰
-
最佳實務是,指定許可套用至政策陳述式
Resource
元素的每個KMS金鑰的金鑰ARN。此做法會將許可限制為主體所需的KMS金鑰。例如,此Resource
元素只會列出委託人需要使用的KMS金鑰。"Resource": [ "arn:aws:kms:us-west-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab", "arn:aws:kms:us-west-2:111122223333:key/0987dcba-09fe-87dc-65ba-ab0987654321" ]
當指定KMS金鑰不切實際時,請使用限制對信任和 AWS 帳戶 區域中KMS金鑰存取
Resource
的值,例如arn:aws:kms:
。或限制對信任之 所有 區域 (*) 中KMS金鑰的存取 AWS 帳戶,例如region
:account
:key/*arn:aws:kms:*:
。account
:key/*您不能使用金鑰 ID、別名名稱或別名ARN來代表IAM政策
Resource
欄位中的KMS金鑰。如果您指定別名 ARN,政策會套用至別名,而不是 KMS金鑰。如需別名IAM政策的詳細資訊,請參閱 控制對別名的存取 - 避免IAM政策中的「資源」:「*」
-
明智地使用萬用字元 (*)。在金鑰政策中,
Resource
元素中的萬用字元代表KMS附加金鑰政策的金鑰。但是在IAM政策中,Resource
元素 ("Resource": "*"
) 中只有萬用字元會將許可套用至 AWS 帳戶 委託人帳戶擁有使用許可的所有KMS金鑰。這可能包括KMS其他 中的金鑰 AWS 帳戶,以及委託人帳戶中的KMS金鑰。例如,若要在另一個 中使用KMS金鑰 AWS 帳戶,委託人需要外部帳戶中KMS金鑰的金鑰政策許可,以及其自身帳戶中IAM的政策許可。假設任意帳戶已授予您的 AWS 帳戶 kms:Decrypt KMS金鑰許可。若是如此,您帳戶中對所有KMS金鑰 (
"Resource": "*"
) 提供角色kms:Decrypt
許可IAM的政策將滿足IAM部分要求。因此,可以擔任該角色的主體現在可以使用不受信任帳戶中的 KMS金鑰來解密加密文字。其操作的項目會出現在兩個帳戶的 CloudTrail 日誌中。特別是,避免在允許下列API操作的政策陳述式
"Resource": "*"
中使用 。這些操作可以在其他 KMS 金鑰上呼叫 AWS 帳戶。 - 何時使用 "Resource": "*"
-
在 IAM政策中,只有在需要的許可中使用
Resource
元素中的萬用字元。只有下列許可需要"Resource": "*"
元素。注意
別名操作的許可 (kms:CreateAlias、 kms:UpdateAlias、 kms:DeleteAlias) 必須連接到別名和 KMS 金鑰。您可以在 IAM政策
"Resource": "*"
中使用 來表示別名和KMS金鑰,或在Resource
元素中指定別名和KMS金鑰。如需範例,請參閱 控制對別名的存取。
本主題中的範例提供設計KMS金鑰IAM政策的詳細資訊和指導。如需所有 AWS 資源的IAM最佳實務,請參閱《 IAM 使用者指南》中的安全最佳實務IAM。