文档

RAM角色登录并使用PAI

更新时间:

本文为您介绍如何使用角色SSO的方式登录PAI。

背景信息

通常,企业用户通过常规登录方式登录阿里云来管理和使用云资源。即在阿里云控制台输入账号和密码后登录。随着企业安全监管要求的日益严格,部分企业更愿意通过角色登录(Role Base_SSO)的方式登录阿里云。详情请参见SAML角色SSO概览

PAI支持的登录方式

PAI支持云账号登录和角色登录:

  • 通过阿里云账号或RAM用户登录PAI。

    您可以通过输入账号和密码的方式登录阿里云控制台,并以当前登录账号的身份使用PAI。此时,阿里云账号将成为PAI中某个工作空间的成员,拥有PAI产品的使用权限。

  • 通过角色SSO的方式登录PAI。

    您也可以通过角色SSO的方式登录阿里云控制台并使用PAI。关于角色SSO的更多内容,请参见SAML角色SSO概览。此时,阿里云访问控制角色(RAM role)将成为PAI中某个工作空间的成员,扮演该RAM role的使用者,将拥有和阿里云账号类成员同样的产品使用权限。关于RAM角色的更多内容,请参见RAM角色概览

角色登录指南

  1. 创建RAM角色并配置信任策略。

    • 通过RAM用户扮演角色并添加权限。

      如果您需要通过RAM用户来扮演RAM角色,并基于阿里云控制台切换身份的方式扮演该角色,当前可信实体类型可以选择阿里云账号。具体操作步骤如下。

      1. 创建可信实体类型为阿里云账号的RAM角色,具体操作,请参见创建可信实体为阿里云账号的RAM角色

        其中:选择信任的云账号参数选择当前云账号

      2. 进入目标角色详情页面,按照下图操作指引,修改信任策略。image信任策略内容修改为如下脚本内容。

        {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "RAM": [
                  "acs:ram::主账号ID:root"
                ]
              }
            },    
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "dataworks.aliyuncs.com"
                ]
              }
            }
          ],
          "Version": "1"
        }

        脚本中acs:ram::主账号ID:root中的主账号ID需要替换为需要授权的账号ID。您可以前往用户基本信息页面,获取账号ID。

      3. 创建RAM用户。您可以同时创建多个RAM用户,具体操作,详情请参见创建RAM用户

      4. 单击目标RAM用户操作列下的添加权限,为已创建的RAM用户添加AliyunSTSAssumeRoleAccess权限,来获取调用STS服务AssumeRole接口的权限。STS权限

    • 通过IdP身份提供商扮演角色并添加权限。

      如果您需要通过IdP身份提供商账号登录至阿里云来扮演RAM角色,当前可信实体类型可以选择身份提供商,具体操作步骤如下。

      1. 创建可信实体类型为身份提供商的RAM角色,具体操作,详情请参见创建可信实体为身份提供商的RAM角色

      2. 进入目标角色详情页面,按照下图操作指引,修改信任策略。image信任策略内容修改为如下脚本内容。

        {
           "Statement": [
                {
                    "Action": "sts:AssumeRole",
                    "Effect": "Allow",
                    "Principal": {
                        "Federated": [
                            "acs:ram::主账号ID:saml-provider/IDP"
                        ]
                    },
                    "Condition": {
                        "StringEquals": {
                            "saml:recipient": "https://signin.aliyun.com/saml-role/sso"
                        }
                    }
                },
                {
                    "Action": "sts:AssumeRole",
                    "Effect": "Allow",
                    "Principal": {
                      "Service": [
                        "dataworks.aliyuncs.com"
                      ]
                    }
                }
            ],
            "Version": "1"
        }

        脚本中acs:ram::主账号ID:saml-provider/IDP中的主账号ID需要替换为需要授权的账号ID。您可以前往用户基本信息页面,获取账号ID。

  2. 配置权限策略。

    您可以根据角色用户登录后需要使用的子产品需求,为角色用户添加权限策略。未设置权限策略可能会影响您在工作空间中的部分功能(例如:AI资产管理-数据集等)。建议您为角色用户添加相关的权限策略,具体操作步骤如下。

    1. 创建权限策略,例如将策略名称定义为PAIDefaultPolicy,具体操作,可参考样例云产品依赖与授权:Designer

      其中脚本编辑页签的策略内容配置如下。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": [
                      "cs:GetClusterById",
                      "cs:GetClusters",
                      "cs:GetUserConfig",
                      "cs:DescribeClusterNodes",
                      "cs:DescribeClusterInnerServiceKubeconfig",
                      "cs:RevokeClusterInnerServiceKubeconfig"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "vpc:DescribeVSwitchAttributes",
                      "vpc:DescribeVpcs",
                      "vpc:DescribeVSwitches",
                      "vpc:DescribeVpcAttribute"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "ecs:DescribeSecurityGroupAttribute",
                      "ecs:DescribeSecurityGroups",
                      "ecs:CreateNetworkInterface",
                      "ecs:DeleteNetworkInterface",
                      "ecs:DescribeNetworkInterfaces",
                      "ecs:CreateNetworkInterfacePermission",
                      "ecs:DescribeNetworkInterfacePermissions",
                      "ecs:DeleteNetworkInterfacePermission"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "nas:DescribeFileSystems",
                      "nas:CreateMountTarget",
                      "nas:DescribeMountTargets",
                      "nas:ModifyMountTarget",
                      "nas:DescribeProtocolMountTarget"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "cr:ListNamespace",
                      "cr:ListRepository",
                      "cr:GetAuthorizationToken",
                      "cr:ListInstanceEndpoint",
                      "cr:PullRepository",
                      "cr:PushRepository",
                      "cr:GetInstance",
                      "cr:GetInstanceVpcEndpoint",
                      "cr:ListInstance",
                      "cr:ListInstanceDomain"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "oss:ListBuckets",
                      "oss:GetObjectMetadata",
                      "oss:GetObject",
                      "oss:ListObjects",
                      "oss:PutObject",
                      "oss:CopyObject",
                      "oss:CompleteMultipartUpload",
                      "oss:AbortMultipartUpload",
                      "oss:InitiateMultipartUpload",
                      "oss:UploadPartCopy",
                      "oss:UploadPart",
                      "oss:DeleteObject"
                  ],
                  "Resource": "acs:oss:*:*:*",
                  "Effect": "Allow"
              },
              {
                  "Action": [
                      "datasetacc:DescribeInstance",
                      "datasetacc:DescribeSlot",
                      "datasetacc:DescribeEndpoint"
                  ],
                  "Resource": "*",
                  "Effect": "Allow"
              }
          ]
      }

      权限策略说明如下。

      权限点类型

      说明

      cs:***

      表示容器服务(CS)相关的权限。

      vpc:***

      表示专有网络(VPC)相关的权限。

      ecs:***

      表示云服务器服务(ECS)相关的权限。

      nas:***

      表示文件存储服务(NAS)相关的权限。

      cr:***

      表示容器镜像服务(ContainerRegistry)相关的权限。

      oss:***

      表示对象存储服务(OSS)相关的权限。

      datasetacc:***

      表示数据集加速(DatasetAcc)相关的权限。

    2. RAM访问控制页面,选择身份管理 > 角色

    3. 搜索在步骤1中创建的角色,并单击角色名称,进入角色详情页面。

    4. 权限管理页签,单击新增授权,将已创建的权限策略授权给该角色。具体如下图所示。

      新增权限

  3. 添加RAM角色至PAI工作空间并授权。

    RAM角色需要被添加为工作空间的成员,才能在权限范围内使用PAI的子产品。

    工作空间管理员可以在工作空间成员管理页面,添加已创建的RAM角色,具体操作,详情请参见管理工作空间成员image.png

    说明

    如果您在上图位置搜索不到您创建的角色,您可以尝试使用该RAM角色登录PAI控制台后,再进行搜索添加。详情请参见扮演RAM角色

  4. 登录PAI控制台开始算法开发工作。

    当您完成授权后,使用者就可以扮演RAM角色登录PAI控制台,开始算法开发工作。具体操作,请参见扮演RAM角色

  • 本页导读 (1)
文档反馈