本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Studio 中为访问亚马逊EMR集群配置IAM运行时角色
当您从 Studio 或 Studio Classic 笔记本电脑连接到 Amazon EMR 集群时,您可以直观地浏览IAM角色列表(称为运行时角色),然后即时选择一个角色。随后,从笔记本电脑创建的所有 Apache Spark、Apache Hive 或 Presto 作业都只能访问附加到运行时角色的策略所允许的数据和资源。此外,当从使用管理的数据湖访问数据时 AWS Lake Formation,您可以使用附加到运行时角色的策略强制执行表级和列级访问权限。
有了这项功能,您和您的队友就可以连接到同一个集群,每个人都可以使用一个运行时系统角色,该角色的权限与您访问数据的个人级别相匹配。您的会话在共享集群上也是相互隔离的。
要使用 Studio Classic 试用此功能,请参阅使用 Amazon Studi SageMaker o Classic 中的 AWS Lake Formation EMR亚马逊应用精细的数据访问控制
先决条件
在开始之前,请确保您满足以下先决条件:
-
使用亚马逊 6.9 或更高EMR版本。
-
对于 Studio Classic 用户:使用 Studio Classic Jupyter 服务器应用程序配置中的 JupyterLab 版本 3 此版本支持使用运行时角色与 Studio Classic 连接至亚马逊EMR集群。
对于 Studio 用户:使用SageMaker 分发映像版本
1.10
或更高版本。 -
允许在集群的安全配置中使用运行时系统角色。有关更多信息,请参阅 Amazon EMR 步骤的运行时角色。
-
使用支持从 Studio 或 Studio Classic 连接到亚马逊EMR集群的映像和内核中列出的任何内核创建笔记本。
-
请务必查看中的说明将 Studio 设置为使用运行时IAM角色以配置运行时角色。
跨账户连接方案
当数据位于 Studio 账户之外时,运行时系统角色身份验证支持各种跨账户连接方案。下图显示了在 Studio 和数据账户之间分配亚马逊EMR集群、数据甚至亚马逊EMR运行时执行角色的三种不同方式:
在选项 1 中,您的亚马逊EMR集群和亚马逊EMR运行时执行角色与 Studio 账户位于单独的数据账户中。您可以定义单独的亚马逊EMR访问角色(也称为Assumable role
)权限策略,该策略向 Studio 或 Studio Classic 执行角色授予担任亚马逊EMR访问角色的权限。然后,亚马逊EMR访问角色代表您的 Studio 或 Studio Classic 执行角色调用亚马EMRAPIGetClusterSessionCredentials
逊,授予您访问集群的权限。
在选项 2 中,您的亚马逊EMR集群和亚马逊EMR运行时执行角色位于您的 Studio 账户中。您的 Studio 执行角色有权使用 Amazon EMR API GetClusterSessionCredentials
访问您的集群。要访问 Amazon S3 存储桶,请向亚马逊EMR运行时执行角色授予跨账户 Amazon S3 存储桶访问权限,您可以在 Amazon S3 存储桶策略中授予这些权限。
在选项 3 中,您的亚马逊EMR集群位于您的 Studio 账户中,亚马逊EMR运行时执行角色位于数据账户中。您的 Studio 或 Studio Classic 执行角色有权使用亚马逊EMRAPIGetClusterSessionCredentials
访问您的集群。将 Amazon EMR 运行时执行角色添加到执行角色配置中JSON。然后,您可以在选择集群时在用户界面上选择角色。有关如何设置执行角色配置JSON文件的详细信息,请参阅将你的执行角色预加载到 Studio 或 Studio 经典版。
将 Studio 设置为使用运行时IAM角色
要为您的 Amazon EMR 集群建立运行时角色身份验证,请配置所需的IAM策略、网络和可用性增强。如果您的亚马逊EMR集群、Amazon EMR 运行时执行角色或两者都位于您的 Studio 账户之外,则您的设置取决于您是否处理任何跨账户安排。以下部分将指导您完成要安装的策略、如何配置网络以允许跨账户间的流量,以及为自动EMR连接 Amazon 而设置的本地配置文件。
当您的 Amazon EMR 集群和 Studio 位于同一个账户中时配置运行时角色身份验证
如果您的 Amazon EMR 集群位于您的 Studio 账户中,请完成以下步骤,为您的 Studio 执行策略添加必要的权限:
-
添加连接到 Amazon EMR 集群所需的IAM策略。有关详细信息,请参阅配置列出亚马逊EMR集群。
-
EMRAPI
GetClusterSessionCredentials
当您传递政策中指定的一个或多个允许的亚马逊EMR运行时执行角色时,授予调用 Amazon 的权限。 -
(可选)授予传递遵循任何用户定义命名约定的IAM角色的权限。
-
(可选)授予访问标有特定用户定义字符串的 Amazon EMR 集群的权限。
-
预加载您的IAM角色,这样您就可以在连接到 Amazon EMR 集群时选择要使用的角色。有关如何预加载IAM角色的详细信息,请参阅将你的执行角色预加载到 Studio 或 Studio 经典版。
以下示例策略允许调用属于建模和训练组的 Amazon EMR 运行时执行角色GetClusterSessionCredentials
。此外,保单持有人可以访问标有字符串modeling
或training
的 Amazon EMR 集群。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "*", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::123456780910:role/emr-execution-role-ml-modeling*", "arn:aws:iam::123456780910:role/emr-execution-role-ml-training*" ], "elasticmapreduce:ResourceTag/group": [ "*modeling*", "*training*" ] } } } ] }
当集群和 Studio 位于不同的账户中时,配置运行时系统角色身份验证
如果您的 Amazon EMR 集群不在您的 Studio 账户中,请允许您的 SageMaker 执行角色代入跨账户 Amazon EMR 访问角色,这样您就可以连接到集群。完成以下步骤以设置跨账户配置:
-
创建您的 SageMaker 执行角色权限策略,以便执行角色可以担任 Amazon EMR 访问角色。下面是一个示例策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowAssumeCrossAccountEMRAccessRole", "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::
emr_account_id
:role/emr-access-role-name
" } ] } -
创建信任策略以指定可信任哪个 Studio 账户IDs担任亚马逊EMR访问角色。下面是一个示例策略:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountSageMakerExecutionRoleToAssumeThisRole", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::
studio_account_id
:role/studio_execution_role
" }, "Action": "sts:AssumeRole" } } -
创建 Amazon EMR 访问角色权限策略,该策略向 Amazon EMR 运行时执行角色授予在集群上执行预期任务所需的权限。将 Amazon EMR 访问角色配置为API
GetClusterSessionCredentials
使用访问角色权限策略中指定的亚马逊EMR运行时执行角色调用。下面是一个示例策略:{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCallingEmrGetClusterSessionCredentialsAPI", "Effect": "Allow", "Action": "elasticmapreduce:GetClusterSessionCredentials", "Resource": "", "Condition": { "StringLike": { "elasticmapreduce:ExecutionRoleArn": [ "arn:aws:iam::
emr_account_id
:role/emr-execution-role-name
" ] } } } ] } -
设置跨账户网络,使流量可以在账户之间来回移动。有关指导说明,请参阅为您的 Amazon EMR 集群配置网络访问权限设置。本节中的步骤可帮助您完成以下任务:
-
VPC-对等您的 Studio 账户和您的 Amazon EMR 账户以建立连接。
-
在两个账户的私有子网路由表中手动添加路由。这允许创建 Amazon EMR 集群并将其从 Studio 账户连接到远程账户的私有子网。
-
设置附加到您的 Studio 域的安全组以允许出站流量,将 Amazon EMR 主节点的安全组设置为允许来自 Studio 实例安全组的入站TCP流量。
-
-
预加载您的IAM运行时角色,这样您就可以在连接到 Amazon EMR 集群时选择要使用的角色。有关如何预加载IAM角色的详细信息,请参阅将你的执行角色预加载到 Studio 或 Studio 经典版。
配置 Lake Formation 访问权限
当您访问由管理的数据湖中的数据时 AWS Lake Formation,您可以使用附加到您的运行时角色的策略强制执行表级和列级访问权限。要配置 Lake Formation 访问权限,请参阅将亚马逊EMR与集成 AWS Lake Formation。
将你的执行角色预加载到 Studio 或 Studio 经典版
您可以预加载IAM运行时角色,以便在连接到 Amazon EMR 集群时选择要使用的角色。Studio JupyterLab 中的用户可以使用 SageMaker 控制台或提供的脚本。