本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
互动会话 IAM
以下各节介绍 Amazon Glue 交互式会话的安全注意事项。
IAM交互式会话中使用的校长
在Amazon Glue交互式会话中使用两个IAM主体。
-
客户端主体:客户端主体(用户或角色)授权配置了委托人基于身份的凭据的Amazon Glue客户端进行交互式会话的API操作。例如,这可能是您通常用来访问Amazon Glue控制台的IAM角色。这也可以是授予使用IAM其凭据的用户的角色 Amazon Command Line Interface,或者交互式会话 Jupyter 内核使用的Amazon Glue客户端。
-
运行时角色:运行时IAM角色是客户端委托人传递给交互式会话API操作的角色。 Amazon Glue使用此角色在会话中运行语句。例如,此角色可以是用于运行Amazon GlueETL作业的角色。
有关更多信息,请参阅 设置运行时角色。
设置客户端主体
您必须将身份策略附加到客户端主体,以允许其调用交互式会话API。此角色必须有权iam:PassRole
访问要传递给交互式会话的执行角色API,例如CreateSession
。例如,您可以将AWSGlueConsoleFullAccess托管策略附加到一个IAM角色,该角色允许您的账户中附加了该策略的用户访问在您的账户中创建的所有会话(例如运行时语句或取消声明)。
如果您想保护您的会话并使其仅对某些IAM角色设为私有,例如与创建会话的用户关联的角色,则可以使用名为 Interact Amazon Glue ive Session 的基于标签的授权控件 TagOnCreate。有关更多信息,请参阅 将您的会话设为私密会话 TagOnCreate 基于所有者标签的限定范围的托管策略如何将您的会话设为私有。 TagOnCreate有关基于身份的策 的更多信息,请参阅适用于 Amazon Glue 的基于身份的策略。
设置运行时角色
必须将IAM角色传递给 CreateSession API操作,Amazon Glue才能允许在交互式会话中代入和运行语句。该角色应具有与运行典型Amazon Glue作业所需的IAM权限相同的权限。例如,您可以使用允许代表您呼叫 Amazon 服务的AWSGlueServiceRole策略Amazon Glue来创建服务角色。如果您使用 Amazon Glue 控制台,它将自动代表您创建服务角色或使用现有的服务角色。您也可以创建自己的IAM角色并附加自己的IAM策略以允许类似的权限。
如果您想保护您的会话并使其仅对创建会话的用户保密,则可以使用名为 Interact Amazon Glue ive Session 的基于标签的授权控件 TagOnCreate。有关更多信息,请参阅 将您的会话设为私密会话 TagOnCreate 基于所有者标签的限定范围的托管策略如何将您的会话设为私有。 TagOnCreate有关基于身份的策略的更多信息,请参阅 适用于 Amazon Glue 的基于身份的策略。如果您要通过IAM控制台自己创建执行角色,并且想要使用 TagOnCreate 功能将服务设为私有,请按照以下步骤操作。
-
创建IAM角色类型设置为的角色
Glue
。 -
附加此Amazon Glue托管策略:AwsGlueSessionUserRestrictedServiceRole
-
在角色名称前加上策略名称AwsGlueSessionUserRestrictedServiceRole。例如,您可以创建一个名为 AwsGlueSessionUserRestrictedServiceRole-myrole的角色并附加Amazon Glue托管策略。AwsGlueSessionUserRestrictedServiceRole
-
附加如下所示的信任策略,以允许 Amazon Glue 代入角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }
对于交互式会话 Jupyter 内核,您可以在配置文件中指定iam_role
密钥。 Amazon Command Line Interface 更多相关信息,请参阅使用 ~/.aws/config 配置会话。如果您正在使用 Amazon Glue 笔记本与交互式会话进行交互,则可以传递运行的第一个单元格中的 %iam_role
魔术命令中的执行角色。
将您的会话设为私密会话 TagOnCreate
Amazon Glue交互式会话支持将交互式会话标记和基于标签的授权 (TBAC) 作为命名资源。除了TBAC使用 TagResource 和之外 UntagResource APIs,Amazon Glue交互式会话还支持仅在使用 CreateSession 操作创建会话期间使用给定标签 “标记” 会话的 TagOnCreate 功能。这也意味着这些标签将被删除 DeleteSession,也就是说 UntagOnDelete。
TagOnCreate 提供了一种强大的安全机制,可将您的会话设为私密会话,仅供会话创建者使用。例如,您可以将一个 “owner” RequestTag 且值为 $ {aws:userId} 的IAM策略附加到客户委托人(例如用户),以便仅在 CreateSession 请求中提供与调用 userId 者值匹配的 “所有者” 标签作为 userId 标签时才允许创建会话。此策略允许Amazon Glue交互式会话创建会话资源并仅在会话创建期间使用 userId 标签标记会话。除此之外,您还可以通过将带有 “owner” ResourceTag 的IAM策略附加到您在此期间 CreateSession传入的执行角色,将对会话的访问权限(如正在运行的语句)仅限于会话的创建者(又名值为 $ {aws:userId} 的所有者标签)。
为了便于您使用 TagOnCreate 功能将会话设为私有会话创建者,Amazon Glue提供了专门的托管策略和服务角色。
如果要使用IAM AssumeRole 委托人创建Amazon Glue交互式会话(即使用通过担任IAM角色获得的凭据),并且想要将该会话设为对创建者不公开,请分别使用与AWSGlueSessionUserRestrictedNotebookPolicy和AWSGlueSessionUserRestrictedNotebookServiceRole类似的策略。这些策略Amazon Glue允许使用 $ {aws:PrincipalTag} 提取所有者标签值。这要求您传递一个值为 $ {aws:userId} 的 userId 标签,如代 SessionTag 入角色凭证中所示。请参阅 ID 会话标签。如果您使用的是带有EC2实例配置文件出售凭证的 Amazon 实例,并且您想在 Amazon EC2 实例中创建会话或与会话进行交互,则需要传递一个值为 $ {aws:userId} 的 userId 标签,如代 SessionTag 入角色凭证。
例如,如果您正在使用IAM AssumeRole 委托人凭据创建会话,并且想要使用 TagOnCreate 功能将服务设为私有,请按照以下步骤操作。
-
通过IAM控制台自己创建运行时角色。请附上此Amazon Glue托管策略,AwsGlueSessionUserRestrictedNotebookServiceRole并在角色名称前加上策略名称AwsGlueSessionUserRestrictedNotebookServiceRole。例如,您可以创建一个名为 AwsGlueSessionUserRestrictedNotebookServiceRole-myrole的角色并附加Amazon Glue托管策略。AwsGlueSessionUserRestrictedNotebookServiceRole
-
附加如下所示的信任策略,以允许 Amazon Glue 代入以上角色:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Action": [ "sts:AssumeRole" ] } ] }
-
创建另一个带有前缀的角色AwsGlueSessionUserRestrictedNotebookPolicy并附加Amazon Glue托管策略AwsGlueSessionUserRestrictedNotebookPolicy以将会话设为私有。除了托管策略外,请将以下内联策略附加到您在步骤 1 中创建的角色PassRole 以允许 iam:。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/AwsGlueSessionUserRestrictedNotebookServiceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } } ] }
-
在上面附上如下所示的信任策略IAMAmazon Glue来担任该角色。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": [ "glue.amazonaws.com" ] }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] }] }
注意
或者,您可以使用单个角色(例如,笔记本角色)并附加上述两个托管策略AwsGlueSessionUserRestrictedNotebookServiceRole和AwsGlueSessionUserRestrictedNotebookPolicy。此外,将允许角色的
iam:passrole
的其他内联策略附加到 Amazon Glue。最后,请附加以上信任策略以允许sts:AssumeRole
和sts:TagSession
。
AWSGlueSessionUserRestrictedNotebookPolicy
仅当标签键为 “所有者” 和值与委托人(用户或角色)的 Amazon 用户 ID 匹配时,才 AWSGlueSessionUserRestrictedNotebookPolicy 提供从笔记本创建Amazon Glue交互式会话的权限。有关更多信息,请参阅您可以使用策略变量的位置。此策略已附加到从 Amazon Glue Studio 创建 Amazon Glue 交互式会话笔记本的主体(用户或角色)。该策略还允许对Amazon Glue Studio笔记本有足够的访问权限,以便与交互Amazon Glue Studio式会话资源进行交互,这些资源是使用与委托人的 Amazon 用户 ID 匹配的 “所有者” 标签值创建的。此策略拒绝在创建会话后从 Amazon Glue 会话资源中更改或删除“拥有者”标签的权限。
AWSGlueSessionUserRestrictedNotebookServiceRole
AWSGlueSessionUserRestrictedNotebookServiceRole提供了对Amazon Glue Studio笔记本的足够访问权限,可以与Amazon Glue交互式会话资源进行交互,这些资源创建的 “所有者” 标签值与笔记本创建者的委托人(用户或角色)的用户 ID 相匹配。 Amazon 有关更多信息,请参阅您可以使用策略变量的位置。此服务角色策略附加到作为魔法传递给笔记本或作为执行角色传递给笔记本的 CreateSession API角色。只有标签密钥 “所有者” 和值与委托人的 Amazon 用户 ID 相匹配时,此策略还允许通过笔记本创建Amazon Glue交互式会话。此策略拒绝在创建会话后从 Amazon Glue 会话资源中更改或删除“拥有者”标签的权限。该策略还包括写入和读取 Amazon S3 存储桶、写入 CloudWatch 日志、为使用的亚马逊EC2资源创建和删除标签的权限。Amazon Glue
使用用户策略将会话设为私有
您可以将附加AWSGlueSessionUserRestrictedPolicy到账户中每个用户的IAM角色上,以限制他们只能使用值与自己的 $ {aws:userId} 匹配的所有者标签创建会话。AWSGlueSessionUserRestrictedNotebookServiceRole您需要AWSGlueSessionUserRestrictedServiceRole分别使用与AWSGlueSessionUserRestrictedNotebookPolicy和类似的AWSGlueSessionUserRestrictedPolicy策略。有关更多信息,请参阅 Using-identity based policies。此策略将对会话的访问权限范围缩小到创建者,即创建会话的用户的 $ {aws:userId},其所有者标签带有自己的 $ {aws:userId}。如果您按照中的步骤使用IAM控制台自己创建了执行角色设置运行时角色,那么除了附加AwsGlueSessionUserRestrictedPolicy托管策略外,还要将以下内联策略附加到您账户中的每个用户,以允许您之前创建iam:PassRole
的执行角色使用。
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "iam:PassRole" ], "Resource": [ "arn:aws:iam::*:role/AwsGlueSessionUserRestrictedServiceRole*" ], "Condition": { "StringLike": { "iam:PassedToService": [ "glue.amazonaws.com" ] } } }] }
AWSGlueSessionUserRestrictedPolicy
CreateSession API仅当AWSGlueSessionUserRestrictedPolicy提供了与其 Amazon 用户 ID 匹配的标签密钥 “owner” 和值时,才允许使用创建Amazon Glue交互式会话。此身份策略附加到调用的用户。 CreateSession API此策略还允许与使用与其 Amazon 用户 ID 匹配的 “所有者” 标签和值创建的 Amazon Glue Interactive Session 资源进行交互。此策略拒绝在创建会话后从 Amazon Glue 会话资源中更改或删除“拥有者”标签的权限。
AWSGlueSessionUserRestrictedServiceRole
AWSGlueSessionUserRestrictedServiceRole提供对除会话之外的所有Amazon Glue资源的完全访问权限,并允许用户仅创建和使用与用户关联的交互式会话。该策略还包括管理其他 Amazon 服务中的 Glue 资源所需的其他权限。Amazon Glue该策略还允许为其他 Amazon 服务中的Amazon Glue资源添加标签。
IAM政策考虑
互动会话是中的IAM资源Amazon Glue。由于它们是IAM资源,因此会话的访问和交互受IAM策略的约束。根据附加到客户端主体或管理员配置的执行角色的IAM策略,客户端主体(用户或角色)将能够创建新会话并与自己的会话和其他会话进行交互。
如果管理员附加了允许访问 AWSGlueServiceRole 该账户中所有Amazon Glue资源的IAM策略(如 AWSGlueConsoleFullAccess 或),则客户委托人将能够相互协作。例如,如果策略允许,一个用户将能够与其他用户创建的会话进行交互。
如果您想配置针对您的特定需求量身定制的策略,请参阅有关为策略配置资源的IAM文档。例如,为了隔离属于某个用户的会话,您可以使用Amazon Glue交互会话支持的 TagOnCreate 功能。请参阅 将您的会话设为私密会话 TagOnCreate 。
交互式会话支持根据特定VPC条件限制会话创建。请参阅 使用条件键控制设置的策略。