在建立期間授予標籤資源的許可 - Amazon Elastic Compute Cloud

在建立期間授予標籤資源的許可

有些資源建立 Amazon EC2 API 動作可讓您在建立資源時指定標籤。您可以使用資源標籤來實作以屬性為基礎的控制 (ABAC)。如需更多詳細資訊,請參閱 標記您的 資源使用資源標籤控制對 EC2 資源的存取

使用者若要在建立時標記資源,他們必須具備建立資源動作 (如 ec2:RunInstancesec2:CreateVolume) 的使用許可。若標籤於資源建立動作指定,Amazon 會針對 ec2:CreateTags 動作執行其他授權,以確認使用者具備建立標籤的許可。因此,使用者必須同時具備使用 ec2:CreateTags 動作的明確許可。

ec2:CreateTags 動作的 IAM 政策定義中,搭配 ec2:CreateAction 條件金鑰使用 Condition 元素,將標記許可給與建立資源的動作。

下列範例示範一個政策,其允許使用者啟動執行個體,並在啟動期間將標籤套用至執行個體與磁碟區。使用者沒有標記現有資源的權限 (他們不能直接呼叫 ec2:CreateTags 動作)。

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "RunInstances" } } } ] }

同樣的,下列政策允許使用者建立磁碟區,並在磁碟區建立期間將標籤套用至該磁碟區。使用者沒有標記現有資源的權限 (他們不能直接呼叫 ec2:CreateTags 動作)。

{ "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateVolume" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:region:account:*/*", "Condition": { "StringEquals": { "ec2:CreateAction" : "CreateVolume" } } } ] }

只有在資源建立動作中套用了標籤時,才評估 ec2:CreateTags 動作。因此,在沒有標記條件的情況下,若請求中未指定標籤,則具備資源建立許可的使用者不需要使用 ec2:CreateTags 動作的許可。然而,若該使用者試圖建立具有標籤的資源卻未具備使用 ec2:CreateTags 動作的許可,則該請求會失敗。

如果在啟動範本中提供標籤,也會評估 ec2:CreateTags 動作。如需政策範例,請參閱 啟動範本中的標籤

控制對特定標籤的存取

您可以在 IAM 政策的 Condition 元素中使用其他條件,來控制可套用至資源的標籤金鑰索和值。

下列條件金鑰機可與前一節中的範例搭配使用:

  • aws:RequestTag:表示請求中必須存在特定標籤金鑰或標籤金鑰與值。請求內亦可指定其他標籤。

    • 搭配 StringEquals 條件運算子使用,以強制結合特定標籤金鑰與值,例如強制執行標籤 cost-center=cc123

      "StringEquals": { "aws:RequestTag/cost-center": "cc123" }
    • 搭配 StringLike 條件運算子使用,以在請求中強制執行特定標籤金鑰,例如強制執行標籤金鑰 purpose

      "StringLike": { "aws:RequestTag/purpose": "*" }
  • aws:TagKeys:強制執行請求中使用的標籤金鑰。

    • 搭配 ForAllValues 修飾詞使用,若請求內提供特定標籤金鑰,將強制加以執行 (若請求內指定標籤,則僅允許特定標籤金鑰,不允許其他標籤)。例如,允許標籤金鑰 environmentcost-center

      "ForAllValues:StringEquals": { "aws:TagKeys": ["environment","cost-center"] }
    • 搭配 ForAnyValue 修飾詞使用,以強制要求請求內至少具有一個指定的標籤金鑰。例如,請求內必須出現至少下列標籤金鑰 environmentwebserver 之一:

      "ForAnyValue:StringEquals": { "aws:TagKeys": ["environment","webserver"] }

這些條件鍵可套用於支援標記的資源建立動作,以及 ec2:CreateTagsec2:DeleteTags 動作。若要了解 Amazon EC2 API 動作是否支援標記,請參閱 Amazon EC2 的動作、資源和條件金鑰

若要強制使用者在建立資源時指定標籤,您必須在資源建立動作內,搭配 aws:RequestTag 修飾詞使用 aws:TagKeys 條件金鑰或 ForAnyValue 條件金鑰。若使用者未針對資源建立動作指定標籤,則不會評估 ec2:CreateTags 動作。

以條件而言,條件金鑰不區分大小寫,而條件值會區分大小寫。因此,欲強制標籤鍵區分大小寫,請使用 aws:TagKeys 條件索引鍵,其中標籤鍵指定為條件值。

如需 IAM 政策的範例,請參閱使用 AWS CLI 或 AWS 開發套件的政策範例。如需多值條件的詳細資訊,請參閱IAM 使用者指南中的建立可測試多個金鑰值的條件