机器学习(ML)管理员在维护ML工作负载的安全性和完整性方面发挥着关键作用。他们的主要重点是确保用户以最高安全性操作,遵守最小特权原则。然而,容纳不同用户角色的不同需求并创建适当的许可策略有时会妨碍敏捷性。为了解决这一挑战,AWS在2022年12月推出了Amazon SageMaker角色管理器。SageMaker角色管理器是一个强大的工具,可用于快速开发基于角色的用户,这些角色可以轻松定制以满足特定要求。
使用SageMaker角色管理器,管理员可以高效地定义适用于不同用户群体的基于角色的用户。这种方法确保个人仅访问其任务所必需的资源和操作,降低未经授权的行动或违规风险。SageMaker角色管理器还允许进行细粒度的定制。ML管理员可以通过修改与每个用户角色关联的权限来定制这些角色,以满足特定要求。这种灵活性确保权限与个人用户的任务和责任完全对齐,提供了强大的安全框架,同时适应了独特的用例。
SageMaker角色管理器目前在所有商用区域的Amazon SageMaker控制台上可用。今天,我们推出了通过AWS Cloud Development Kit(AWS CDK)在几分钟内定义自定义许可的能力。这解决了更广泛采用的关键障碍,因为ML管理员现在可以通过编程方式自动化其任务。借助AWS CDK的强大功能,ML管理员可以简化工作流程,减少手动工作量,并确保管理其ML基础架构的权限的一致性。
解决方案概述
随着SageMaker角色管理器CDK的发布,我们推出了两种新的基础架构即代码(IaC)功能:
- 为ML用户创建细粒度许可
- 通过Amazon SageMaker Pipelines、AWS Lambda和其他AWS服务为自动作业创建细粒度许可
您可以为ML用户(例如数据科学家、ML工程师或数据工程师)创建细粒度的AWS身份和访问管理(IAM)角色。SageMaker角色管理器提供了预定义的用户角色和ML活动组合,以简化您的权限生成过程,使您的ML从业者能够以最低特权权限执行其职责。对于安全访问您的ML资源,SageMaker角色管理器允许您指定Amazon Virtual Private Cloud(Amazon VPC)资源和AWS Key Management Service(AWS KMS)加密密钥的网络和加密权限。此外,您还可以通过附加自己的客户管理策略来自定义权限。
SageMaker角色管理器CDK让您在几分钟内为SageMaker用户定义自定义许可。它配备了一组不同用户类型和ML活动的预定义策略模板。用户类型表示需要在SageMaker中执行ML活动的不同类型的用户,例如数据科学家或MLOps工程师。ML活动是一组权限,可完成常见的ML任务,例如运行Amazon SageMaker Studio应用程序或管理实验、模型或管道。在选择用户角色类型和ML活动集之后,SageMaker角色管理器CDK自动创建所需的IAM角色和策略,您可以将其分配给SageMaker用户。类似地,您还可以创建具有细粒度权限的IAM角色,用于运行SageMaker Pipelines等自动作业。
先决条件
要开始使用SageMaker角色管理器CDK,您需要完成以下先决条件步骤:
- 为您的ML管理员设置角色,以创建和管理用户角色,以及这些用户的IAM权限。有关示例管理员策略,请参阅《使用Amazon SageMaker角色管理器在几分钟内定义自定义权限》博客文章中的先决条件部分。
- 创建一个仅计算的用户角色(如果您没有任何角色),以传递给作业和端点。有关设置该角色的说明,请参阅使用角色管理器。
- 设置您的AWS CDK开发环境。有关说明,请参阅入门指南。
安装和运行SageMaker角色管理器CDK
完成以下步骤设置SageMaker角色管理器CDK:
-
创建您的AWS CDK应用程序并为其命名,例如
RoleManager。 -
导航到
RoleManager文件夹并运行以下命令以创建一个空的typescript AWS CDK项目:cdk init app --language typescript -
打开
package.json,并按以下代码所示添加突出显示的包:"dependencies": { "aws-cdk-lib": "2.85.0", "@cdklabs/cdk-aws-sagemaker-role-manager": "0.0.15", "constructs": "^10.0.0", "source-map-support": "^0.5.21" } -
运行以下命令安装新的
cdk-aws-sagemaker-role-manager包:npm install -
导航到lib文件夹,并用以下代码替换
role_manager_stack.ts:import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as iam from 'aws-cdk-lib/aws-iam'; import { Activity } from '@cdklabs/cdk-aws-sagemaker-role-manager'; export class RoleManagerStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); const activity = Activity.manageJobs(this, 'id1', { rolesToPass: [iam.Role.fromRoleName(this, 'passRoleId', 'passRoleName')], }); activity.createRole(this, 'newRoleId', 'newRoleName', newRoleDescription'); } } -
根据您的角色创建要求替换
passRoleId、passRoleName、newRoleId、newRoleName和newRoleDescription。 -
导航回AWS CDK应用程序主文件夹,然后运行以下命令以验证生成的AWS CloudFormation模板:
cdk synth -
最后,运行以下命令在AWS帐户中运行CloudFormation堆栈:
cdk deploy
您应该看到一个类似于以下屏幕截图的 AWS CDK 部署输出。

更多的 SageMaker Role Manager CDK 示例可在以下 GitHub 存储库中找到。
ML persona 和 activity CDK 参考
管理员可以使用 ML activity 类的其中一个 ML activity 静态函数来定义 ML 活动。有关最新版本的列表,请参阅 ML activity 参考。
ML persona 类支持以下方法:
- customizeVPC(subnets, securityGroups) – 自定义支持 persona 的所有活动的 VPC。
- customizeKMS(dataKeys, volumeKeys) – 自定义支持 persona 的所有活动的 KMS 密钥。
- createRole(scope, id, roleNameSuffix, roleDescription) – 创建一个角色,该角色具有与 UI 中具有 ID 的范围中的 persona 的活动权限类似的权限,名称为
SageMaker-${roleNameSuffix},并可选择传递的角色描述。 - grantPermissionsTo(identity) – 将 persona 的活动权限授予身份。传递的身份可以是角色或与角色关联的 AWS 资源(例如,具有描述 Lambda 函数可以访问哪些资源的 Lambda 函数角色的 Lambda 函数)。
- grantPermissionsTo() – 更新传递的身份的角色,以具有 ML activity 中指定的权限。
ML activity 类支持与 ML personas 相同的一组函数;但是,区别在于使用此接口创建 IAM 角色时,ML activity 仅限于单个活动。
结论
SageMaker Role Manager 使您能够基于 personas、预构建的 ML 活动和自定义策略创建自定义角色,从而大大减少所需的时间。现在,通过这种最新的 AWS CDK 支持,定义角色的能力进一步扩展,以支持基础架构即代码。这使得 ML 从业者可以在 SageMaker 中以编程方式工作,提高效率并实现无缝集成到他们的工作流程中。
我们希望听到您如何使用此新功能。尝试使用 SageMaker Role Manager 的新 AWS CDK 支持并向我们发送您的反馈!
有关如何使用 SageMaker Role Manager 的更多信息,请参阅 SageMaker Role Manager 开发人员指南。