跳至內容

如何使用 PrincipalTag、ResourceTag、RequestTag 和 TagKeys 條件索引鍵來控制對 AWS 政策的存取權?

2 分的閱讀內容
0

我想在 AWS Identity and Access Management (IAM) 政策中使用 PrincipalTag、ResourceTag、RequestTag 和 TagKeys 這些標籤型條件索引鍵,來控制對 AWS 資源的存取權。

解決方法

以下的 IAM 範例政策使用條件索引鍵來控制對含有標籤之 AWS 資源的存取權。

若要判斷您可以執行哪些 API 動作,最佳實務是檢閱您所使用服務的 API 文件。

PrincipalTag 條件索引鍵

使用 aws:PrincipalTag/tag-key 條件索引鍵來比較下列標籤:

  • 附加到提出請求之主體的標籤
  • 在 IAM 政策中指定的標籤

在以下範例中,Amazon Simple Storage Service (Amazon S3) 的 PutObject 動作會拒絕所有使用者對儲存貯體的存取,僅允許標題為 Product-Manager 的使用者存取:

{
  "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 資源的存取權

您可以搭配全域版本 aws:ResourceTag 及 AWS 服務 (例如 ec2:ResourceTag) 使用 aws:ResourceTag/tag-key 條件索引鍵。

在以下範例中,IAM 政策允許使用者啟動、停止及終止位於測試環境中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體:

{
  "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 政策允許使用者僅在請求中包含 Env 標籤且其值為 DevProdQA 時,才能建立 Amazon Elastic Block Store (Amazon EBS) 磁碟區:

{
  "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 政策中指定的標籤索引鍵進行比較。此條件索引鍵可驗證附加到資源的標籤索引鍵。

當請求包含多組鍵值組時,請使用 ForAllValuesForAnyValue 集合運算子來比較這些值。

在以下範例中,IAM 政策會限制在 AWS 資源上建立標籤。它允許使用者在建立新的 Amazon EBS 磁碟區時,只能建立 EnvCostCenter 標籤。ForAllValues 集合運算子搭配 aws:TagKeys 條件索引鍵可讓使用者將必要的標籤附加至資源。此政策會在建立資源時,將這些標籤索引鍵設為選用,並防止建立其他鍵值組的標籤:

{
  "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 官方已更新 4 個月前