本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
基于标签的访问控制策略
您可以在基于身份的策略中使用条件,根据标签控制对应用程序和作业运行的访问。
以下示例演示了将条件运算符与 EMR Serverless 条件键结合使用的不同场景和方法。这些 IAM policy 声明仅用于演示目的,并且不应用于生产环境。可通过多种方式来组合策略声明,以根据要求授予和拒绝权限。有关规划和测试 IAM policy 的更多信息,请参阅 IAM 用户指南。
一个重要注意事项是,应该明确拒绝添加标签操作的权限。这可以防止用户标记资源,从而为其授予您不打算授予的权限。如果资源的标记操作未被拒绝,用户可以修改标记并规避基于标签的策略意图。有关拒绝添加标签操作的策略示例,请参阅拒绝添加和删除标签的访问权限。
以下示例演示了基于身份的权限策略,这些策略用于控制 EMR Serverless 应用程序允许的操作。
仅允许带特定标签值资源上的操作
在以下策略示例中,StringEquals
条件运算符尝试将 dev
与标签部分的值匹配。如果标签部分尚未添加到应用程序或不包含值 dev
,则策略不会应用,并且此策略将不允许这些操作。如果没有其他策略语句允许这些操作,则用户只能使用标签中包含此值的应用程序。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"emr-serverless:GetApplication"
],
"Resource": [
"*"
],
"Condition": {
"StringEquals": {
"aws:ResourceTag/department": "dev"
}
},
"Sid": "AllowEMRSERVERLESSGetapplication"
}
]
}
您也可以使用条件运算符指定多个标签值。例如,如果要对 department
标签包含值 dev
或 test
的应用程序执行操作,可以将前面示例中的条件块替换为以下内容。
"Condition": {
"StringEquals": {
"emr-serverless:ResourceTag/department": ["dev", "test"]
}
}
创建资源时需要标签
在下面的示例中,创建应用程序时需要应用标签。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"emr-serverless:CreateApplication"
],
"Resource": [
"*"
],
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "us-east-1"
}
},
"Sid": "AllowEMRSERVERLESSCreateapplication"
}
]
}
以下策略语句仅允许用户在应用程序具有 department
标签(可包含任何值)的情况下创建虚拟集群。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"emr-serverless:CreateApplication"
],
"Resource": [
"*"
],
"Condition": {
"StringEquals": {
"aws:RequestedRegion": ["us-east-1", "us-west-2"]
}
},
"Sid": "AllowEMRSERVERLESSCreateapplication"
}
]
}
拒绝添加和删除标签的访问权限
此策略可防止用户在 EMR Serverless 应用程序上添加或删除 department
标签值不是 dev
的标签。
- JSON
-
-
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"emr-serverless:TagResource",
"emr-serverless:UntagResource"
],
"Resource": [
"*"
],
"Condition": {
"StringNotEquals": {
"aws:PrincipalTag/department": "dev"
}
},
"Sid": "AllowEMRSERVERLESSTagresource"
}
]
}