如何将 AWS SageMaker 提供给组织外部的人员使用?
Posted
技术标签:
【中文标题】如何将 AWS SageMaker 提供给组织外部的人员使用?【英文标题】:How does one make AWS SageMaker available to people outside their organization? 【发布时间】:2021-07-05 14:40:04 【问题描述】:我正在为我的组织外部的一个组设置 SageMaker,并且想知道我如何为这些用户提供对 SageMaker Studio(以及 SageMaker 将使用的任何相关 AWS 资源)的访问权限。 我们的想法是使用 SageMaker studio 来训练和测试模型。
理想情况下,如果我只是向他们发送一个他们登录的链接,然后被授予访问从我的 AWS 账户托管的 SageMaker 的权限,那就太好了。
我认为要授予临时访问权限,我需要为一组用户附加一个角色,并为该组附加一个策略 ,他们最终将此角色与 SageMaker 相关联。但是,我如何创建到 SageMaker 的链接,以便这些用户可以登录?
另一个选项是使用跨账户访问进行设置,因为我想要授予访问权限的人也有自己的 AWS 账户。但同样,如何生成链接以将这些用户定向到我的 AWS 账户上的 SageMaker?
根据SageMaker Onboarding,似乎有两个选项:
-
AWS SSO 身份验证
-
IAM 身份验证
我不理解第二种方法,因为这不意味着用户无论如何都必须以 root 身份登录控制台,然后才能拥有完全访问权限。我可以编辑附加到 IAM 用户的策略,但这引出了另一个问题:
...SageMaker 是否预先制定了包含其相关 AWS 服务的策略?例如,SageMaker 将使用 S3 进行存储,使用 EC2 进行处理;我需要在策略中单独设置这些,还是可以简单地使用 SageMaker 策略,默认情况下将包含所有这些依赖项?
【问题讨论】:
【参考方案1】:首先,您可以生成“一次性”(称为预签名)URL,无需任何 AWS 凭证即可用于访问 SageMaker Studio 用户配置文件。这些 URls 的有效期最长为 5 分钟,并且可以通过单个 AWS API 调用生成。
向您的用户提供 Studio 访问权限的一种方法是设置一个服务,该服务可以验证您的 Studio 用户,然后调用 CreatePresignedDomainUrl SageMaker API 方法将生成的预签名 URL 发送回用户。
或者,您也可以使用 AWS SSO,它可以为您完成大部分繁重的工作,尤其是在您希望与单点登录服务集成时。 AWS SSO 与 SageMaker Studio 集成,您可以将 Studio 用户配置文件分配给您的注册用户。然后,您的用户可以通过您的单点登录服务启动 Studio,而无需登录 AWS 控制台。
另一种方法是使用 IAM 联合,您基本上可以向您的用户提供对 AWS API 和/或控制台的访问权限,这些用户由(外部)身份提供商进行身份验证。联合用户可以担任特定角色以使用 AWS API 或管理控制台进行操作。要访问 SageMaker Studio,用户只需要拥有允许他们自己创建预签名 URL 的 CreatePresignedDomainUrl 访问策略。如果您想隔离您的 SageMaker 用户配置文件并确保每个联合用户只能访问分配给他们的用户配置文件,请参阅以下blog post 了解更多信息。
最后,请注意,一旦用户登录到 Studio,为特定用户配置文件配置的执行角色将决定 Studio 用户可以访问和能够执行的操作(例如,启动 SageMaker 培训作业、部署模型,访问 S3 等)。因此,您无需为联合用户使用的 IAM 用户或角色设置这些策略。
【讨论】:
以上是关于如何将 AWS SageMaker 提供给组织外部的人员使用?的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在 AWS Sagemaker 推理中添加复杂的预处理
AWS SageMaker:使用托管在 S3 中的经过训练的模型创建终端节点
如何修复 aws 区域错误“ValueError:必须使用 SageMaker 支持的区域设置本地 AWS 配置”