全部产品
Search
文档中心

资源编排:授权自助管理权限

更新时间:Dec 18, 2024

当您创建自助管理权限模式的资源栈组时,需要事先在管理员账号和目标账号中手动创建RAM角色,建立二者的信任关系,然后在目标账号中部署资源栈。

背景信息

授权自助管理权限时,您需要为下表所示的阿里云账号分别创建RAM角色并授权:

阿里云账号

RAM角色

权限策略

权限策略说明

管理员账号

AliyunROSStackGroupAdministrationRole

自定义策略AssumeRole-AliyunROSStackGroupExecutionRole

允许RAM角色(AliyunROSStackGroupAdministrationRole)扮演角色身份(AliyunROSStackGroupExecutionRole)。

目标账号

AliyunROSStackGroupExecutionRole

系统策略AdministratorAccess

允许RAM角色(AliyunROSStackGroupExecutionRole)管理目标账号的所有阿里云资源。

说明

管理员账号和目标账号可以为同一阿里云账号。关于管理员账号和目标账号的更多信息,请参见概览

授权成功后,当您使用管理员账号登录资源编排控制台创建资源栈组后,即可在该资源栈组中为目标账号创建资源栈。

方式一:通过RAM控制台设置权限

  1. 设置目标账号的权限。

    1. 使用目标账号登录RAM控制台

    2. 为目标账号创建可信实体为管理员账号的RAM角色(AliyunROSStackGroupExecutionRole)。

      1. 在左侧导航栏,选择身份管理 > 角色

      2. 角色页面,单击创建角色

      3. 创建角色页面,选择可信实体类型为阿里云账号,然后单击下一步

      4. 设置角色信息。

        1. 输入角色名称AliyunROSStackGroupExecutionRole

        2. 输入备注

        3. 选择信任的云账号为其他云账号,最后输入管理员账号的ID。

      5. 单击完成

      6. 单击关闭

    3. 为RAM角色(AliyunROSStackGroupExecutionRole)授予AdministratorAccess权限。

      1. 角色页面,单击RAM角色(AliyunROSStackGroupExecutionRole)操作列的新增授权

      2. 新增授权面板,授权主体会自动填入,选择授权范围账号级别

      3. 选择权限为系统策略,然后选择AdministratorAccess

      4. 单击确定

      5. 单击完成

  2. 设置管理员账号的权限。

    1. 使用管理员账号登录RAM控制台

    2. 为管理员账号创建可信实体为资源编排服务的RAM角色(AliyunROSStackGroupAdministrationRole)。

      1. 在左侧导航栏,选择身份管理 > 角色

      2. 角色页面,单击创建角色

      3. 创建角色页面,选择可信实体类型为阿里云服务,然后单击下一步

      4. 选择角色类型普通服务角色

      5. 设置角色信息。

        1. 输入角色名称AliyunROSStackGroupAdministrationRole

        2. 输入备注

        3. 选择受信服务为资源编排服务

      6. 单击完成

      7. 单击关闭

    3. 创建自定义权限策略(AssumeRole-AliyunROSStackGroupExecutionRole)。

      1. 在左侧导航栏,选择权限管理 > 权限策略

      2. 权限策略页面,单击创建权限策略

      3. 创建权限策略页面,单击脚本编辑页签,输入以下策略内容,然后单击继续编辑基本信息。输入权限策略名称为AssumeRole-AliyunROSStackGroupExecutionRole

        该策略允许RAM角色(AliyunROSStackGroupAdministrationRole)扮演角色身份(AliyunROSStackGroupExecutionRole)。

        {
          "Statement": [
            {
              "Effect": "Allow",
              "Action": "sts:AssumeRole",
              "Resource": "acs:ram::*:role/AliyunROSStackGroupExecutionRole"
            }
          ],
          "Version": "1"
        }
      4. 单击确定

    4. 为RAM角色(AliyunROSStackGroupAdministrationRole)授予AssumeRole-AliyunROSStackGroupExecutionRole权限。

      1. 在左侧导航栏,选择身份管理 > 角色

      2. 角色页面,单击RAM角色(AliyunROSStackGroupAdministrationRole)操作列的新增授权

      3. 新增授权面板,授权主体会自动填入,选择授权范围账号级别

      4. 选择权限为自定义策略,然后选择AssumeRole-AliyunROSStackGroupExecutionRole

      5. 单击确定

方式二:通过资源编排控制台设置权限

通过资源编排模板为管理员账号和目标账号创建RAM角色,并赋予资源栈组和资源栈的操作权限。

  1. 管理员账号登录资源编排控制台 ,使用模板AliyunROSStackGroupAdministrationRole创建RAM角色并授权。

    示例模板如下。

    ROSTemplateFormatVersion: '2015-09-01'
    Description: Configure the AliyunROSStackGroupAdministrationRole to enable use of Alibaba Cloud ROS StackGroup.
    Parameters:
      AdministrationRoleName:
        Type: String
        Default: AliyunROSStackGroupAdministrationRole
        Description:
          en: Role name of administration account
          zh-cn: 创建授权给管理员账号的角色的名称
      ExecutionRoleName:
        Type: String
        Default: AliyunROSStackGroupExecutionRole
        Description:
          en: Execution role name of target account
          zh-cn: 目标账号执行角色名称
    Metadata:
      ALIYUN::ROS::Interface:
        ParameterGroups:
          - Parameters:
              - AdministrationRoleName
              - ExecutionRoleName
            Label:
              default:
                en: RAM
                zh-cn: 账号权限
        TemplateTags:
          - acs:example:安全:创建StackGroup管理员账号权限
    Resources:
      AliyunROSStackGroupAdministrationRole:
        Type: ALIYUN::RAM::Role
        Properties:
          RoleName:
            Ref: AdministrationRoleName
          AssumeRolePolicyDocument:
            Version: 1
            Statement:
              - Action: sts:AssumeRole
                Effect: Allow
                Principal:
                  Service:
                    - ros.aliyuncs.com
          Policies:
            - PolicyName:
                Fn::Sub:
                  - AssumeRole-${ExecutionRoleName}
                  - ExecutionRoleName:
                      Ref: ExecutionRoleName
              PolicyDocument:
                Statement:
                  - Effect: Allow
                    Action:
                      - sts:AssumeRole
                    Resource:
                      - Fn::Sub: acs:ram::*:role/${ExecutionRoleName}
                Version: '1'
    Outputs:
      AdministrationRoleName:
        Value:
          Fn::GetAtt:
            - AliyunROSStackGroupAdministrationRole
            - RoleName
    
  2. 目标账号登录资源编排控制台,使用模板AliyunROSStackGroupExecutionRole创建RAM角色并授权。

    示例模板如下。

    ROSTemplateFormatVersion: '2015-09-01'
    Description: Configure the AliyunROSStackGroupExecutionRole to enable use of your account as a target account in Alibaba Cloud ROS StackGroup.
    Conditions:
      CurrentAccount:
        Fn::Equals:
          - Ref: AdministrationAccountId
          - ''
    Parameters:
      ExecutionRoleName:
        Type: String
        Default: AliyunROSStackGroupExecutionRole
        Description:
          en: Execution role name of target account
          zh-cn: 为目标账号创建执行角色的名称
      AdministrationAccountId:
        Type: String
        Description:
          zh-cn: 管理员主账号ID,不填则授权给当前账号
          en: Administration account ID. If not, authorize the current account
        Default: ''
    Metadata:
      ALIYUN::ROS::Interface:
        ParameterGroups:
          - Parameters:
              - ExecutionRoleName
              - AdministrationAccountId
            Label:
              default: RAM
        TemplateTags:
          - acs:example:安全:创建StackGroup目标账号权限
    Resources:
      AliyunROSStackGroupExecutionRole:
        Type: ALIYUN::RAM::Role
        Properties:
          RoleName:
            Ref: ExecutionRoleName
          AssumeRolePolicyDocument:
            Version: 1
            Statement:
              - Action: sts:AssumeRole
                Effect: Allow
                Principal:
                  RAM:
                    - Fn::Join:
                        - ''
                        - - 'acs:ram::'
                          - Fn::If:
                              - CurrentAccount
                              - Ref: ALIYUN::TenantId
                              - Ref: AdministrationAccountId
                          - ':root'
      AttachPolicy:
        Type: ALIYUN::RAM::AttachPolicyToRole
        Properties:
          PolicyName: AdministratorAccess
          PolicyType: System
          RoleName:
            Fn::GetAtt:
              - AliyunROSStackGroupExecutionRole
              - RoleName
    Outputs:
      ExecutionRoleName:
        Value:
          Fn::GetAtt:
            - AliyunROSStackGroupExecutionRole
            - RoleName