通过 Amazon SageMaker Studio 监控用户访问资源的情况 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

通过 Amazon SageMaker Studio 监控用户访问资源的情况

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

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

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

先决条件

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

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

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

  • 所有执行角色都必须具有以下信任策略权限: 

    • Studio 域的执行角色所担任的任何角色都必须具有信任策略中的 sts:SetSourceIdentity 权限,如下所示。

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

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

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

使用 sourceIdentity 时的注意事项

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

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

  • Amazon SageMaker 训练、处理和管线:当您使用这些功能创建作业时,作业创建 API 无法提取会话中存在的 sourceIdentity。因此,从这些作业发出的任何 Amazon API 调用都不会在 CloudTrail 日志中记录 sourceIdentity

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

注意

使用 sourceIdentity 时存在以下例外:

  • 从 SageMaker 共享空间发出的 Amazon API 调用不会在 CloudTrail 日志中记录 sourceIdentity

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

启用 sourceIdentity

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

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

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

在使用 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 应用程序

使用以下代码启用传播用户配置文件名称作为 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

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

在 Amazon 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>]