SageMaker Studio 笔记本的访问控制和权限设置 - Amazon SageMaker

SageMaker Studio 笔记本的访问控制和权限设置

Amazon SageMaker Studio 使用文件系统和容器权限对 Studio 用户和笔记本进行访问控制和隔离。这是 Studio 笔记本与 SageMaker 笔记本实例的主要区别之一。本主题介绍如何设置权限以避免安全威胁、SageMaker 的默认操作以及客户如何自定义权限。有关 Studio 笔记本及其运行时环境的更多信息,请参阅使用 Amazon SageMaker Studio Classic 笔记本

SageMaker 应用程序权限

run-as 用户 是一个 POSIX 用户/组,用于在容器内运行 JupyterServer 应用程序和 KernelGateway 应用程序。

默认情况下,JupyterServer 应用程序的 run-as 用户为 sagemaker-user (1000)。该用户拥有 sudo 权限,可以安装 yum 软件包等依赖项。

默认情况下,KernelGateway 应用程序的 run-as 用户为 root (0)。该用户可以使用 pip/apt-get/conda 安装依赖项。

由于用户重新映射,这两个用户均无法访问资源或更改主机实例。

用户重新映射

SageMaker 执行 user-remapping,将容器内的用户映射到容器外主机实例上的用户。容器中的用户 ID 范围 (0 - 65535) 映射到实例上大于 65535 的非特权用户 ID。例如,容器内的 sagemaker-user (1000) 可能会映射到实例上的用户 (200001),其中括号中的数字是用户 ID。如果客户在容器内创建了新的用户/组,则无论用户/组 ID 如何,该用户/组都不会在主机实例上获得特权。容器的根用户也映射到实例上的非特权用户。有关更多信息,请参阅使用用户命名空间隔离容器

注意

由用户 sagemaker-user 创建的文件可能看起来像是由 sagemaker-studio (uid 65534) 所有。这是快速应用程序创建模式的副作用,在该模式下会预拉取 SageMaker 容器映像,使应用程序能在一分钟内启动。如果您的应用程序要求文件所有者 uid 和流程所有者 uid 相匹配,请要求客户服务部门将您的账号从映像预拉取特征中删除。

自定义映像权限

客户可以自带自定义 SageMaker 映像。这些映像可以指定不同的 run-as 用户/组来启动 KernelGateway 应用程序。客户可以在映像内部实施精细的权限控制,例如,禁用根访问权限或执行其他操作。用户重新映射在这里也适用。有关更多信息,请参阅 自带 SageMaker 映像

容器隔离

Docker 会保留容器可以使用的默认功能列表。SageMaker 不会添加其他功能。SageMaker 添加了特定路由规则,以阻止从容器向 Amazon EFS 和实例元数据服务 (IMDS) 发出请求。客户无法在容器中更改这些路由规则。有关更多信息,请参阅运行时权限和 Linux 功能

应用程序元数据访问权限

正在运行的应用程序所使用的元数据以只读权限挂载到容器上。客户无法在容器中修改此元数据。有关可用的元数据,请参阅获取 Studio Classic 笔记本和应用程序元数据

EFS 上的用户隔离

当您登录到 Studio 时,SageMaker 会为您的域创建一个 Amazon Elastic File System (EFS) 卷,该卷由域中的所有 Studio 用户共享。每个用户在 EFS 卷上都有自己的私有主目录。此主目录用于存储用户的笔记本、Git 存储库和其他数据。为了防止域中其他用户访问用户的数据,SageMaker 为该用户的配置文件创建了一个全局唯一的用户 ID,并将其用作该用户主目录的 POSIX 用户/组 ID。

EBS 访问权限

Amazon Elastic Block Store (Amazon EBS) 卷附加到主机实例,并在所有映像之间共享。它用于笔记本的根卷,并存储容器内生成的临时数据。删除运行笔记本的实例后,存储不会持久化。容器内的根用户无法访问 EBS 卷。

IMDS 访问权限

出于安全考虑,无法在 SageMaker Studio 中访问 Amazon Elastic Compute Cloud (Amazon EC2) 实例元数据服务 (IMDS)。有关 IMDS 的更多信息,请参阅实例元数据和用户数据