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

前提条件

如果您登录的是RAM用户并需要完成本文的所有操作流程,请首先为RAM用户授予DataWorksFullAccess AliyunRamFullAccess权限。如果您使用的是阿里云主账号,请忽略该前提条件。
  1. RAM用户登录RAM访问控制
  2. 在左侧导航栏,单击用户
  3. 单击相应RAM用户后的添加权限添加权限
  4. 添加权限对话框中,选择授权范围云账号全部资源,在选择权限区域分别单击DataWorksFullAccess AliyunRamFullAccess授权
  5. 单击确定

背景信息

数据源是数据同步任务的基础,同时关系着企业云上数据的安全性。DataWorks支持您使用更高安全系数的RAM角色授权模式配置并访问OSS、AnalyticDB for MySQL 2.0、LogHub、OTS和Hologres等部分数据源,以提升云上数据的安全性,避免数据源被滥用、密钥泄露等情况。
数据源的访问模式包括RAM角色授权模式和Access Key模式。本文为您介绍的是通过RAM角色授权模式配置数据源,您可以根据业务需求进行选择。Access Key模式和RAM角色授权模式的实现原理如下:
  • Access Key模式

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

    以OSS数据源为例,您在配置数据源页面输入具有访问OSS某个Bucket权限的账号AK,即可完成配置。配置数据源
    在执行、调度运行同步任务时,您可以通过该AK来访问OSS并读写数据。OSS
    说明 Access Key模式下,一旦该云账号的AK被泄露,会导致OSS数据同时被泄露。
  • RAM角色授权模式

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

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

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

流程介绍

为方便子账号可以替代主账号完成全链路操作,本说明增加阿里云子账号在每一个步骤的操作条件。RAM角色授权模式的操作流程如下。操作流程
  1. 阿里云主账号或RAM用户(被授予DataWorksFullAccess权限)登录DataWorks数据集成页面,开启RAM角色授权模式
  2. 阿里云主账号或RAM用户(被授予 AliyunRamFullAccess角色)登录RAM访问控制,分别定义待扮演角色和待授权策略。
    • 待扮演角色:您需要创建自定义角色供DataWorks服务账号扮演。扮演后,DataWorks服务账号即可在角色具备的权限范围内,访问OSS数据源。
    • 待授权策略:您需要创建包含 PassRole相关权限点的策略,用于授权某个使用者使用某个角色创建数据源或运行同步任务的权限。
  3. 阿里云主账号或RAM用户(被授予 AliyunRamFullAccess权限)登录RAM访问控制,授权第4步和第6步的RAM用户使用角色的权限。
    说明 如果未被授权的RAM用户通过RAM角色授权模式创建数据源,则通过RAM角色授权模式数据源配置的同步任务都将运行失败。
  4. 数据源的创建者登录DataWorks数据集成页面,以RAM角色授权模式创建数据源,实现运行同步任务时,以DataWorks服务账号扮演某个角色访问OSS数据源的最终效果。
    说明 本步骤的创建者必须装在步骤3中被授权后,才能进行操作。
  5. 数据同步任务的创建者登录DataStudio(数据开发)页面,基于配置的数据源创建同步任务。
  6. 执行者在DataStudio或运维中心页面,执行数据同步任务。
    说明 本步骤的创建者必须装在步骤3中被授权后,才能进行操作。

操作步骤

  1. 开启RAM角色授权模式。
    在初次选择RAM角色授权模式时,需要执行一次性开启RAM角色授权,以便允许DataWorks服务账号以角色扮演的方式访问数据源。一次性开启RAM角色授权的操作如下:
    1. 阿里云主账号或RAM用户(被授予 DataWorksFullAccess权限)登录数据源管理页面。
    2. 单击页面右上方的新增数据源
    3. 新增数据源对话框中,选择数据源类型为OSS
    4. 新增OSS数据源对话框中,选择访问模式RAM角色授权模式
      OSS
    5. 警告对话框中,单击开启授权,进行授权操作即可。
      开启授权
  2. 创建待扮演角色。
    根据实际的安全场景,您需要自定义不同的角色,以匹配不同的数据源。
    说明 仅阿里云主账号和被授予 AliyunRAMFullAccess权限的RAM用户可以操作本步骤。

    本文以下述场景为例,为您介绍如何创建待扮演角色。

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

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

    1. 登录RAM访问控制
    2. 在左侧导航栏,单击RAM角色管理
    3. 单击创建RAM角色
    4. 创建RAM角色对话框的选择类型区域,选择当前可信实体类型阿里云账号,单击下一步
      RAM角色
    5. 配置角色区域,输入角色名称BigDataOssRole,并选择云账号当前云账号
      配置角色
    6. 单击完成
    7. 创建完成区域,单击为角色授权
      授权
    8. 添加权限对话框中,单击新建权限策略,创建一个策略。详情请参见创建自定义策略
      授权策略
      以策略(Policy)内容为完全管理某2个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_2"
                  ]
              }
          ]
      }
    9. RAM角色管理页面,单击BigDataOSSRole
      BigDataOSSRole基本信息页面,单击信任策略管理 > 修改信任策略,修改BigDataOSSRole角色的授信策略为如下内容,单击确定,以便允许DataWorks数据集成服务账号扮演该角色。
      注意 本步骤必须设置,否则将无法使用角色。
      {
          "Statement": [
              {
                  "Action": "sts:AssumeRole",
                  "Effect": "Allow",
                  "Principal": {
                      "Service": [
                          "di.dataworks.aliyuncs.com"
                      ]
                  }
              }
          ],
          "Version": "1"
      }
      信任策略
  3. 授权可以使用角色的人员。
    确认所有待扮演角色后,您需要将包含PassRole权限点的Policy授权给相关人员,相关人员才可以通过该角色创建数据源和执行同步任务。同时,您可以根据实际场景要求配置人员和角色的对应关系,即配置哪些人员可以使用哪些角色。
    • 策略模板一:您可以参照如下模板创建策略,该模板允许被授权者使用所有与DataWorks数据集成相关的角色,请谨慎授权。
      {
                  "Action": "ram:PassRole",
                  "Resource": "*",
                  "Effect": "Allow",
                  "Condition": {
                      "StringEquals": {
                          "acs:Service": "di.dataworks.aliyuncs.com"
                      }
                  }
      }
    • 策略模板二:您可以根据实际的安全场景需求,自定义包含PassRole权限点的Policy,配置人员和角色的对应关系。
      说明 仅阿里云主账号和被授予AliyunRAMFullAccess权限的RAM用户可以操作本步骤。

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

      创建策略的操作如下:
      1. 登录页面,单击创建权限策略
      2. 新建自定义权限策略页面,输入策略名称BigDataOssRoleAllowUse,并选择配置模式脚本配置,输入如下策略。
        {
            "Version": "1",
            "Statement": [
                {
                    "Action": "ram:PassRole",
                    "Resource": "acs:ram::19122324****:role/BigDataOssRole",
                    "Effect": "Allow",
                    "Condition": {
                        "StringEquals": {
                            "acs:Service": "oss.aliyuncs.com",
                            "acs:Service": "di.dataworks.aliyuncs.com"
                        }
                    }
                }
            ]
        }
        说明 请替换上述策略中的UID(19122324****)为当前登录的阿里云主账号的UID。
        策略
      3. 管理员授权BigDataOssRoleAllowUse策略给允许使用BigDataOssRole角色的RAM用户。

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

  4. 创建数据源。
    当云账号管理者完成对数据源创建者的授权后,即可创建数据源。
    1. 阿里云主账号和RAM用户(被授予 DataWorksFullAccess权限)登录数据源管理页面。
    2. 单击页面右上方的新增数据源
    3. 新增数据源对话框中,选择数据源类型为OSS
    4. 新增OSS数据源对话框中,选择访问模式RAM角色授权模式,配置各项参数。
      OSS
      参数 描述
      数据源名称 数据源名称必须以字母、数字、下划线(_)组合,且不能以数字和下划线(_)开头。
      数据源描述 对数据源进行简单描述,不得超过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角色。
    5. 数据集成页签下,单击相应资源组后的测试连通性
      数据同步时,一个任务只能使用一种资源组。您需要测试每种资源组的连通性,以保证同步任务使用的数据集成资源组能够与数据源连通,否则将无法正常执行数据同步任务。如果您需要同时测试多种资源组,请选中相应资源组后,单击批量测试连通性。详情请参见数据源测试连通性
    6. 测试连通性通过后,单击完成
    创建数据源后,开发人员可以进入DataStudio(数据开发)页面,基于该数据源创建同步任务,详情请参见配置同步任务

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