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角色策略内容。

      RAM控制台中的RAM角色管理页面,单击新建的RAM角色名称后,在信任策略页签修改信任策略。更多修改角色策略内容的操作,请参见修改RAM角色的信任策略

      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"
      }
    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角色。

      进入RAM控制台身份管理 > 角色页面,单击新创建的角色名称,在角色详情的权限管理页签单击新增授权,选择上一步中新建的权限策略并确认新增授权。更多操作信息,请参见RAM角色授权

OTSSTS模式普通角色授权

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

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

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

    1. 创建RAM角色。

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

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

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

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

      {
      "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角色。

      更多授权操作信息,请参见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"
        }
        说明

        <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角色授予实例的开发权限。

        说明

        若数据库的权限策略设置为专家模式,则需在用户管理页面将角色类型修改为SuperUser,后续将不再需要进行数据库授权操作。

        DB授权

    • 通过SQL方式授权。

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

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

      fir

      ppp4

说明

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. 在信任的云服务中选择 aliyunserviceroleformaxcomputeidentitymgmt,点击创建服务关联角色,若提示角色已经存在,说明已经授权过,忽略即可。

Paimon_DLFSTS模式服务关联角色授权

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

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

  1. 登录RAM访问控制台,在左侧导航栏选择身份管理 > 角色 ,单击创建角色

  2. 创建角色页面,单击右上角创建服务管理角色

  3. 在信任的云服务中选择 AliyunServiceRoleForMaxComputeLakehouse,点击创建服务关联角色,若提示角色已经存在,说明已经授权过,忽略即可。