通过RAM角色授权模式配置数据源

本文以OSS数据源为例,为您介绍如何通过RAM角色授权模式配置数据源,提高云上数据的安全性。

前提条件

如果您需使用RAM用户登录并完成本文操作流程,请先为RAM用户授予AliyunDataWorksFullAccess AliyunRAMFullAccess权限策略,详情请参见为RAM用户授权

说明

如果您使用的是阿里云主账号,请忽略该前提条件。

其中,添加权限请参考下图步骤。

image

背景信息

数据源是数据同步任务的基础,同时关系着企业云上数据的安全性。DataWorks支持您使用更高安全系数的RAM角色授权模式配置并访问OSS、AnalyticDB for MySQL 2.0、LogHub、Tablestore和Hologres等部分数据源,以提升云上数据的安全性,避免数据源被滥用、密钥泄露等情况。

数据源的访问模式包括RAM角色授权模式和Access Key模式。本文为您介绍的是通过RAM角色授权模式配置数据源,您可以根据业务需求进行选择。Access Key模式和RAM角色授权模式的实现原理如下:

  • Access Key模式

    在安全性较低的AK(AccessKeyID和AccessKeySecret)模式下,您只需要在页面输入阿里云主账号或RAM用户的AK,即可完成配置。

    以OSS数据源为例,您在配置数据源页面输入具有访问OSS某个Bucket权限的账号AK,即可完成配置。

    image

    在执行、调度运行同步任务时,您可以通过该AK来访问OSS并读写数据。OSS

    说明

    Access Key模式下,一旦该云账号的AK被泄露,会导致OSS数据同时被泄露。

  • RAM角色授权模式

    RAM角色授权模式致力于提供安全性更高的数据源访问方式,并无需生成AK,能够有效地规避AK泄露的风险。

    RAM角色授权模式下,您只需要授权DataWorks服务账号为具有访问OSS权限的角色,即可实现无AK访问OSS数据源。无AK

    同时,为了兼顾企业级用户的诉求,允许您对不同数据源设置具有能够权限范围的角色,实现更专业的权限管控。

流程介绍

为方便子账号可以替代主账号完成全链路操作,本说明增加阿里云子账号在每一个步骤的操作条件。RAM角色授权模式的操作流程如下。操作流程

  1. 阿里云主账号或被授予 AliyunRAMFullAccess角色权限的RAM用户,进入RAM访问控制,分别定义待扮演角色和待授权策略。

    • 待扮演角色:您需要创建自定义角色供DataWorks服务账号扮演。扮演后,DataWorks服务账号即可在角色具备的权限范围内,访问OSS数据源。

    • 待授权策略:您需要创建包含 PassRole相关权限点的策略,用于授权某个使用者使用某个角色创建数据源或运行同步任务的权限。

  2. 阿里云主账号或被授予 AliyunRAMFullAccess角色权限的RAM用户,进入RAM访问控制,授权步骤4、步骤6的RAM用户使用角色的权限。

    说明

    如果未被授权的RAM用户通过RAM角色授权模式创建数据源,则通过RAM角色授权模式数据源配置的同步任务都将运行失败。

  3. 数据源的创建者进入DataWorks数据集成,以RAM角色授权模式创建数据源,实现运行同步任务时,以DataWorks服务账号扮演某个角色访问OSS数据源的最终效果。

    说明

    仅当数据源创建者在步骤3中被授权后,才能进行本步骤的操作。

  4. 数据同步任务的创建者进入DataStudio(数据开发),基于配置的数据源创建同步任务。

  5. 执行者在DataStudio或运维中心页面,执行数据同步任务。

    说明

    仅当任务的执行者在步骤3中被授权后,才能进行本步骤的操作。

操作步骤

  1. 创建待扮演角色。

    根据实际安全场景,您需自定义不同角色,以匹配不同数据源。本文以下述场景为例,为您介绍如何创建待扮演角色。

    说明

    仅阿里云主账号和被授予 AliyunRAMFullAccess权限的RAM用户可执行本步骤操作。

    某企业有100个Bucket,存放该企业的所有数据,但大数据团队只需要使用其中某个Bucket的数据。如果使用预设的 AliyunDataWorksAccessingOSSRole角色,可能导致其它99个Bucket被大数据团队访问,存在管理风险。

    因此,云账号负责人可以为大数据团队创建自定义角色 BigDataOssRole,并限制可以使用角色的人员为大数据团队的相关人员,实现团队间的权限管控。

    1. 创建自定义角色。

      本案例示例创建可信实体为阿里云账号、角色名称为BigDataOssRole的自定义角色。创建步骤,详情请参见创建可信实体为阿里云账号的RAM角色

    2. 创建自定义权限策略。

      示例创建策略(Policy),仅可读写指定Bucket内的数据。创建策略步骤,详情请参见创建自定义权限策略。策略内容如下。

      {
          "Version": "1",
          "Statement": [
              {
                  "Effect": "Allow",
                  "Action": [
                      "oss:GetObject",
                      "oss:ListObjects",
                      "oss:GetObjectMetadata",
                      "oss:GetObjectMeta",
                      "oss:GetBucketAcl",
                      "oss:GetBucketInfo",
                      "oss:PutObject",
                      "oss:DeleteObject",
                      "oss:PutBucket"
                  ],
                  "Resource": [
                      "acs:oss:*:*:bucket_name_1",
                      "acs:oss:*:*:bucket_name_1/*"
                  ]
              }
          ]
      }
    3. 授权角色拥有指定权限策略。

      修改BigDataOSSRole角色的信任策略,授权BigDataOSSRole角色拥有步骤2创建的策略(Policy),用于后续被授权BigDataOSSRole角色的用户可读取两个指定Bucket的数据。

      重要

      本步骤必须设置,否则将无法使用角色。

      修改角色策略,详情请参见修改RAM角色的信任策略。策略内容如下。

      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "di.dataworks.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
  2. 授权可以使用角色的人员。

    确认所有待扮演角色后,您需要将包含PassRole权限点的Policy授权给相关人员,相关人员才可以通过该角色创建数据源和执行同步任务。同时,您可以根据实际场景要求配置人员和角色的对应关系,即配置哪些人员可以使用哪些角色。

    • 策略模板一:您可以参照如下模板创建策略,该模板允许被授权者使用所有与DataWorks数据集成相关的角色,请谨慎授权。

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "ram:PassRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "acs:Service": "di.dataworks.aliyuncs.com"
                      }
                  }
              }
          ]
      }
    • 策略模板二:您可以根据实际的安全场景需求,自定义包含PassRole权限点的Policy,配置人员和角色的对应关系。

      说明

      仅阿里云主账号和被授予AliyunRAMFullAccess权限的RAM用户可以操作本步骤。

      场景示例:如上文待扮演角色的场景示例所述,当云账号管理者为大数据团队定义了BigDataOssRole角色后,需要指定仅相关人员才能使用该角色。您可以自定义Policy为BigDataOssRoleAllowUse,并授权给相关人员。

      创建名称为BigDataOssRoleAllowUse的策略,详情请参见创建自定义权限策略。其中,策略脚本如下:

      {
          "Version": "1",
          "Statement": [
              {
                  "Action": "ram:PassRole",
                  "Resource": "acs:ram::19122324****:role/BigDataOssRole",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "acs:Service": [
                              "oss.aliyuncs.com",
                              "di.dataworks.aliyuncs.com"
                          ]
                      }
                  }
              }
          ]
      }
      说明

      请替换上述策略中的UID(19122324****)为当前登录的阿里云主账号的UID。

      管理员授权BigDataOssRoleAllowUse策略给允许使用BigDataOssRole角色的RAM用户,被授权BigDataOssRoleAllowUse策略的RAM用户可以通过BigDataOssRole角色来创建数据源(将BigDataOssRole作为数据源的访问身份)、运行同步任务。

  3. 创建数据源。

    当云账号管理者完成对数据源创建者的授权后,即可创建数据源。

    1. 阿里云主账号和被授予 DataWorksFullAccess策略权限的RAM用户,创建并配置OSS数据源。

      配置时,访问模式选择RAM角色授权模式,其他参数配置如下。使用标准模式工作空间时您可根据业务需求在选择配置开发生产环境。

      说明

      本文以OSS数据源为例,实际使用时,请以所需数据源界面为准。配置OSS数据源,详情请参见配置OSS数据源

      image

      参数

      描述

      数据源名称

      数据源名称必须以字母、数字、下划线(_)组合,且不能以数字和下划线(_)开头。

      数据源描述

      对数据源进行简单描述,不得超过80个字符。

      Endpoint

      OSS Endpoint信息,格式为http://oss.aliyuncs.com,OSS服务的Endpoint和地域有关。访问不同的地域时,需要填写不同的域名。

      说明

      Endpoint的正确的填写格式为http://oss.aliyuncs.com,但http://oss.aliyuncs.com在OSS前加上Bucket值,以点号的形式连接。例如http://xxx.oss.aliyuncs.com,测试连通性可以通过,但同步会报错。

      Bucket

      相应的OSS Bucket信息,指存储空间,是用于存储对象的容器。

      您可以创建一个或多个存储空间,每个存储空间可添加一个或多个文件。

      您可以在数据同步任务中查找此处输入的存储空间中相应的文件,没有添加的存储空间,则不能查找其中的文件。

      访问模式

      此处选择RAM角色授权模式,通过STS授权的方式允许云产品服务账号扮演相关角色来访问数据源,具备更高安全性。

      选择角色

      选择角色下拉列表中选择RAM角色。

      地域

      地域下拉列表中选择地域信息。

    2. 测试网络连通性。

      连接配置内,单击相应资源组后的测试连通性

      数据同步时,一个任务只能使用一种资源组。您需要测试每种资源组的连通性,以保证同步任务使用的数据集成资源组能够与数据源连通,否则将无法正常执行数据同步任务。如果您需要同时测试多种资源组,请选中相应资源组后,单击批量测试连通性。详情请参见网络连通方案

    3. 测试连通性通过后,单击完成

  4. 创建同步任务。

    创建数据源后,开发人员可以进入DataStudio(数据开发)页面,基于该数据源创建同步任务,详情请参见配置同步任务

  5. 运行同步任务。

    任务执行者在DataStudio或运维中心页面,执行数据同步任务。

    说明

    DataStudio(数据开发)运行任务时,请确保任务执行者在步骤2(授权可以使用角色的人员)中已被授权,避免任务运行失败。