

# IAM：仅创建具有特定标签的新用户
<a name="reference_policies_examples_iam-new-user-tag"></a>

此示例说明了如何创建基于身份的策略以允许创建 IAM 用户，但仅限于包含 `Department` 和 `JobFunction` 标签键之一或同时包含两者。`Department` 标签键必须具有 `Development` 或 `QualityAssurance` 标签值。`JobFunction` 标签键必须具有 `Employee` 标签值。您可以使用此策略要求新用户具有特定工作职能和部门。此策略授予有计划地通过 Amazon API 或 Amazon CLI 完成此操作的必要权限。要使用此策略，请将示例策略中的*斜体占位符文本*替换为您自己的信息。然后，按照[创建策略](access_policies_create.md)或[编辑策略](access_policies_manage-edit.md)中的说明操作。

语句中的第一个条件使用 `StringEqualsIfExists` 条件运算符。如果请求中存在 `Department` 或 `JobFunction` 键，则标签必须包含指定的值。如果任一键都不存在，则此条件的计算结果将为 true。该条件的计算结果为 false 的唯一方法是：其中一个指定条件键在请求中存在，但具有的值不同于允许的值。有关使用 `IfExists` 的更多信息，请参阅[...IfExists 条件运算符](reference_policies_elements_condition_operators.md#Conditions_IfExists)。

第二个条件使用 `ForAllValues:StringEquals` 条件运算符。如果请求中指定的每个标签键都与策略中至少一个值匹配，则该条件将返回 true。这意味着，请求中的所有标签必须在此列表中。但是，请求只能包含列表中的一个标签。例如，您可以创建一个仅具有 `Department=QualityAssurance` 标签的 IAM 用户。但是，您不能创建一个同时具有 `JobFunction=employee` 标签和 `Project=core` 标签的 IAM 用户。有关使用 `ForAllValues` 的更多信息，请参阅[多值上下文键的集合运算符](reference_policies_condition-single-vs-multi-valued-context-keys.md#reference_policies_condition-multi-valued-context-keys)。

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

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "TagUsersWithOnlyTheseTags",
            "Effect": "Allow",
            "Action": [
                "iam:CreateUser",
                "iam:TagUser"
            ],
            "Resource": "*",
            "Condition": {
                "StringEqualsIfExists": {
                    "aws:RequestTag/Department": [
                        "Development",
                        "QualityAssurance"
                    ],
                    "aws:RequestTag/JobFunction": "Employee"
                },
                "ForAllValues:StringEquals": {
                    "aws:TagKeys": [
                        "Department",
                        "JobFunction"
                    ]
                }
            }
        }
    ]
}
```

------