

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 基于标签的访问控制策略
<a name="security_iam_TBAC"></a>

您可以在基于身份的策略中使用条件，以便根据标签控制对虚拟集群和任务运行的访问。有关标记的更多信息，请参阅[为您的 Amazon EMR on EKS 资源添加标签](tag-resources.md)。

以下示例说明将条件运算符与 Amazon EMR on EKS 条件键结合使用的不同场景和方法。这些 IAM policy 声明仅用于演示目的，并且不应用于生产环境。可通过多种方式来组合策略声明，以根据要求授予和拒绝权限。有关规划和测试 IAM policy 的更多信息，请参阅 [IAM 用户指南](https://docs.aws.amazon.com/IAM/latest/UserGuide/)。

**重要**  
一个重要注意事项是，应该明确拒绝添加标签操作的权限。这可以防止用户标记资源，从而为其授予您不打算授予的权限。如果资源的标记操作未被拒绝，用户可以修改标记并规避基于标签的策略意图。有关拒绝添加标签操作的策略示例，请参阅[拒绝添加和删除标签的访问权限](#security_iam_TBAC_deny)。

以下示例演示基于身份的权限策略，用于控制允许对 Amazon EMR on EKS 虚拟集群执行的操作。

## 仅允许带特定标签值资源上的操作
<a name="security_iam_TBAC_allow"></a>

在以下策略示例中， StringEquals 条件运算符尝试将 dev 与标签部门的值进行匹配。如果标签部分尚未添加到虚拟集群或不包含值 dev，则策略不会应用，并且此策略将不允许这些操作。如果任何其它策略声明允许操作，则用户只能使用标签中包含此值的虚拟集群。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:DescribeVirtualCluster"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:ResourceTag/department": "dev"
        }
      },
      "Sid": "AllowEMRCONTAINERDescribevirtualcluster"
    }
  ]
}
```

------

您也可以使用条件运算符指定多个标签值。例如，要运行其 `department` 标签包含值 `dev` 或 `test` 的虚拟集群上的操作，您可以将上一个示例中的条件数据块替换为以下内容。

```
"Condition": {
        "StringEquals": {
          "aws:ResourceTag/department": ["dev", "test"]
        }
      }
```

## 创建资源时需要标签
<a name="security_iam_TBAC_require"></a>

在以下示例中，创建虚拟集群时需要应用标签。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:CreateVirtualCluster"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/department": "dev"
        }
      },
      "Sid": "AllowEMRCONTAINERSCreatevirtualcluster"
    }
  ]
}
```

------

以下策略声明仅允许用户在集群具有 `department` 标签（可包含任何值）的情况下创建虚拟集群。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "emr-containers:CreateVirtualCluster"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "Null": {
          "aws:RequestTag/department": "false"
        }
      },
      "Sid": "AllowEMRCONTAINERSCreatevirtualcluster"
    }
  ]
}
```

------

## 拒绝添加和删除标签的访问权限
<a name="security_iam_TBAC_deny"></a>

此策略旨在拒绝用户在添加了 `department` 标签（包含 `dev` 值）的虚拟集群中添加或删除任何标签的权限。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "emr-containers:TagResource",
        "emr-containers:UntagResource"
      ],
      "Resource": [
        "*"
      ],
      "Condition": {
        "StringNotEquals": {
          "aws:ResourceTag/department": "dev"
        }
      },
      "Sid": "AllowEMRCONTAINERSTagresource"
    }
  ]
}
```

------