Amazon EMR
管理指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用标签控制用户权限。

使用 IAM 策略中基于标签的访问控制,可以微调与 EMR 笔记本 关联的 Amazon EMR 操作的权限。您可以使用 Condition 元素(也称作 Condition 块),来允许仅在笔记本和/或集群具有特定标签或键-值组合时执行某些操作。您还可以限制 CreateEditor 操作,以在用户创建笔记本时必须提交标签请求。

您创建 EMR 笔记本 时,系统会应用一个默认标签,其中 creatorUserId 的键字符串会设置为创建笔记本的 IAM 用户 ID 的值。这在将笔记本的允许操作仅限定为创建者时非常有用。

适用于 Amazon EMR 资源的上下文键也适用于笔记本:

  • 使用 elasticmapreduce:ResourceTag/TagKeyString 条件上下文键可允许或拒绝带有您指定的 TagKeyString 的集群上的用户操作。

  • elasticmapreduce:RequestTag/TagKeyString 条件上下文键与 CreateEditor 操作一起使用,可在创建笔记本时对其应用 TagKeyString

有关将资源标签与将 ClusterID 作为必需请求参数传递的操作一起使用的更多信息,请参阅将集群标签与 IAM 策略结合使用来进行特定于集群的控制

如果某个操作同时传递 ClusterIDNotebookID 并且您使用 ResourceTag 条件上下文键,则该条件适用于集群和笔记本。这意味着这两个资源都必须具有标签键字符串或键-值组合。您可以使用 Resource 元素来限制语句,以便它能根据需要仅适用于集群或笔记本。有关更多信息,请参阅以下部分中的示例。

使用标签作为上下文键的示例策略语句

本部分中的示例 IAM 策略语句展示了使用键来限制使用 EMR 笔记本 所允许的操作的常见情形。只要与委托人(用户)关联的其他策略都不允许执行这些操作,条件上下文键就会按指示限制允许的操作。

– 仅允许访问用户基于标记创建的笔记本

下面的示例策略语句附加到角色或用户后,会允许 IAM 用户仅使用他们创建的笔记本。此策略语句使用创建笔记本时应用的默认标签。

在示例中,StringEquals 条件运算符尝试将表示当前用户 IAM 用户 ID ({aws:userId}) 的变量与标签 creatorUserID 的值相匹配。如果标签 creatorUserID 尚未添加到笔记本或不包含当前用户 ID 的值,则策略不会应用,并且此策略将不允许这些操作。如果没有任何其他策略语句允许这些操作,则用户只能使用此标签中包含此值的笔记本。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:DescribeEditor", "elasticmapreduce:StartEditor", "elasticmapreduce:StopEditor", "elasticmapreduce:DeleteEditor", "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/creatorUserId": "${aws:userId}" } } } ] }

例 – 创建笔记本时需要笔记本标记

此示例使用 RequestTag 上下文键。仅当用户未更改或删除 creatorUserID 标签时,才允许执行 CreateEditor 操作,此标签是默认添加的。变量 ${aws:userId} 用于指定当前活动用户的用户 ID,此 ID 是标签的默认值。

该策略语句可有助于确保用户不会删除 createUserId 标签或更改其值。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/creatorUserId": "${aws:userid}" } } } ] }

此示例要求用户使用键字符串为 dept 且值设置为以下之一的标签创建集群:datascienceanalyticsoperations

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/dept": [ "datascience", "analytics", "operations" ] } } } ] }

例 – 将笔记本创建限定到已标记的集群并需要笔记本标签

仅当使用键字符串 owner 设置为一个指定值的标签创建笔记本时,此示例才允许创建笔记本。此外,仅当集群具有键字符串 department 设置为一个指定值的标签时,才能创建笔记本。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:CreateEditor" ], "Effect": "Allow", "Resource": "*", "Condition": { "StringEquals": { "elasticmapreduce:RequestTag/owner": [ "owner1", "owner2", "owner3" ], "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }

例 – 将能力限定为启动基于标签的笔记本

此示例将启动笔记本的能力限定为那些具有键字符串 owner 设置为一个指定值的标签的笔记本。因为 Resource 元素仅用于指定 editor,所以此条件不适用于集群,并且它不需要标记。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "owner1", "owner2" ] } } } ] }

此示例类似于上一示例。但是,限制仅适用于已标记的集群,不适用于笔记本。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "dep1", "dep3" ] } } } ] }

此示例使用一组不同的笔记本和集群标签。仅当满足以下条件时,它才允许启动笔记本:

  • 笔记本具有键字符串 owner 设置为任意指定值的标签

    — 和 —

  • 集群具有键字符串 department 设置为任意指定值的标签

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:StartEditor" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }

例 – 将能力限定为打开基于标签的笔记本编辑器

仅当满足以下条件时,此示例才允许打开笔记本编辑器:

  • 笔记本具有键字符串 owner 设置为任意指定值的标签。

    — 和 —

  • 集群具有键字符串 department 设置为任意指定值的标签。

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:editor/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/owner": [ "user1", "user2" ] } } }, { "Action": [ "elasticmapreduce:OpenEditorInConsole" ], "Effect": "Allow", "Resource": "arn:aws:elasticmapreduce:*:123456789012:cluster/*", "Condition": { "StringEquals": { "elasticmapreduce:ResourceTag/department": [ "datascience", "analytics" ] } } } ] }