STS模式授权

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

OSSSTS模式普通角色授权

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

  • 一键授权(推荐):当MaxComputeOSSOwner是同一个账号时,登录阿里云账号后,单击此处完成一键授权

    说明

    默认创建的AliyunODPSDefaultRole权限较多,仅供参考,需要根据MaxCompute外表或外部数据源可访问的外部数据权限,在RAM控制台中配置合理的权限策略和信任策略。

  • 自定义授权:无论MaxComputeOSSOwner是不是同一个账号,都可以使用该方式授权。具体操作如下。

    • MaxComputeOSSOwner是同一个账号时,添加信任策略时需要将service配置成odps.aliyuncs.com

    • MaxComputeOSSOwner不是同一个账号时,添加信任策略时需要将service配置成MaxComputeOwner云账号I*@odps.aliyuncs.com,MaxComputeOwner云账号ID可以在账号概览中获取。

    1. 创建RAM角色。

      登录RAM控制台,通过RAM控制台中的RAM角色创建角色。例如角色oss-admin。更多创建角色操作信息,请参见创建可信实体为阿里云账号的RAM角色image

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

      1. 登录RAM控制台

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

      3. 角色页面,单击目标角色名称,进入该角色详情页。

      4. 信任策略页签,单击编辑信任策略,在编辑信任策略页面选择脚本编辑页签。

        配置如下策略:

        MaxComputeOSSOwner为同一个账号时

        {
          "Statement": [
            {
              "Action": "sts:AssumeRole",
              "Effect": "Allow",
              "Principal": {
                "Service": [
                  "odps.aliyuncs.com"
                ]
              }
            }
          ],
          "Version": "1"
        }

        MaxComputeOSSOwner不是同一个账号时

        {
        "Statement": [
        {
         "Action": "sts:AssumeRole",
         "Effect": "Allow",
         "Principal": {
           "Service": [
             "MaxComputeOwner云账号I*@odps.aliyuncs.com"
           ]
         }
        }
        ],
        "Version": "1"
        }
      5. 修改完成后,单击确定

    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. 将新建的权限策略授权给新建的RAM角色。

      1. 登录RAM控制台

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

      3. 角色页面,单击目标角色名称,进入该角色详情页。

      4. 权限管理页签,单击新增授权。在弹出的新增授权面板中,选择要授予该角色的权限策略,单击确认新增授权

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

OTSSTS模式普通角色授权

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

  • 一键授权(推荐):当MaxComputeOTSOwner是同一个账号时,登录阿里云账号后,单击此处完成一键授权

  • 自定义授权:当MaxComputeOTSOwner不是同一个账号时,自定义角色并授权。

    1. 创建RAM角色。

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

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

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

      MaxComputeOTSOwner不是同一个账号时,设置如下所示,支持跨账号实现MaxCompute访问OTS。

      1. 登录RAM控制台

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

      3. 角色页面,单击目标角色名称,进入该角色详情页。

      4. 信任策略页签,单击编辑信任策略,在编辑信任策略页面选择脚本编辑页签。

        配置如下策略:

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

        MaxComputeOwner云账号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角色。

      1. 登录RAM控制台

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

      3. 角色页面,单击目标角色名称,进入该角色详情页。

      4. 权限管理页签,单击新增授权。在弹出的新增授权面板中,选择要授予该角色的权限策略,单击确认新增授权

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

HologresSTS模式普通角色授权

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

  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"
        }
  3. 添加RAM角色至Hologres实例并授权

    RAM角色需要有Hologres实例的开发权限,才能在权限范围内使用Hologres。

    由于RAM角色默认没有Hologres管理控制台的查看和操作实例的权限,因此需要阿里云账号完成RAM相关权限授予才能进行后续操作。

    添加RAM角色至Hologres实例步骤如下:

    通过Hologres管理控制台授权

    1. 登录Hologres管理控制台,在左上角选择地域。

    2. 在左侧导航栏选择实例列表

    3. 实例列表页面,单击目标实例名称。

    4. 在实例详情页面,在左侧导航栏选择账号管理

    5. 用户管理页面,单击新增用户

    6. 在弹出的新增用户页面,配置相关信息,单击确认

      • 角色选择AliyunODPSDefaultRole

      • 成员角色选择普通用户

    7. 用户管理页面,在左侧导航栏选择DB 授权

    8. DB 授权页面,单击新增数据库

    9. 在弹出的新增数据库页面,配置相关信息,单击确认

      权限策略选择SPM。

    10. DB 授权页面,单击目标数据库对应的操作列的用户授权

    11. 单击右上角新增授权。在弹出的新增授权对话框中,配置用户用户组

      • 用户选择要配置的RAM用户。

      • 用户组选择Developer。

    通过SQL方式授权

    授权SQL请参见Hologres权限模型

    Tab 标题

    将新建的权限策略AliyunODPSRolePolicy授权给新建的RAM角色。

    1. 登录RAM控制台

    2. 在左侧导航栏选择身份管理 > 用户

    3. 用户页面,单击目标用户登录名称/显示名称,进入用户详情页面。

    4. 在用户详情页面,单击权限管理页签。

    5. 权限管理页签下,选择个人权限,单击新增授权

    6. 在弹出的新增授权面板中,选择要授予该用户的权限策略,单击确认新增授权

      权限策略选择AliyunRAMReadOnlyAccess

      更多授权操作信息,请参见授予RAM用户权限

说明

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

DLF+OSSSTS模式普通角色授权

通过MaxComputeDLFOSS构建湖仓一体时,由于MaxCompute项目的账号未经授权无法访问DLFOSS,需要执行授权操作。授权方式包含以下两种:

  • 一键授权(推荐):当创建MaxCompute项目的账号和部署DLF、OSS的账号相同时。推荐直接单击授权DLFOSS一键授权。

  • 自定义授权:无论创建MaxCompute项目的账号和部署DLF、OSS的账号是否相同,都可以使用该方式。具体操作如下。

    • MaxCompute项目RAM账号和部署DLF的账号相同时,添加信任策略时需要将service配置成odps.aliyuncs.com

    • MaxCompute项目RAM账号和部署DLF的账号不同时,添加信任策略时需要将service配置成<MaxCompute项目的Owner云账号id>@odps.aliyuncs.com。您可以在账号概览中获取MaxComputeOwner云账号id

    1. 登录RAM访问控制台创建可信实体为阿里云账号的RAM角色

    2. 通过RAM控制台修改RAM角色的信任策略。信任策略内容如下:

      创建MaxCompute项目的账号和部署DLF的账号是同一个账号

      {
      "Statement": [
      {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
         "Service": [
           "odps.aliyuncs.com"
         ]
       }
      }
      ],
      "Version": "1"
      }

      创建MaxCompute项目的账号和部署DLF的账号不是同一个账号

      {
      "Statement": [
      {
       "Action": "sts:AssumeRole",
       "Effect": "Allow",
       "Principal": {
         "Service": [
           "<MaxCompute项目的Owner云账号id>@odps.aliyuncs.com"  
         ]
       }
      }
      ],
      "Version": "1"
      }
    3. 通过RAM控制台,为新建的RAM角色自定义权限策略。操作详情,请参见创建自定义权限策略。自定义权限内容如下:

      {
      "Version": "1",
      "Statement": [
      {
       "Action": [
         "oss:ListBuckets",
         "oss:GetObject",
         "oss:ListObjects",
         "oss:PutObject",
         "oss:DeleteObject",
         "oss:AbortMultipartUpload",
         "oss:ListParts"
       ],
       "Resource": "*",
       "Effect": "Allow"
      },
      {
       "Action": [
       "dlf:CreateFunction",
      "dlf:BatchGetPartitions",
      "dlf:ListDatabases",
      "dlf:CreateLock",
      "dlf:UpdateFunction",
      "dlf:BatchUpdateTables",
      "dlf:DeleteTableVersion",
      "dlf:UpdatePartitionColumnStatistics",
      "dlf:ListPartitions",
      "dlf:DeletePartitionColumnStatistics",
      "dlf:BatchUpdatePartitions",
      "dlf:GetPartition",
      "dlf:BatchDeleteTableVersions",
      "dlf:ListFunctions",
      "dlf:DeleteTable",
      "dlf:GetTableVersion",
      "dlf:AbortLock",
      "dlf:GetTable",
      "dlf:BatchDeleteTables",
      "dlf:RenameTable",
      "dlf:RefreshLock",
      "dlf:DeletePartition",
      "dlf:UnLock",
      "dlf:GetLock",
      "dlf:GetDatabase",
      "dlf:GetFunction",
      "dlf:BatchCreatePartitions",
      "dlf:ListPartitionNames",
      "dlf:RenamePartition",
      "dlf:CreateTable",
      "dlf:BatchCreateTables",
      "dlf:UpdateTableColumnStatistics",
      "dlf:ListTableNames",
      "dlf:UpdateDatabase",
      "dlf:GetTableColumnStatistics",
      "dlf:ListFunctionNames",
      "dlf:ListPartitionsByFilter",
      "dlf:GetPartitionColumnStatistics",
      "dlf:CreatePartition",
      "dlf:CreateDatabase",
      "dlf:DeleteTableColumnStatistics",
      "dlf:ListTableVersions",
      "dlf:BatchDeletePartitions",
      "dlf:ListCatalogs",
      "dlf:UpdateTable",
      "dlf:ListTables",
      "dlf:DeleteDatabase",
      "dlf:BatchGetTables",
      "dlf:DeleteFunction"
       ],
       "Resource": "*",
       "Effect": "Allow"
      }
      ]
      }
    4. 将自定义的权限策略,授权给新建的RAM角色。操作详情,请参见RAM角色授权

HologresSTS模式服务关联角色授权

MaxCompute通过外部数据源和外部项目访问Hologres的数据,需要事先将Hologres的数据相关权限赋予MaxCompute的访问账号。

使用任务执行者身份本质是为MaxCompute服务关联角色授予访问Hologres的权限,并将任务执行者身份传递至Hologres。双方同时将当前任务执行者限制在其拥有的两个产品各自的权限范围内,因此需预先为MaxCompute创建服务关联角色并完成授权。可以通过以下方式授权:

  1. 登录RAM控制台

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

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

  4. 创建角色页面的右上角,单击创建服务关联角色

  5. 创建服务关联角色页面,选择信任的云服务aliyunserviceroleformaxcomputeidentitymgmt,单击创建服务关联角色

    若提示角色已经存在,说明已经授权过,忽略即可。

Paimon_DLFSTS模式服务关联角色授权

MaxCompute通过外部数据源和外部项目访问Paimon_DLF的数据,需要事先将DLF的数据相关权限赋予MaxCompute的访问账号。

使用任务执行者身份本质是为MaxCompute服务关联角色授予访问DLF的权限,并将任务执行者身份传递至 DLF。双方同时将当前任务执行者限制在其拥有的两个产品各自的权限范围内,因此需预先为MaxCompute创建服务关联角色并完成授权。可以通过以下方式授权:

  1. 登录RAM控制台

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

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

  4. 创建角色页面的右上角,单击创建服务关联角色

  5. 创建服务关联角色页面,选择信任的云服务AliyunServiceRoleForMaxComputeLakehouse,单击创建服务关联角色

    若提示角色已经存在,说明已经授权过,忽略即可。