如何使用 PrincipalTag、ResourceTag、RequestTag 和 TagKeys 條件鍵為基於標籤的限制建立 IAM 政策?

2 分的閱讀內容
0

我想為基於標籤的限制建立 AWS 身分和存取管理 (IAM) 政策。如何使用 PrincipalTag、ResourceTag、RequestTag 和 TagKeys 條件鍵?

簡短描述

使用下列 IAM 範例政策,針對您的使用情況以條件鍵建立基於標籤的限制。

解決方法

PrincipalTag 條件鍵

aws:PrincipalTag 條件鍵可用來比對附加至提出請求之主體的標籤和 IAM 政策中的標籤。**PrincipalTag ** 鍵的值會與具有相符標籤鍵的 IAM 標籤值 (如果出現在請求主體上) 進行比較。

下列 IAM 政策範例針對 Amazon Simple Storage Service (Amazon S3) 儲存貯體提供限制。除了標題為「Product-Manager」的使用者以外,Amazon S3 PutObject 動作已拒絕所有使用者對儲存貯體的權限。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyAllButProductManagers",
      "Effect": "Deny",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:PutObject"
      ],
      "Resource": [
        "arn:aws:s3:::productionbucket/*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:PrincipalTag/job-title": "Product-Manager"
        }
      }
    }
  ]
}

ResourceTag 條件鍵

aws:ResourceTag/tag-key 條件鍵會將 IAM 政策中指定的標籤-鍵值對與連接至 AWS 資源的鍵-值對進行比較。如需詳細資訊,請參閱控制 AWS 資源的存取權

在 IAM 政策評估期間,ResourceTag 標籤會與 IAM 標籤進行比較。ResourceTag ** 鍵的值會與有相符鍵-值對的 IAM 標籤 (如果存在 AWS 資源的話) 進行比較。此條件鍵可用於全域版aws:ResourceTag** 和 AWS 服務中,例如 **ec2:ResourceTag **。如需詳細資訊,請參閱 AWS 服務的動作、資源和條件鍵

下列 IAM 政策範例可讓使用者啟動、停止和終止位於「測試」環境中的執行個體。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowOnlyForTestEnvironment",
      "Effect": "Allow",
      "Action": [
        "ec2:TerminateInstances",
        "ec2:StartInstances",
        "ec2:StopInstances"
      ],
      "Resource": "arn:aws:ec2:*:*:instance/*",
      "Condition": {
        "StringLike": {
          "ec2:ResourceTag/Env": "test"
        }
      }
    }
  ]
}

RequestTag 條件鍵

使用aws:RequestTag/tag-key 條件鍵比較使用者請求中傳遞的鍵-值對與 IAM 政策中指定的標籤對。條件鍵適用於在資源上建立資源或標籤的動作,並檢查標籤值。

例如,請參閱下列 IAM 政策。它強制使用者在建立 Amazon Elastic Block Store (Amazon EBS) 磁碟區時,建立值為「Dev」、「Prod」或「QA」的特定標籤「Env」。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "AllowCreateVolumeWithEnvTag",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/Env": [
            "Dev",
            "Prod",
            "QA"
          ]
        }
      }
    }
  ]
}

TagKeys 條件鍵

使用 aws:TagKeys 條件鍵比較請求中的標籤鍵和 IAM 政策中指定的鍵。TagKeys 鍵的值會與 AWS 資源請求中的標籤清單進行比較。tagKeys 條件鍵用於驗證附加到資源的標籤-鍵。

由於您可以在請求中定義多個標籤鍵-值對,因此請求可以有多個值。這些值可以使用 ForallValuesForanyValue 集運算符進行比較。

下列範例政策限制在 AWS 資源上建立的標籤。「Env」和「CostCenter」標籤是使用者可以使用新的 Amazon EBS 磁碟區建立的唯一標籤鍵。搭配使用 ForAllValues 集運算符和 aws:TagKeys 限制使用者僅在 AWS 資源上附加必要的標籤。這不需要使用者在資源建立請求中提供這些標籤鍵,但可以防止使用者建立具有其他鍵-值對的標籤。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "VisualEditor0",
      "Effect": "Allow",
      "Action": "ec2:CreateVolume",
      "Resource": "arn:aws:ec2:*:*:volume/*",
      "Condition": {
        "ForAllValues:StringEquals": {
          "aws:TagKeys": [
            "Env",
            "CostCenter"
          ]
        }
      }
    }
  ]
}

相關資訊

IAM 教學課程: 根據標籤定義存取 AWS 資源的權限

在 AWS 請求期間控制存取

AWS 官方
AWS 官方已更新 1 年前