AWS 的云安全是重中之重。 亚马逊SageMaker Studio 提供 各种机制 使用与 AWS 安全服务的集成来保护您的数据和代码,例如 AWS身份和访问管理 (我是), AWS密钥管理服务 (AWS KMS),或网络隔离 亚马逊虚拟私有云 (Amazon VPC)。
金融服务等高度监管行业的客户可以 仅在 VPC 中设置 Studio 模式以启用网络隔离并禁用 Studio 笔记本的 Internet 访问。 您可以使用 IAM 与 Studio 的集成来控制哪些用户有权访问资源,例如 Studio 笔记本、Studio IDE 或 亚马逊SageMaker 培训工作。
一个流行的用例是 限制对 Studio IDE 的访问 仅对来自指定网络 CIDR 范围或指定 VPC 内的用户。 您可以通过实施来实现 IAM 基于身份的 SageMaker 策略 并将这些策略附加到需要这些权限的 IAM 用户或组。 但是,SageMaker 域必须配置为 IAM认证方式,因为 IAM 基于身份的策略在 AWS单一登录 (单点登录) 认证方式.
许多客户使用 AWS SSO 来实现集中的劳动力身份控制并提供一致的用户登录体验。 这篇文章展示了如何实施此用例,同时保持 AWS SSO 功能以访问 Studio。
解决方案概述
当您在仅 VPC 模式下设置 SageMaker 域并指定子网和安全组时,SageMaker 创建 弹性网络接口 (ENI) 与指定子网中的安全组相关联。 ENI 允许您的训练容器连接到您的 VPC 中的资源。
在此模式下,完全禁用笔记本电脑的直接互联网访问,所有流量都通过私有 VPC 中的 ENI 进行路由。 这还包括从 Studio UI 小部件和界面(例如实验管理、自动驾驶仪和模型监视器)到它们各自的后端 SageMaker API 的流量。 AWS 建议使用 VPC only 模式对 Studio 的网络访问进行细粒度控制。
第一个挑战是,即使 Studio 的部署没有互联网连接,Studio IDE 仍然可以从任何地方访问,前提是可以访问 AWS管理控制台 Studio 被授予 IAM 委托人。 如果您想将 Studio 与公共网络完全隔离并将所有通信包含在严格控制的私有 VPC 中,则这种情况是不可接受的。
要解决这一挑战并禁止对 Studio IDE 的任何访问,除了指定的 VPC 或 CIDR 范围之外,您可以使用 CreatePresignedDomainUrl SageMaker API. 用于调用此 API 的 IAM 角色或用户定义了访问 Studio 的权限。 现在您可以使用 IAM 基于身份的策略来实施所需的访问配置。 例如,要启用仅来自指定 VPC 的访问,请将以下条件添加到 IAM 策略,与 IAM 委托人关联,用于生成预签名域 URL:
要仅允许从指定的一个或多个 VPC 终端节点进行访问,请指定以下条件:
使用以下条件限制来自指定 CIDR 范围的访问:
第二个挑战是,基于 IAM 的访问控制仅在 SageMaker 域配置为 IAM 身份验证模式时才起作用; 当以 AWS SSO 模式部署 SageMaker 域时,您无法使用它。 下一节将介绍如何应对这些挑战并通过 AWS SSO 访问 Studio 来实施基于 IAM 的访问控制。
架构概述
Studio 作为 SAML 应用程序发布,分配给特定的 SageMaker Studio 用户配置文件。 用户可以直接从 AWS SSO 门户方便地访问 Studio,如以下屏幕截图所示。
该解决方案集成了 自定义 SAML 2.0 应用程序 作为触发 Studio 用户身份验证的机制。 它要求自定义 SAML 应用程序配置有 Amazon API网关 端点 URL 作为其断言消费者服务 (ACS),并且需要包含 AWS SSO 用户 ID 以及 SageMaker 域 ID 的映射属性。
API 网关端点调用 AWS Lambda 解析 SAML 响应以提取域 ID 和用户 ID 并使用它们生成 Studio 预签名 URL 的函数。 Lambda 函数最终通过 HTTP 302 响应执行重定向以在 Studio 中登录用户。
IAM 策略控制允许 Studio 用户登录的网络环境,其中包括上一节中所述的限制条件。 此 IAM 策略附加到 Lambda 函数。 IAM 策略包含调用 sagemaker:CreatePresignedDomainURL
仅适用于特定用户个人资料的 API:
下图显示了解决方案体系结构。
该解决方案将 SageMaker 域部署到您的私有 VPC 中,并且 VPC端点 通过私有连接访问 Studio、SageMaker 运行时和 SageMaker API,无需互联网网关。 VPC 端点配置为启用私有 DNS (PrivateDnsEnabled=True
) 关联一个 私人托管区 与您的 VPC。 这使 Studio 能够使用默认的公共 DNS 名称访问 SageMaker API api.sagemaker.<Region>.amazonaws.com
解析为端点的私有 IP 地址,而不是使用 VPC 端点 URL。
如果您想访问任何其他 AWS 服务,则需要将 VPC 端点添加到您的 VPC 亚马逊简单存储服务 (Amazon S3), Amazon Elastic Container注册 (亚马逊 ECR), AWS安全令牌服务 (AWS STS), AWS CloudFormation或 AWS 代码提交.
您可以使用附加到 Lambda 函数执行角色的 IAM 策略完全控制用于生成预签名 URL 和任何其他 API 调用的权限,或通过以下方式控制对任何使用的 AWS 服务的访问 VPC端点策略. 有关使用 IAM 策略控制对 Studio 和 SageMaker API 的访问的示例,请参阅 使用基于身份的策略控制对 SageMaker API 的访问.
尽管该解决方案要求以 IAM 模式部署 Studio 域,但它确实允许使用 AWS SSO 作为最终用户登录 Studio 的机制。
以下小节包含主要解决方案组件的详细说明。
API网关
API 网关端点充当在自定义 SAML 2.0 应用程序中配置的应用程序 ACS URL 的目标。 端点是私有的,并且有一个名为 /saml
以及将集成请求配置为 Lambda 代理的 POST 方法。 该解决方案使用一个 VPC 端点和一个已配置的 com.amazonaws.<region>.execute-api
从 VPC 中调用此 API 端点的 DNS 名称。
AWS单点登录
使用 API 网关端点 URL 配置自定义 SAML 2.0 应用程序 https:/{ restapi-id}.execute-api.amazonaws.com/saml
作为其应用程序 ACS URL,并使用具有以下要求的属性映射:
- 用户标识符:
- 应用程序中的用户属性 - 用户名
- 在 AWS SSO 中映射用户属性 –
${user:AD_GUID}
- SageMaker 域 ID 标识符:
- 应用程序中的用户属性 –
domain-id
- 在 AWS SSO 中映射用户属性 – Studio 实例的域 ID
- 应用程序中的用户属性 –
该应用程序通过预置名称与 AWS SSO 用户 ID 相同的 Studio 用户配置文件来实现对 AWS SSO 用户的访问控制。
拉姆达函数
该解决方案将 Lambda 函数配置为 API 网关的调用点 /saml
资源。 该函数解析 SAMLResponse
由 AWS SSO 发送,提取 domain-id
以及用户名,并调用 createPresignedDomainUrl
SageMaker API 用于检索 Studio URL 和令牌并重定向用户以使用 HTTP 302 响应登录。 Lambda 函数有一个特定的 IAM 策略附加到它的执行角色,允许 sagemaker:createPresignedDomainUrl
仅当从特定网络 CIDR 范围请求时才使用 VpcSourceIp
状态。
Lambda 函数没有任何逻辑来验证 SAML 响应,例如检查签名。 但是,由于用作 ACS 的 API 网关端点是私有的或仅供内部使用,因此对于此概念验证环境而言,它不是强制性的。
部署解决方案
GitHub存储库 提供端到端解决方案的完整源代码。
要部署该解决方案,您必须拥有 AWS 账户的管理员(或高级用户)权限,并安装 AWS命令行界面 (AWS CLI)和 AWS SAM CLI 和最低限度 Python的3.8.
该解决方案支持部署到三个 AWS 区域: eu-west-1
, eu-central-1
及 us-east-1
. 确保选择这些区域之一进行部署。
要开始测试解决方案,您必须从解决方案的 GitHub 自述文件:
- 如果您没有配置 AWS SSO,请设置它。
- 使用 SAM 应用程序部署解决方案。
- 创建新的自定义 SAML 2.0 应用程序。
完成部署步骤后,您可以继续进行解决方案测试。
测试解决方案
该解决方案模拟两个用例来演示 AWS SSO 和 SageMaker 基于身份的策略的用法:
- 积极的用例 – 用户通过 VPC 端点从指定的 CIDR 范围内访问 Studio
- 负面用例 – 用户从公共 IP 地址访问 Studio
为了测试这些用例,该解决方案创建了三个 亚马逊弹性计算云 (亚马逊 EC2)实例:
- 私人主机 – 私有子网中能够访问 Studio(您的本地安全环境)的 EC2 Windows 实例
- 堡垒主机 – 公共子网中的 EC2 Linux 实例,用于建立到专用网络上专用主机的 SSH 隧道
- 公共主机 – 公共子网中的 EC2 Windows 实例,用于证明用户无法从未经授权的 IP 地址访问 Studio
从授权网络访问 Test Studio
按照以下步骤执行测试:
- 要访问专用网络上的 EC2 Windows 实例,请运行作为 SAM 输出键的值提供的命令
TunnelCommand
. 确保参数中指定的密钥对的私钥在SSH tunnel命令运行的目录中。 该命令创建一个 SSH隧道 从本地计算机上localhost:3389
到专用网络上的 EC2 Windows 实例。 请参阅以下示例代码: - 在您的本地台式机或笔记本电脑上,使用以下命令打开一个新的 RDP 连接(例如使用 Microsoft 远程桌面)
localhost
作为目标远程主机。 此连接通过堡垒主机隧道连接到私有 EC2 Windows 实例。 使用用户名Administrator
和堆栈输出中的密码SageMakerWindowsPassword
. - 从远程桌面打开 Firefox Web 浏览器。
- 使用与您指定为
ssoUserName
参数。 - 选择 SageMaker 安全演示 来自 AWS SSO 门户的 AWS SSO 应用程序。
您将在新的浏览器窗口中重定向到 Studio IDE。
从未经授权的网络访问 Test Studio
现在按照以下步骤模拟来自未授权网络的访问:
- 在提供的 IP 上打开一个新的 RDP 连接
SageMakerWindowsPublicHost
SAML 输出。 - 从远程桌面打开 Firefox Web 浏览器。
- 使用与指定为
ssoUserName
参数。 - 选择 SageMaker 安全演示 来自 AWS SSO 门户的 AWS SSO 应用程序。
这次您收到未经授权的访问消息。
清理
为避免收费,您必须从您的 AWS 账户中删除所有解决方案预置和手动创建的资源。 按照解决方案中的说明进行操作 自述文件.
结论
我们演示了通过在最终用户和 Studio 之间引入中间件身份验证层,我们可以控制允许用户从中访问 Studio 的环境,并明确阻止所有其他未经授权的环境。
为了进一步加强安全性,您可以将 IAM 策略添加到用户角色以防止从控制台访问 Studio。 如果你使用 AWS组织,您可以执行以下操作 服务控制策略 对于需要访问 Studio 的组织单位或帐户:
虽然本文中描述的解决方案使用 API 网关和 Lambda,但您可以探索其他方式,例如 EC2 实例与 实例角色 使用与描述相同的权限验证工作流程,甚至使用独立系统来处理用户身份验证和授权并生成 Studio 预签名 URL。
深入阅读
保护对 Studio 的访问是一个活跃的研究主题,并且还有其他关于类似方法的相关帖子。 请参阅 AWS 机器学习博客上的以下帖子,了解有关您可以使用的其他服务和架构的更多信息:
作者简介
杰罗姆·巴切莱特 是 Amazon Web Services 的解决方案架构师。 他热衷于帮助客户从 AWS 中获得最大价值以实现他们的业务目标。 Jerome 在数据保护和数据安全解决方案方面拥有超过 10 年的经验。 除了在云端,Jerome 还喜欢在瑞士日内瓦地区与妻子和 2 个女儿一起旅行和享受美好时光。
叶夫根尼·伊林(Yevgeniy Ilyin) 是AWS的解决方案架构师。 他在软件开发和解决方案体系结构的各个级别都有20多年的经验,并且使用了从COBOL和Assembler到.NET,Java和Python的编程语言。 他开发和编码云原生解决方案,重点是大数据,分析和数据工程。
- '
- "
- 100
- 7
- 9
- 关于
- ACCESS
- 账号管理
- 操作
- 要积极。
- 地址
- 所有类型
- Amazon
- Amazon EC2
- 亚马逊SageMaker
- 亚马逊网络服务
- 分析
- API
- APIs
- 应用领域
- 架构
- 国家 / 地区
- 认证
- 授权
- 自动驾驶仪
- AWS
- 作为
- 大数据运用
- 博客
- 浏览器
- 商业
- 呼叫
- 例
- 挑战
- 挑战
- 收费
- 云端技术
- 云本土
- 码
- 沟通
- 计算
- 配置
- 地都
- 连接方式
- 安慰
- 消费者
- 容器
- 集装箱
- 资历
- 合作伙伴
- data
- 数据保护
- 数据安全
- 研发支持
- DNS
- 不会
- 效果
- 端点
- 工程师
- 环境
- 例子
- 执行
- 锻炼
- 体验
- 实验
- 提取物
- 终于
- 金融
- 金融服务
- 火狐
- 姓氏:
- 专注焦点
- 遵循
- ,
- 功能
- 生成
- GIF
- 创新中心
- How To
- HTTPS
- IAM
- 身分
- 实施
- 实施
- 行业
- 积分
- 网络
- IP
- IP地址
- 隔离
- IT
- 爪哇岛
- 工作机会
- 保持
- 键
- 语言
- 学习用品
- 学习
- Line
- Linux的
- 本地
- 机器学习
- 颠覆性技术
- 微软
- 模型
- 净
- 网络
- 网络访问
- 笔记本电脑
- 优惠精选
- 打开
- 其他名称
- 密码
- 政策
- 政策
- 热门
- 门户网站
- 帖子
- 功率
- 校长
- 私立
- 私钥
- 本人简介
- 代码编程
- 编程语言
- 证明
- 概念验证
- 保护
- 保护
- 提供
- 提供
- 代理
- 国家
- 蟒蛇
- 质量
- 范围
- 重定向
- 岗位要求
- 研究
- 资源
- 资源
- 响应
- 运行
- sagemaker
- 保安
- 特色服务
- 服务
- 集
- 类似
- 简易
- 软件
- 软件开发
- 解决方案
- 开始
- 个人陈述
- 存储
- 支持
- 支持
- 瑞士
- 系统
- 目标
- test
- 测试
- 通过
- 次
- 象征
- 交通
- 产品培训
- ui
- 用户
- 折扣值
- 在线会议
- 卷筒纸
- 网页浏览器
- Web服务
- 窗户
- 中
- 也完全不需要
- 工作流程
- 劳动力
- 合作
- 年