全部产品
阿里云办公

跨账号授权

更新时间:2018-08-13 17:36:00

本文档介绍不同账号之间如何实现表格存储和 MaxCompute 之间的无缝连接。如需了解同账号下的表格存储与 Maxcompute 对接操作,请参考同账号下使用 MaxCompute 访问表格存储

准备工作

跨云账号需要两个主账号,账号 A 将访问权限授予账号 B,则运行 MaxCompute 时,账号 B 可以访问账号 A 下的表数据。基本信息如下:

说明:以下信息仅为示例,在操作时请替换为实际使用的信息。

项目 表格存储 MaxCompute
主账号名 账号 A 账号 B
UserId 12345 56789

使用 MaxCompute 跨云账号访问表格存储前,您需要完成以下准备工作:

  1. 账号 B 开通 MaxCompute 服务,并创建 MaxCompute 项目

  2. 账号 A 和 B 分别 创建 AccessKey

  3. 使用账号 A 登录 RAM 控制台,并在角色管理页面,创建用户角色。

    在本示例中,假设创建的角色名称为 AliyunODPSRoleForOtherUser

  4. 进入该角色,在角色详情页面单击编辑基本信息,设置策略内容。
    策略内容设置如下:

    1. {
    2. "Statement": [
    3. {
    4. "Action": "sts:AssumeRole",
    5. "Effect": "Allow",
    6. "Principal": {
    7. "Service": [
    8. "1xxxx@odps.aliyuncs.com"
    9. ]
    10. }
    11. }
    12. ],
    13. "Version": "1"
    14. }

    说明: 请将上述策略内容中的 1xxxx 替换成您的 UID 即可。

  5. 角色创建后,您可以在角色详情页面查看该角色的 roleArn:

    角色详情

  6. 返回 RAM 控制台首页,进入策略管理页面,新建授权策略。

    在本示例中,假设授权策略名称为 AliyunODPSRolePolicyForOtherUser

    新建授权策略

    策略内容如下:

    1. {
    2. "Version": "1",
    3. "Statement": [
    4. {
    5. "Action": [
    6. "ots:ListTable",
    7. "ots:DescribeTable",
    8. "ots:GetRow",
    9. "ots:PutRow",
    10. "ots:UpdateRow",
    11. "ots:DeleteRow",
    12. "ots:GetRange",
    13. "ots:BatchGetRow",
    14. "ots:BatchWriteRow",
    15. "ots:ComputeSplitPointsBySize"
    16. ],
    17. "Resource": "*",
    18. "Effect": "Allow"
    19. }
    20. ]
    21. }

    说明:您也可以自定义其他权限,如 CreateTable 等。

  7. 角色管理页面,将 AliyunODPSRolePolicyForOtherUser 权限授权给 AliyunODPSRoleForOtherUser 角色。

    授权

  8. 在表格存储控制台创建实例创建数据表

    在本示例中,创建的表格存储实例和数据表信息如下:

    • 实例名称:cap1
    • 数据表名称:vehicle_track
    • 主键信息:vid (integer),gt (integer)
    • 访问域名:https://cap1.cn-hangzhou.ots-internal.aliyuncs.com

      说明:使用 MaxCompute 访问表格存储时,建议使用表格存储的私网地址。

    • 设置实例网络类型允许任意网络访问

使用 MaxCompute 访问表格存储

跨账号访问的操作与同账号下的访问一样,只是在创建外部表时使用 roleArn。

账号 B 通过 MaxCompute 创建外部表,指定准备工作中创建出来的 roleArn 来访问表格存储。

具体操作步骤请参考同账号授权访问。其中,在步骤 2 创建外部表时,使用如下代码:

  1. CREATE EXTERNAL TABLE ads_log_ots_pt_external
  2. (
  3. vid bigint,
  4. gt bigint,
  5. longitude double,
  6. latitude double,
  7. distance double ,
  8. speed double,
  9. oil_consumption double
  10. )
  11. STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
  12. WITH SERDEPROPERTIES (
  13. 'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption',
  14. 'tablestore.table.name'='vehicle_track',
  15. 'odps.properties.rolearn'='acs:ram::12345:role/aliyunodpsroleforotheruser'
  16. )
  17. LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'
  18. USING 'odps-udf-example.jar'
本文导读目录