控制對標籤的存取 - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

控制對標籤的存取

若要透過 AWS KMS 主控台或使用 API 新增、檢視和刪除標籤,則主體需要標記許可。您可以在金鑰政策中提供這些許可。您也可以在 IAM 政策 (包括 VPC 端點政策) 中提供,但僅當金鑰政策允許時。AWSKeyManagementServicePowerUser受管理的政策允許主體在帳戶可存取的所有 KMS 金鑰上標記、取消標記和列出標記。

您也可以使用標籤的 AWS 全域條件索引鍵來限制許可。在中AWS KMS,這些條件可以控制對標籤作業的存取,例如TagResourceUntagResource

注意

授予主體管理標籤和別名的許可時,請務必謹慎。變更標記或別名可允許或拒絕客戶受管金鑰的許可。如需詳細資訊,請參閱 AWS KMS 的 ABAC使用標籤來控制對 KMS 金鑰的存取

如需政策和詳細資訊,請參閱《IAM 使用者指南》中的根據標籤索引鍵控制存取

建立和管理標籤的許可如下所示。

公里:TagResource

允許主體新增或編輯標籤。若要在建立 KMS 金鑰時新增標籤,主體必須在 IAM 政策中具有不限於特定 KMS 金鑰的許可。

公里:ListResourceTags

允許主體檢視 KMS 金鑰上的標籤。

公里:UntagResource

允許主體從 KMS 金鑰刪除標籤。

標記政策中的許可

您可以在金鑰政策或 IAM 政策中提供標記許可。例如,以下範例金鑰政策會給予精選使用者標記 KMS 金鑰的許可。它為所有可以擔任範例管理員或開發人員角色的使用者提供檢視標籤的許可。

{ "Version": "2012-10-17", "Id": "example-key-policy", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": {"AWS": "arn:aws:iam::111122223333:root"}, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow all tagging permissions", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:user/LeadAdmin", "arn:aws:iam::111122223333:user/SupportLead" ]}, "Action": [ "kms:TagResource", "kms:ListResourceTags", "kms:UntagResource" ], "Resource": "*" }, { "Sid": "Allow roles to view tags", "Effect": "Allow", "Principal": {"AWS": [ "arn:aws:iam::111122223333:role/Administrator", "arn:aws:iam::111122223333:role/Developer" ]}, "Action": "kms:ListResourceTags", "Resource": "*" } ] }

若要授予主體在多個 KMS 金鑰上的標記許可,您可以使用 IAM 政策。若要讓此政策生效,每個 KMS 金鑰的金鑰政策必須允許帳戶使用 IAM 政策來控制對 KMS 金鑰的存取。

例如,以下 IAM 政策允許主體建立 KMS 金鑰。它也允許其在指定帳戶中的所有 KMS 金鑰上建立和管理標籤。這種組合可讓主體使用CreateKey作業的標籤參數,在建立 KMS 金鑰時將標籤新增至 KMS 金鑰。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKeys", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource", "kms:ListResourceTags" ], "Resource": "arn:aws:kms:*:111122223333:key/*" } ] }

限制標籤許可

您可以使用政策條件來限制標記許可。下列政策條件可套用至 kms:TagResourcekms:UntagResource 許可。例如,您可以使用 aws:RequestTag/tag-key 條件,允許主體僅新增特定標籤,或防止主體新增具有特定標籤索引鍵的標籤。或者,您可以使用 kms:KeyOrigin 條件,以防止主體使用匯入金鑰材料標記或取消標記 KMS 金鑰。

最佳實務的做法是,當您使用標籤來控制 KMS 金鑰的存取時,請使用 aws:RequestTag/tag-keyaws:TagKeys 條件鍵來確定允許哪些標籤 (或標籤索引鍵)。

例如,下列 IAM 政策與前一個類似。不過,此政策允許主體建立標籤 (TagResource) 並僅為具有 Project 標籤索引鍵的標籤刪除標籤 UntagResource

由於TagResourceUntagResource請求可以包含多個標籤,因此您必須使用 aws: TagKeys 條件指定ForAllValuesForAnyValue set 運算子。ForAnyValue 運算子會要求請求中的至少一個標籤索引鍵與政策中的標籤索引鍵相符。ForAllValues 運算子會要求請求中的所有標籤索引鍵與政策中的其中一個標籤索引鍵相符。true如果請求中沒有標籤,ForAllValues操作員也會返回 TagResource ,但沒有指定標籤時 UntagResource失敗。如需集合運算子的詳細資訊,請參閱《IAM 使用者指南》中的使用多個索引鍵和值

{ "Version": "2012-10-17", "Statement": [ { "Sid": "IAMPolicyCreateKey", "Effect": "Allow", "Action": "kms:CreateKey", "Resource": "*" }, { "Sid": "IAMPolicyViewAllTags", "Effect": "Allow", "Action": "kms:ListResourceTags", "Resource": "arn:aws:kms:*:111122223333:key/*" }, { "Sid": "IAMPolicyManageTags", "Effect": "Allow", "Action": [ "kms:TagResource", "kms:UntagResource" ], "Resource": "arn:aws:kms:*:111122223333:key/*", "Condition": { "ForAllValues:StringEquals": {"aws:TagKeys": "Project"} } } ] }