资源目录支持资源级鉴权,您可以通过RAM或云SSO对资源目录进行分级管理。
业务场景
对于大型集团公司,资源目录管理账号通常由集团云管或运维团队负责管理。集团往往有多个子公司,集团云管团队希望将部分管理权下放,由各子公司的管理员管理对应子公司的目录组织,各子公司之间互不影响,从而在隔离的前提下,提升管理效率和灵活度。
本文将提供一个示例,假设Y公司有两个业务部门,分别为业务部门1和业务部门2,希望各业务的运维管理员管理各自业务的账号结构、员工权限等。具体如下表所示。
组织结构 | 管理员 | 职责 |
安全管理团队 | Mike | Mike为公司中心安全团队负责人,需要做全局集中的安全管控,即全局的管控策略管理。 |
业务部门1 | Alice | Alice为业务部门1的运维管理员,仅能在业务部门1内创建资源账号和组织结构、配置管控策略、配置成员的消息通知联系人,不能操作和影响其他业务。 |
业务部门2 | Bob | Bob为业务部门2的运维管理员,仅能在业务部门2内创建资源账号和组织结构、配置管控策略、配置成员的消息通知联系人,不能操作和影响其他业务。 |
解决方案
分级管理主要解决操作范围和操作行为的权限细化管控。
资源目录目前已经支持RAM资源级鉴权,您可以通过Resource
设置操作范围,通过Action
设置操作行为。资源目录具体的授权信息,请参见资源目录鉴权列表。
以下两种实施方案,您可以根据实际情况任选其一。
方案一:基于RAM实现分级管理
开通资源目录。
Y公司企业管理员(如财务同学)申请阿里云账号并进行企业实名认证,然后开通资源目录,并创建两个名为
业务部门1
和业务部门2
的资源夹。具体操作,请参见开通资源目录、创建资源夹。开通资源目录的账号即为管理账号。
创建RAM用户
Mike
,并授予配置全局管控策略的权限。管理账号登录RAM控制台,创建一个名为
Mike
的RAM用户,为其创建访问密钥(AccessKey),然后为其授予以下自定义权限策略。具体操作,请参见创建RAM用户、创建自定义权限策略、为RAM用户授权。自定义权限策略内容:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "resourcemanager:*ControlPolicy*", "resourcemanager:*ControlPolicies*" ], "Resource": [ "acs:resourcemanager:*:*:account/*", "acs:resourcemanager:*:*:folder/*", "acs:resourcemanager:*:*:policy/controlpolicy/*" ] }, { "Effect": "Allow", "Action": [ "resourcemanager:GetResourceDirectory", "resourcemanager:ListAccount*", "resourcemanager:GetFolder*", "resourcemanager:ListFolder*", "resourcemanager:GetAccount", "resourcemanager:GetControlPolicy*", "resourcemanager:ListControlPolicies", "resourcemanager:ListControlPolicyAttachmentsForTarget", "resourcemanager:ListTargetAttachmentsForControlPolicy", "resourcemanager:ListTagKeys", "resourcemanager:ListTagValues" ], "Resource": "*" } ] }
创建一个名为
Alice
的RAM用户,并授予管理资源夹业务部门1
的权限。管理账号登录RAM控制台,创建一个名为
Alice
的RAM用户,为其创建访问密钥(AccessKey),然后为其授予以下自定义权限策略。具体操作,请参见创建RAM用户、创建自定义权限策略、为RAM用户授权。自定义权限策略内容:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "resourcemanager:GetResourceDirectory", "resourcemanager:ListTagKeys", "resourcemanager:ListTagValues" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "resourcemanager:*Account*", "resourcemanager:*Parent*", "resourcemanager:*Folder*", "resourcemanager:*Handshake*", "resourcemanager:*Contact*", "resourcemanager:*Members*", "resourcemanager:*ControlPolicy*", "resourcemanager:*ControlPolicies*", "resourcemanager:*SendVerificationCodeFor*", "resourcemanager:*BindSecureMobilePhone*" ], "Resource": [ "acs:resourcemanager:*:*:account/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门1的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门1的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****", //资源夹业务部门1的RDPath "acs:resourcemanager:*:*:handshake/*", "acs:resourcemanager:*:*:policy/controlpolicy/*", "acs:resourcemanager:*:*:messagecontact/*" ] }, { "Effect": "Deny", "Action": [ "resourcemanager:DeleteControlPolicy", "resourcemanager:UpdateControlPolicy", "resourcemanager:DisableControlPolicy", "resourcemanager:EnableControlPolicy", "resourcemanager:DeleteMessageContact", "resourcemanager:UpdateMessageContact", "resourcemanager:CancelMessageContactUpdate", "resourcemanager:CancelHandshake" ], "Resource": "*" } ] }
创建一个名为
Bob
的RAM用户,并授予管理资源夹业务部门2
的权限。管理账号登录RAM控制台,创建一个名为
Bob
的RAM用户,为其创建访问密钥(AccessKey),然后为其授予以下自定义权限策略。具体操作,请参见创建RAM用户、创建自定义权限策略、为RAM用户授权。自定义权限策略内容:
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "resourcemanager:GetResourceDirectory", "resourcemanager:ListTagKeys", "resourcemanager:ListTagValues" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "resourcemanager:*Account*", "resourcemanager:*Parent*", "resourcemanager:*Folder*", "resourcemanager:*Handshake*", "resourcemanager:*Contact*", "resourcemanager:*Members*", "resourcemanager:*ControlPolicy*", "resourcemanager:*ControlPolicies*", "resourcemanager:*SendVerificationCodeFor*", "resourcemanager:*BindSecureMobilePhone*" ], "Resource": [ "acs:resourcemanager:*:*:account/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门2的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门2的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****", //资源夹业务部门2的RDPath "acs:resourcemanager:*:*:handshake/*", "acs:resourcemanager:*:*:policy/controlpolicy/*", "acs:resourcemanager:*:*:messagecontact/*" ] }, { "Effect": "Deny", "Action": [ "resourcemanager:DeleteControlPolicy", "resourcemanager:UpdateControlPolicy", "resourcemanager:DisableControlPolicy", "resourcemanager:EnableControlPolicy", "resourcemanager:DeleteMessageContact", "resourcemanager:UpdateMessageContact", "resourcemanager:CancelMessageContactUpdate", "resourcemanager:CancelHandshake" ], "Resource": "*" } ] }
验证结果。
分别使用RAM用户
Mike
、Alice
、Bob
对应的访问密钥(AccessKey)调用资源目录OpenAPI,访问资源目录中有权限的资源。例如:Alice
只能操作资源夹业务部门1
中的资源,Bob
只能操作资源夹业务部门2
的资源,则说明以上配置成功。
方案二:基于云SSO实现分级管理
开通资源目录。
Y公司企业管理员(如财务同学)申请阿里云账号并进行企业实名认证,然后开通资源目录,并创建两个名为
业务部门1
和业务部门2
的资源夹。具体操作,请参见开通资源目录、创建资源夹。开通资源目录的账号即为管理账号。
创建云SSO用户
Mike
,并授予配置全局管控策略的权限。管理账号登录云SSO控制台,创建一个名为
Mike
的云SSO用户,为其设置登录密码,然后创建访问配置,并为云SSO用户Mike
在RD管理账号上部署该访问配置。具体操作,请参见创建用户、创建访问配置、在RD账号上授权。该访问配置使用以下内容的内置策略,不使用系统策略。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "resourcemanager:*ControlPolicy*", "resourcemanager:*ControlPolicies*" ], "Resource": [ "acs:resourcemanager:*:*:account/*", "acs:resourcemanager:*:*:folder/*", "acs:resourcemanager:*:*:policy/controlpolicy/*" ] }, { "Effect": "Allow", "Action": [ "resourcemanager:GetResourceDirectory", "resourcemanager:ListAccount*", "resourcemanager:GetFolder*", "resourcemanager:ListFolder*", "resourcemanager:GetAccount", "resourcemanager:GetControlPolicy*", "resourcemanager:ListControlPolicies", "resourcemanager:ListControlPolicyAttachmentsForTarget", "resourcemanager:ListTargetAttachmentsForControlPolicy", "resourcemanager:ListTagKeys", "resourcemanager:ListTagValues" ], "Resource": "*" } ] }
创建一个名为
Alice
的云SSO用户,并授予管理资源夹业务部门1
的权限。管理账号登录云SSO控制台,创建一个名为
Alice
的云SSO用户,为其设置登录密码,然后创建访问配置,并为云SSO用户Alice
在RD管理账号上部署该访问配置。具体操作,请参见创建用户、创建访问配置、在RD账号上授权。该访问配置使用以下内容的内置策略,不使用系统策略。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "resourcemanager:GetResourceDirectory", "resourcemanager:ListTagKeys", "resourcemanager:ListTagValues" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "resourcemanager:*Account*", "resourcemanager:*Parent*", "resourcemanager:*Folder*", "resourcemanager:*Handshake*", "resourcemanager:*Contact*", "resourcemanager:*Members*", "resourcemanager:*ControlPolicy*", "resourcemanager:*ControlPolicies*", "resourcemanager:*SendVerificationCodeFor*", "resourcemanager:*BindSecureMobilePhone*" ], "Resource": [ "acs:resourcemanager:*:*:account/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门1的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门1的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****", //资源夹业务部门1的RDPath "acs:resourcemanager:*:*:handshake/*", "acs:resourcemanager:*:*:policy/controlpolicy/*", "acs:resourcemanager:*:*:messagecontact/*" ] }, { "Effect": "Deny", "Action": [ "resourcemanager:DeleteControlPolicy", "resourcemanager:UpdateControlPolicy", "resourcemanager:DisableControlPolicy", "resourcemanager:EnableControlPolicy", "resourcemanager:DeleteMessageContact", "resourcemanager:UpdateMessageContact", "resourcemanager:CancelMessageContactUpdate", "resourcemanager:CancelHandshake" ], "Resource": "*" } ] }
创建一个名为
Bob
的云SSO用户,并授予管理资源夹业务部门2
的权限。管理账号登录云SSO控制台,创建一个名为
Bob
的云SSO用户,为其设置登录密码,然后创建访问配置,并为云SSO用户Bob
在RD管理账号上部署该访问配置。具体操作,请参见创建用户、创建访问配置、在RD账号上授权。该访问配置仅使用以下内容的内置策略,不使用系统策略。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "resourcemanager:GetResourceDirectory", "resourcemanager:ListTagKeys", "resourcemanager:ListTagValues" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "resourcemanager:*Account*", "resourcemanager:*Parent*", "resourcemanager:*Folder*", "resourcemanager:*Handshake*", "resourcemanager:*Contact*", "resourcemanager:*Members*", "resourcemanager:*ControlPolicy*", "resourcemanager:*ControlPolicies*", "resourcemanager:*SendVerificationCodeFor*", "resourcemanager:*BindSecureMobilePhone*" ], "Resource": [ "acs:resourcemanager:*:*:account/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门2的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****/*", //资源夹业务部门2的RDPath "acs:resourcemanager:*:*:folder/rd-3G****/r-Wm****/fd-bqp2FA****", //资源夹业务部门2的RDPath "acs:resourcemanager:*:*:handshake/*", "acs:resourcemanager:*:*:policy/controlpolicy/*", "acs:resourcemanager:*:*:messagecontact/*" ] }, { "Effect": "Deny", "Action": [ "resourcemanager:DeleteControlPolicy", "resourcemanager:UpdateControlPolicy", "resourcemanager:DisableControlPolicy", "resourcemanager:EnableControlPolicy", "resourcemanager:DeleteMessageContact", "resourcemanager:UpdateMessageContact", "resourcemanager:CancelMessageContactUpdate", "resourcemanager:CancelHandshake" ], "Resource": "*" } ] }
验证结果。
分别使用云SSO用户
Mike
、Alice
、Bob
通过CLI登录云SSO用户门户,登录后,通过CLI命令行访问资源目录中有权限的资源。例如:Alice
只能操作资源夹业务部门1
中的资源,Bob
只能操作资源夹业务部门2
中的资源,则说明以上配置成功。关于如何通过CLI登录云SSO用户门户,请参见使用CLI登录云SSO并访问阿里云资源。说明基于云SSO实现分级管理的方案配置完成后,暂时只能通过CLI操作有权限的资源,不支持控制台操作。