更新时间:2023-12-15 GMT+08:00

权限管理

ModelArts作为一个完备的AI开发平台,支持用户对其进行细粒度的权限配置,以达到精细化资源、权限管理之目的。这类特性在大型企业用户的使用场景下很常见,但对个人用户则显得复杂而意义不足,所以建议个人用户在使用ModelArts时,参照个人用户快速配置ModelArts访问权限来进行初始权限设置。

您是否需要阅读本文档?

如果下述问题您的任何一个回答为“是”,则需要阅读此文档

  • 您是企业用户,且
    • 存在多个部门,且需要限定不同部门的用户只能访问其专属资源、功能
    • 存在多种角色(如 管理员、算法开发者、应用运维),希望限制不同角色只能使用特定功能
    • 逻辑上存在多套“环境”且相互隔离(如 开发环境、预生产环境、生产环境),并限定不同用户在不同环境上的操作权限
    • 其他任何需要对特定子用户(组)做出特定权限限制的情况
  • 您是个人用户,但已经在IAM创建多个子用户,且期望限定不同子用户所能使用的ModelArts功能、资源不同
  • 希望了解ModelArts的权限控制能力细节,期望理解其概念和实操方法

ModelArts的大部分权限管理能力均基于统一身份认证服务(Identity and Access Management,简称IAM)来实现,在您继续往下阅读之前,强烈建议您先行熟悉IAM基本概念,如果能完整理解IAM的所有概念,将更加有助于您理解本文档。

为了支持客户对ModelArts的权限做精细化控制,提供了3个方面的能力来支撑,分别是:权限、委托 和 工作空间。下面分别讲解。

理解ModelArts的权限与委托

图1 权限管理抽象

ModelArts与其他服务类似,对外暴露的每个功能,都通过IAM的权限来进行控制。比如,用户(此处指IAM子用户,而非租户)希望在ModelArts创建训练作业,则该用户必须拥有 "modelarts:trainJob:create" 的权限才可以完成操作(无论界面操作还是API调用)。关于如何给一个用户赋权(准确讲是需要先将用户加入用户组,再面向用户组赋权),可以参考IAM的文档《权限管理》。

而ModelArts还有一个特殊的地方在于,为了完成AI计算的各种操作,AI平台在任务执行过程中需要访问用户的其他服务,典型的就是训练过程中,需要访问OBS读取用户的训练数据。在这个过程中,就出现了ModelArts“代表”用户去访问其他云服务的情形。从安全角度出发,ModelArts代表用户访问任何云服务之前,均需要先获得用户的授权,而这个动作就是一个“委托”的过程。用户授权ModelArts再代表自己访问特定的云服务,以完成其在ModelArts平台上执行的AI计算任务。

综上,对于图1 权限管理抽象可以做如下解读:

  • 用户访问任何云服务,均是通过标准的IAM权限体系进行访问控制。用户首先需要具备相关云服务的权限(根据您具体使用的功能不同,所需的相关服务权限多寡亦有差异)。
  • 权限:用户使用ModelArts的任何功能,亦需要通过IAM权限体系进行正确权限授权。
  • 委托:ModelArts上的AI计算任务执行过程中需要访问其他云服务,此动作需要获得用户的委托授权。

ModelArts权限管理

默认情况下,管理员创建的IAM用户没有任何权限,需要将其加入用户组,并给用户组授予策略或角色,才能使得用户组中的用户获得对应的权限,这一过程称为授权。授权后,用户就可以基于授予的权限对云服务进行操作。

ModelArts部署时通过物理区域划分,为项目级服务,授权时“选择授权范围方案”可以选择“指定区域项目资源”,如果授权时指定了区域对应的项目,则该权限仅对此项目生效;简单的做法是直接选择“所有资源”。

ModelArts也支持企业项目,所以选择授权范围方案时,也可以指定企业项目。具体操作参见《创建用户组并授权》。

IAM在对用户组授权的时候,并不是直接将具体的某个权限进行赋权,而是需要先将权限加入到“策略”当中,再把策略赋给用户组。为了方便用户的权限管理,各个云服务都提供了一些预置的“系统策略”供用户直接使用。如果预置的策略不能满足您的细粒度权限控制要求,则可以通过“自定义策略”来进行精细控制。

表1列出了ModelArts的所有预置系统策略
表1 ModelArts系统策略

策略名称

描述

策略类别

ModelArts FullAccess

ModelArts管理员用户,拥有所有ModelArts服务的权限

系统策略

ModelArts CommonOperations

ModelArts操作用户,拥有所有ModelArts服务操作权限除了管理专属资源池的权限

系统策略

ModelArts Dependency Access

ModelArts服务的常用依赖服务的权限

系统策略

通常来讲,只给管理员开通“ModelArts FullAccess”,如果不需要太精细的控制,直接给所有用户开通“ModelArts CommonOperations”即可满足大多数小团队的开发场景诉求。如果您希望通过自定义策略做深入细致的权限控制,请阅读ModelArts的IAM权限控制详解

ModelArts的权限不会凌驾于其他服务的权限之上,当您给用户进行ModelArts赋权时,系统不会自动对其他相关服务的相关权限进行赋权。这样做的好处是更加安全,不会出现预期外的“越权”,但缺点是,您必须同时给用户赋予不同服务的权限,才能确保用户可以顺利完成某些ModelArts操作。

举例,如果用户需要用OBS中的数据进行训练,当已经为IAM用户配置ModelArts训练权限时,仍需同时为其配置对应的OBS权限(读、写、列表),才可以正常使用。其中OBS的列表权限用于支持用户从ModelArts界面上选择要进行训练的数据路径;读权限主要用于数据的预览以及训练任务执行时的数据读取;写权限则是为了保存训练结果和日志。

  • 对于个人用户或小型组织,一个简单做法是为IAM用户配置“作用范围”“全局级服务”“Tenant Administrator”策略,这会使用户获得除了IAM以外的所有用户权限。当然,在获得便利的同时,由于用户的权限较大,会存在相对较大的安全风险,需谨慎使用。(对于个人用户,其默认IAM帐号就已经属于admin用户组,且具备Tenant Administrator权限,无需额外操作)
  • 当您需要限制用户操作,仅为ModelArts用户配置OBS相关的最小化权限项,具体操作请参见OBS权限管理。对于其他云服务,也可以进行精细化权限控制,具体请参考对应的云服务文档。

ModelArts委托授权

前文已经介绍,ModelArts在执行AI计算任务过程中,需要“代表”用户去访问其他云服务,而此动作需要提前获得用户的授权。在IAM权限体系下,此类授权动作是通过“委托”来完成。

关于委托的基本概念及操作可以参考对应的IAM文档《委托其他云服务管理资源》。

为了简化用户的委托授权操作,ModelArts增加了自动配置委托授权的支持,用户仅需在ModelArts控制台的“全局配置”页面中,为自己或特定用户配置委托即可。

  • 只有具备IAM委托管理权限的用户才可以进行此项操作,通常是IAM admin用户组的成员才具备此权限。
  • 目前ModelArts的委托授权操作是分区域操作的,这意味着您需要在每个您所用到的区域均执行委托授权操作。
图2 全局配置

在ModelArts控制台的“全局配置”页面,单击“添加授权”后,系统会引导您为特定用户或所有用户进行委托配置,通常默认会创建一个名为“modelarts_agency_<用户名>_随机ID”的委托条目。在权限配置的区域,您可以选择ModelArts提供的预置配置,也可以自定义选择您所授权的策略。当然如果这两种形态对于您的诉求均过于粗犷,您也可以直接在IAM管理页面里创建完全由您进行精细化配置的委托(需要委托给ModelArts服务),然后在此页面的委托选择里使用“已有委托”“”(而非“新增委托”)。

至此,您应该已经发现了一个细节,ModelArts在使用委托时,是将其与用户进行关联的,用户与委托的关系是多对1的关系。这意味着,如果两个用户需要配置的委托一致,那么不需要为每个用户都创建一个独立的委托项,只需要将两个用户都“指向”同一个委托项即可。

图3 用户与委托对应关系

每个用户必须关联委托才可以使用ModelArts,但即使委托所赋之权限不足,在API调用之初也不会报错,只有到系统具体使用到该功能时,才会发生问题。例如,用户在创建训练任务时打开了“消息通知”,该功能依赖SMN委托授权,但只有训练任务运行过程中,真正需要发送消息时,系统才会“出错”,而有些错误系统会选择“忽略”,另一些错误则可能导致任务直接失败。当您做深入的“权限最小化”限制时,请确保您在ModelArts上将要执行的操作仍旧有足够的权限。

严格授权模式

严格授权模式是指在IAM中创建的子用户必须由帐号管理员显式在IAM中授权,才能访问ModelArts服务,管理员用户可以通过授权策略为普通用户精确添加所需使用的ModelArts功能的权限。

相对的,在非严格授权模式下,子用户不需要显式授权就可以使用ModelArts,管理员需要在IAM上为子用户配置Deny策略来禁止子用户使用ModelArts的某些功能。

帐号的管理员用户可以在“全局配置”页面修改授权模式。

如无特殊情况,建议优先使用严格授权模式。在严格授权模式下,子用户要使用ModelArts的功能都需经过授权,可以更精确的控制子用户的权限范围,达成权限最小化的安全策略。

用工作空间限制资源访问

工作空间是ModelArts面向企业客户提供的一个高阶功能,用于进一步将用户的资源划分在多个逻辑隔离的空间中,并支持以空间维度进行访问的权限限定。目前工作空间功能是“受邀开通”状态,作为企业用户您可以通过您对口的技术支持经理申请开通。

在开通工作空间后,系统会默认为您创建一个“default”空间,您之前所创建的所有资源,均在该空间下。当您创建新的工作空间之后,相当于您拥有了一个新的“ModelArts分身”,您可以通过菜单栏的左上角进行工作空间的切换,不同工作空间中的工作互不影响。

创建工作空间时,必须绑定一个企业项目。多个工作空间可以绑定到同一个企业项目,但一个工作空间不可以绑定多个企业项目。借助工作空间,您可以对不同用户的资源访问和权限做更加细致的约束,具体为如下两种约束:

  • 只有被授权的用户才能访问特定的工作空间(在创建、管理工作空间的页面进行配置),这意味着,像数据集、算法等AI资产,均可以借助工作空间做访问的限制。
  • 在前文提到的权限授权操作中,如果“选择授权范围方案”时设定为“指定企业项目资源”,那么该授权仅对绑定至该企业项目的工作空间生效。
  • 工作空间的约束与权限授权的约束是叠加生效的,意味着对于一个用户,必须同时拥有工作空间的访问权和训练任务的创建权限(且该权限覆盖至当前的工作空间),他才可以在这个空间里提交训练任务。
  • 对于已经开通企业项目但没有开通工作空间的用户,其所有操作均相当于在“default”企业项目里进行,请确保对应权限已覆盖了名为default的企业项目。
  • 对于未开通企业项目的用户,不受上述约束限制。

本章小结

对于ModelArts的权限管理,总结了如下几条关键点:

  • 如果您是个人用户,则不需要考虑细粒度权限问题,您的账户默认具备使用ModelArts的所有权限。
  • ModelArts平台的所有功能均通过IAM体系进行了权限管控,您可以通过标准的IAM授权动作,来对特定用户进行精细化的权限管控。
  • 对于所有用户(包括个人用户),需要完成对ModelArts的委托授权(ModelArts > 全局配置 > 添加授权),才能使用特定的功能,否则会造成您的操作出现不可预期的错误。
  • 对于开通了企业项目的用户,可以进一步申请开通ModelArts的工作空间,通过组合使用基础授权和工作空间,来达成更加复杂的权限控制目的。