本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
ABAC 適用於 AWS KMS
屬性型存取控制 (ABAC) 是一種授權策略,它根據 屬性定義許可。 AWS KMS 支援ABAC可讓您根據與金鑰相關聯的標籤和別名來控制對客戶受管KMS金鑰的存取。在 ABAC中啟用的標籤和別名條件金鑰 AWS KMS 提供強大且彈性的方式,以授權主體使用KMS金鑰,而無需編輯政策或管理授予。但是,您應該謹慎使用這些功能,避免委託人意外被允許或拒絕存取。
如果您使用 ABAC,請注意,管理標籤和別名的許可現在是存取控制許可。在部署取決於標籤或別名的政策之前,請確定您知道所有KMS金鑰上的現有標籤和別名。新增、刪除和更新別名,以及標記和取消標記金鑰時,請採取合理的預防措施。只將管理標籤和別名的許可授予需要的委託人,並限制他們可以管理的標籤和別名。
備註
將 ABAC 用於 時 AWS KMS,請謹慎授予主體管理標籤和別名的許可。變更標籤或別名可能會允許或拒絕金鑰的許可KMS。沒有變更金鑰政策或建立授予許可的金鑰管理員,如果他們有管理標籤或別名的許可,則可以控制對KMS金鑰的存取。
標籤和別名變更最多可能需要五分鐘才能影響KMS金鑰授權。在影響授權之前,API操作中可能會看到最近的變更。
若要根據KMS金鑰別名控制對金鑰的存取,您必須使用條件金鑰。您不能使用別名來代表政策陳述式 Resource
元素中的KMS索引鍵。當別名出現在 Resource
元素中時,政策陳述式會套用至別名,而不是相關聯的KMS金鑰。
進一步了解
-
如需 AWS KMS 支援的詳細資訊ABAC,包括範例,請參閱 使用別名來控制對KMS金鑰的存取和 使用標籤控制對KMS金鑰的存取。
-
如需使用標籤控制資源存取 AWS 的一般資訊,請參閱 使用者指南 中的什麼ABAC適用於 AWS? 和使用資源標籤控制 AWS 資源存取。 IAM
ABAC 的條件索引鍵 AWS KMS
若要根據KMS金鑰的標籤和別名授權存取金鑰,請在金鑰政策中使用下列條件金鑰IAM。
ABAC 條件索引鍵 | 描述 | Policy type (政策類型) | AWS KMS 操作 |
---|---|---|---|
aws:ResourceTag | KMS 索引鍵上的標籤 (索引鍵和值) 符合政策中的標籤 (索引鍵和值) 或標籤模式 | IAM 僅限政策 | KMS 金鑰資源操作 2 |
aws:RequestTag/tag-key | 請求中的標籤 (鍵和值) 與政策中的標籤 (鍵和值) 或標籤模式相符 | 金鑰政策和IAM政策1 | TagResource, UntagResource |
aws:TagKeys | 請求中的標籤索引鍵與政策中的標籤索引鍵相符 | 金鑰政策和IAM政策1 | TagResource, UntagResource |
公里:ResourceAliases | 與KMS金鑰相關聯的別名符合政策中的別名或別名模式 | IAM 僅限政策 | KMS 金鑰資源操作 2 |
公里:RequestAlias | 代表請求中KMS索引鍵的別名符合政策中的別名或別名模式。 | 金鑰政策和IAM政策1 | 密碼編譯操作、DescribeKey、 GetPublicKey |
1可用於金鑰政策的任何條件金鑰也可以用於IAM政策,但前提是金鑰政策允許 。
2KMS金鑰資源操作是授權給特定KMS金鑰的操作。若要識別KMS金鑰資源操作,請在AWS KMS 許可表 中,尋找操作Resources
資料欄中的KMS金鑰值。
例如,您可以使用這些條件索引鍵來建立下列政策。
-
具有 IAM的政策
kms:ResourceAliases
,允許 使用具有特定別名或別名模式的KMS金鑰。這與依賴標籤的政策略有不同:雖然您可以在政策中使用別名模式,但在 AWS 帳戶 和 區域中,每個別名都必須是唯一的。這可讓您將政策套用至一組選取的KMS金鑰,而無需列出政策陳述式中KMS金鑰ARNs的金鑰。若要從集合中新增或移除KMS金鑰,請變更KMS金鑰的別名。 -
金鑰政策搭配
kms:RequestAlias
,允許主體在Encrypt
操作中使用KMS金鑰,但僅限於Encrypt
請求使用該別名來識別KMS金鑰時。 -
具有 IAM的政策
aws:ResourceTag/tag-key
會拒絕具有特定標籤KMS金鑰和標籤值的金鑰使用許可。這可讓您將政策套用至一組選取的KMS金鑰,而不會列出政策陳述式中KMS金鑰ARNs的金鑰。若要從集合中新增或移除KMS金鑰,請標記或取消標記KMS金鑰。 -
使用 IAM的政策
aws:RequestTag/tag-key
,允許主體僅刪除"Purpose"="Test"
KMS金鑰標籤。 -
具有 IAM的政策
aws:TagKeys
拒絕使用標籤KMS金鑰標記或取消標記Restricted
金鑰的許可。
ABAC 讓存取管理具有彈性和可擴展性。例如,您可以使用 aws:ResourceTag/tag-key
條件金鑰來建立IAM政策,允許主體僅在KMS金鑰具有Purpose=Test
標籤時,才將KMS金鑰用於指定的操作。此政策適用於 的所有區域中的所有KMS金鑰 AWS 帳戶。
當連接至使用者或角色時,下列IAM政策允許主體使用所有現有的KMS金鑰搭配Purpose=Test
標籤進行指定的操作。若要提供對新金鑰或現有KMS金鑰的存取權,您不需要變更政策。只要將Purpose=Test
標籤連接至KMS金鑰即可。同樣地,若要從具有Purpose=Test
標籤的KMS金鑰中移除此存取權,請編輯或刪除標籤。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AliasBasedIAMPolicy", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:Encrypt", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "StringEquals": { "aws:ResourceTag/Purpose": "Test" } } } ] }
但是,如果您使用此功能,則請謹慎管理標籤和別名。新增、變更或刪除標籤或別名可能會無意中允許或拒絕存取KMS金鑰。沒有變更金鑰政策或建立授予許可的金鑰管理員,如果他們擁有管理標籤和別名的許可,則可以控制對KMS金鑰的存取。為了減輕這種風險,請考慮限制管理標籤的許可和別名。例如,您可能只允許選取的委託人管理 Purpose=Test
標籤。如需詳細資訊,請參閱 使用別名來控制對KMS金鑰的存取 和 使用標籤控制對KMS金鑰的存取。
標籤或別名?
AWS KMS 支援 ABAC 標籤和別名。這兩種選項都提供靈活、可擴展的存取控制策略,但彼此略有不同。
您可以根據您的特定 AWS 使用模式決定使用標籤或使用別名。例如,如果您已將標記許可指定給大多數管理員,則根據別名來控制授權策略可能會比較容易。或者,如果您接近每個KMS索引鍵 別名的配額,您可能偏好根據標籤的授權策略。
以下是一般利益的優勢。
標籤型存取控制的優勢
-
不同類型的 AWS 資源的相同授權機制。
您可以使用相同的標籤或標籤金鑰來控制對多種資源類型的存取,例如 Amazon Relational Database Service (Amazon RDS) 叢集、Amazon Elastic Block Store (Amazon EBS) 磁碟區和KMS金鑰。此功能可啟用數種不同的授權模式,這些模式比傳統的角色型存取控制更靈活。
-
授權存取一組KMS金鑰。
您可以使用標籤來管理對相同 AWS 帳戶 和 區域中KMS金鑰群組的存取。將相同的標籤或標籤索引鍵指派給您選擇的索引KMS鍵。然後建立以標籤或標籤金鑰為基礎的簡單 easy-to-maintain政策陳述式。若要從授權群組新增或移除KMS金鑰,請新增或移除標籤;您不需要編輯政策。
別名型存取控制的優勢
-
根據別名授權存取密碼編譯操作。
屬性的大多數請求型政策條件,包括 aws:RequestTag/tag-key,只會影響新增、編輯或刪除屬性的操作。但 kms:RequestAlias條件索引鍵會根據用於識別請求中KMS索引鍵的別名來控制密碼編譯操作的存取。例如,您可以授予主體許可,以在
Encrypt
操作中使用KMS金鑰,但僅限KeyId
參數的值為 時alias/restricted-key-1
。若要滿足此條件,需要下列所有項目:-
KMS 金鑰必須與該別名相關聯。
-
請求必須使用別名來識別KMS金鑰。
-
委託人必須具有許可,才能使用受
kms:RequestAlias
條件限制的KMS金鑰。
如果您的應用程式經常使用別名名稱或別名來參考KMS金鑰ARNs,這特別有用。
-
-
提供非常有限的許可。
別名在 AWS 帳戶 和 區域中必須是唯一的。因此,根據別名授予主體對KMS金鑰的存取權可能比根據標籤授予他們存取權更嚴格。與別名不同,標籤可以指派給相同帳戶和區域中的多個KMS金鑰。如果您選擇,您可以使用別名模式,例如
alias/test*
,讓主體存取相同帳戶和區域中的一組KMS金鑰。不過,允許或拒絕存取特定別名可對KMS金鑰進行非常嚴格的控制。