监控来自亚马逊 SageMaker Studio 经典版的用户资源访问权限 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

监控来自亚马逊 SageMaker Studio 经典版的用户资源访问权限

使用 Amazon SageMaker Studio Classic,您可以监控用户资源访问情况。要查看资源访问活动,您可以按照记录 Amazon SageMaker API 调用中的步骤进行配置 AWS CloudTrail ,以监控和记录用户活动 AWS CloudTrail。

但是,资源访问 AWS CloudTrail 日志仅将 Studio Classic 执行 IAM 角色列为标识符。当每个用户配置文件都有不同的执行角色时,此级别的日志记录足以审计用户活动。但是,当多个用户配置文件之间共享单个执行 IAM 角色时,您无法获取有关访问 AWS 资源的特定用户的信息。 

使用配置传播 Studio Classic 用户sourceIdentity配置文件名称,您可以在 AWS CloudTrail 日志中获取有关哪个特定用户在使用共享执行角色时执行了操作的信息。有关源身份的更多信息,请参阅监控和控制使用所担任角色执行的操作

先决条件

  • 按照安装或更新最新版本中的步骤安装和配置 AWS Command Line Interface 以下步骤 AWS CLI。

  • 确保您网域中的 Studio Classic 用户没有允许他们更新或修改域名的政策。 

  • 要打开或关闭 sourceIdentity 传播,域中的所有应用程序都必须处于 StoppedDeleted 状态。有关如何停止和关闭应用程序的更多信息,请参阅关闭和更新 Studio Classic 应用程序

  • 如果开启了源身份传播,则所有执行角色都必须具有以下信任策略权限: 

    • 域的执行角色所扮演的任何角色都必须具有信任策略中的sts:SetSourceIdentity权限。如果缺少此权限,则在调用任务创建 API ValidationErrorAccessDeniedException或调用创建任务 API 时,您的操作将失败。以下示例信任策略包含sts:SetSourceIdentity权限。

      {     "Version": "2012-10-17",     "Statement": [         {             "Effect": "Allow",             "Principal": {                 "Service": "sagemaker.amazonaws.com"             },             "Action": [                 "sts:AssumeRole",                 "sts:SetSourceIdentity"             ]         }     ] }
    • 当您使用一个角色担任另一角色(称为角色链)时,请执行以下操作:

      • 在担任角色的主体的权限策略和目标角色的角色信任策略中都需要对 sts:SetSourceIdentity 的权限。否则,担任角色的操作将失败。

      • 这种角色链接可能发生在 Studio Classic 或任何其他下游服务(例如 Amazon EMR)中。有关角色链的更多信息,请参阅角色术语和概念

使用 sourceIdentity 时的注意事项

当您从 Studio Classic 笔记本电脑、 SageMaker Canvas 或 Amazon SageMaker Data Wrangler 发出 AWS API 调用时,只有当这些调用sourceIdentity是使用 Studio Classic 执行角色会话或该会话中的任何链接角色进行调用时,才会记录在中 CloudTrail 。

当这些 API 调用去调用其他服务来执行其他操作时,sourceIdentity 日志记录取决于所调用服务的具体实施。

  • A SageMaker mazon Processing:当您使用这些功能创建任务时,任务创建 API 无法提取会话中sourceIdentity存在的 API。因此,从这些作业发出的任何 AWS API 调用都不会记录sourceIdentity在 CloudTrail 日志中。

  • Amazon SageMaker Training:当您创建训练作业时,任务创建 API 能够提取会话中sourceIdentity存在的 API。因此,从这些作业发出的任何 AWS API 调用都会记录sourceIdentity在 CloudTrail 日志中。

  • Amazon SageMaker 模型构建管道:当您使用自动 CI/CD 管道创建任务时,sourceIdentity会向下游传播,并且可以在日志中查看。 CloudTrail

  • 亚马逊 EMR:使用运行时角色从 Studio Classic 连接亚马逊 EMR 时,管理员必须明确设置该字段。 PropagateSourceIdentity 由此可确保 Amazon EMR 会将调用凭证中的 sourceIdentity 用于作业或查询会话。然后sourceIdentity将其记录在 CloudTrail 日志中。

注意

使用 sourceIdentity 时存在以下例外:

  • SageMaker Studio Classic 共享空间不支持sourceIdentity直通。 AWS 从 SageMaker 共享空间发出的 API 调用不会记录sourceIdentity在 CloudTrail 日志中。

  • 如果 AWS API 调用是通过用户或其他服务创建的会话进行的,并且会话不是基于 Studio Classic 执行角色会话,sourceIdentity则不会记录在 CloudTrail 日志中。

启用 sourceIdentity

默认情况下,在 Studio Classic sourceIdentity 中传播用户配置文件名称的功能已关闭。

要启用将用户配置文件名称传播为的功能sourceIdentity,请在创建域和更新域名 AWS CLI 时使用。此功能在域级别启用,而不是在用户配置文件级别启用。

启用此配置后,管理员可以在 AWS CloudTrail 日志中查看所访问服务的用户配置文件。用户配置文件在 userIdentity 部分中作为 sourceIdentity 值给出。有关使用 AWS CloudTrail 日志的更多信息 SageMaker,请参阅使用记录 Amazon SageMaker API 调用 AWS CloudTrail

在使用 create-domain API 创建域时,可使用以下代码启用传播用户配置文件名称作为 sourceIdentity

create-domain --domain-name <value> --auth-mode <value> --default-user-settings <value> --subnet-ids <value> --vpc-id <value> [--tags <value>] [--app-network-access-type <value>] [--home-efs-file-system-kms-key-id <value>] [--kms-key-id <value>] [--app-security-group-management <value>] [--domain-settings "ExecutionRoleIdentityConfig=USER_PROFILE_NAME"] [--cli-input-json <value>] [--generate-cli-skeleton <value>]

在更新域期间,您可以使用 update-domain API 启用传播用户配置文件名称作为 sourceIdentity

要更新此配置,域中的所有应用程序都必须处于 StoppedDeleted 状态。有关如何停止和关闭应用程序的更多信息,请参阅关闭和更新 Studio Classic 应用程序

使用以下代码启用传播用户配置文件名称作为 sourceIdentity.

update-domain --domain-id <value> [--default-user-settings <value>] [--domain-settings-for-update "ExecutionRoleIdentityConfig=USER_PROFILE_NAME"] [--cli-input-json <value>] [--generate-cli-skeleton <value>]

关闭 sourceIdentity

您也可以使用 AWS CLI关闭传播用户配置文件名称作为 sourceIdentity。为此,在更新域期间,通过在 update-domain API 调用中为 --domain-settings-for-update 参数传递 ExecutionRoleIdentityConfig=DISABLED 值即可。

在中 AWS CLI,使用以下代码禁用将用户配置文件名称传播为sourceIdentity

update-domain --domain-id <value> [--default-user-settings <value>] [--domain-settings-for-update "ExecutionRoleIdentityConfig=DISABLED"] [--cli-input-json <value>] [--generate-cli-skeleton <value>]