STS模式授权

MaxCompute结合了阿里云的访问控制服务(RAM)和令牌服务(STS)实现对数据的安全访问。本文为您介绍控制服务(RAM)和令牌服务(STS)的授权方式。

OSS的STS模式授权

MaxCompute外部表直接访问OSS的数据,需要事先将OSS的数据相关权限赋予MaxCompute的访问账号,您可以通过以下方式授权:

  • 方式一(推荐):当MaxCompute和OSS的Owner是同一个账号时,登录阿里云账号后,单击此处完成一键授权

  • 方式二:当MaxCompute和OSS的Owner不是同一个账号时,您可以自定义角色并授权。

    1. 创建RAM角色。

      使用OSS账号登录RAM控制台,通过RAM控制台中的RAM角色创建角色。例如角色oss-admin。创建角色

      说明

      更多创建角色操作信息,请参见创建可信实体为阿里云账号的RAM角色

    2. 修改RAM角色策略内容。

      在RAM控制台中的RAM角色管理页面,单击新建的RAM角色名称后,在信任策略页签修改信任策略。当MaxCompute和OSS的Owner不是同一个账号,设置如下所示,支持跨账号实现MaxCompute访问OSS。

      {
      "Statement": [
      {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
         "Service": [
           "MaxCompute的Owner云账号ID@odps.aliyuncs.com"
         ]
       }
      }
      ],
      "Version": "1"
      }
      说明

      MaxCompute的Owner云账号ID为访问OSS服务的账号。

      更多修改角色策略内容操作,请参见修改RAM角色的信任策略

    3. 新建权限策略。

      在RAM控制台中的权限策略管理页面,新建权限策略,例如AliyunODPSRolePolicy。策略内容如下,您也可以自定义其他权限。

      {
      "Version": "1",
      "Statement": [
      {
       "Action": [
         "oss:ListBuckets",
         "oss:GetObject",
         "oss:ListObjects",
         "oss:PutObject",
         "oss:DeleteObject",
         "oss:AbortMultipartUpload",
         "oss:ListParts"
       ],
       "Resource": "*",
       "Effect": "Allow"
      }
      ]
      }
    4. 将新建的权限策略AliyunODPSRolePolicy授权给新建的RAM角色。

      更多授权操作信息,请参见为RAM角色授权

OTS的STS模式授权

MaxCompute外部表直接访问OTS的数据,需要事先将OTS的数据相关权限赋予MaxCompute的访问账号,您可以通过以下方式授权:

  • 方式一(推荐):当MaxCompute和OTS的Owner是同一个账号时,登录阿里云账号后,单击此处完成一键授权

  • 方式二:当MaxCompute和OTS的Owner不是同一个账号时,您可以自定义角色并授权。

    1. 创建RAM角色。

      使用OTS账号登录RAM控制台,通过RAM控制台中的RAM角色创建角色。例如角色oss-adminots。

      更多创建角色操作信息,请参见创建可信实体为阿里云账号的RAM角色

    2. 修改RAM角色策略内容。

      在RAM控制台中的RAM角色管理页面,单击新建的RAM角色名称后,在信任策略页签修改信任策略。当MaxCompute和OTS的Owner不是同一个账号时,设置如下所示,支持跨账号实现MaxCompute访问OTS。

      {
      "Statement": [
      {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
         "Service": [
           "MaxCompute的Owner云账号的UID@odps.aliyuncs.com"
         ]
       }
      }
      ],
      "Version": "1"
      }

      MaxCompute的Owner云账号ID为访问OTS服务的账号。

    3. 新建权限策略。

      在RAM控制台中的权限策略管理页面,新建权限策略,例如AliyunODPSRolePolicy。策略内容如下,您也可以自定义其他权限。

      {
      "Version": "1",
      "Statement": [
      {
       "Action": [
         "ots:ListTable",
         "ots:DescribeTable",
         "ots:GetRow",
         "ots:PutRow",
         "ots:UpdateRow",
         "ots:DeleteRow",
         "ots:GetRange",
         "ots:BatchGetRow",
         "ots:BatchWriteRow",
         "ots:ComputeSplitPointsBySize"
       ],
       "Resource": "*",
       "Effect": "Allow"
      }
      ]
      }
    4. 将新建的权限策略AliyunODPSRolePolicy授权给新建的RAM角色。

      更多授权操作信息,请参见为RAM角色授权

Hologres的STS模式授权

MaxCompute外部表直接访问Hologres的数据,需要先将Hologres的数据相关权限赋予MaxCompute的访问账号,以下介绍Hologres的STS模式授权操作。

  1. 使用Hologres账号登录RAM控制台,通过RAM控制台中的RAM角色创建角色。

  2. 修改信任策略配置内容。

    1. 角色页面,单击已创建完成的RAM角色名称。

    2. 单击信任策略页签。

    3. 信任策略页签,单击编辑信任策略

    4. 参照如下内容修改信任策略配置。

      修改信任策略配置内容与选择的可信实体类型相关。

      • 可信实体类型为阿里云账号:

        {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "RAM": [
                  "acs:ram::<UID>:root"
                ]
              }
            },
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "<UID>@odps.aliyuncs.com"
                ]
              }
            }
          ],
          "Version": "1"
        }
      • 可信实体类型为身份提供商:

        {
        "Statement": [
                {
                    "Action": "sts:AssumeRole",
                    "Condition": {
                        "StringEquals": {
                            "saml:recipient": "https://signin.aliyun.com/saml-role/sso"
                        }
                    },
                    "Effect": "Allow",
                    "Principal": {
                        "Federated": [
                            "acs:ram::<UID>:saml-provider/IDP"
                        ]
                    }
                },
                {
                    "Action": "sts:AssumeRole",
                    "Effect": "Allow",
                    "Principal": {
                        "Service": [
                            "<UID>@odps.aliyuncs.com"
                        ]
                    }
                }
            ],
            "Version": "1"
        }
        说明

        <UID>即阿里云账号ID,可在用户信息页面获取。

    5. 单击确定

  3. 添加RAM角色至Hologres实例并授权。

    RAM角色需要有Hologres实例的开发权限,才能在权限范围内使用Hologres。由于RAM角色默认没有Hologres管理控制台的查看和操作实例的权限,因此需要阿里云账号完成RAM相关权限授予才能进行后续操作。添加RAM角色至Hologres实例,您可以通过如下方式进行授权。

      • 通过Hologres管理控制台授权。

        1. 登录Hologres管理控制台

        2. 在左侧导航栏单击实例列表,单击需要授权的Hologres实例名称。

        3. 在实例详情页面,单击账号管理

        4. 用户管理页面单击新增用户添加RAM角色至Hologres实例。新增用户

        5. DB授权页签,为该RAM角色授予实例的开发权限。DB授权

      • 通过SQL方式授权。

        您可以通过SQL方式进行授权,授权SQL请参见Hologres权限模型概述

      • 若是通过RAM用户扮演RAM角色,RAM用户默认没有Hologres管理控制台的权限,需要阿里云账号给RAM用户在访问控制页面授予AliyunRAMReadOnlyAccess权限,否则RAM用户无法在Hologres管理控制台进行任何操作。详情请参见文档授予RAM用户权限添加权限

说明

Hologres还支持双签名的认证方式,详情请参见创建Hologres外部表(双签名模式)