このトピックでは、ある Alibaba Cloud アカウントの MaxCompute が、別の Alibaba Cloud アカウントに属する Tablestore リソースにアクセスできるように権限を付与する方法について説明します。
前提条件
クロスアカウントアクセスを有効にするには、2 つの Alibaba Cloud アカウントが必要です。Tablestore リソースを所有する Account A が、Account B に対して権限を付与します。これにより、Account B の MaxCompute が Account A のデータにアクセスできるようになります。次の表は、この例で使用するアカウントを示しています。
このトピックの情報は例として提供されています。実際の情報に置き換えてください。
|
項目 |
Tablestore |
MaxCompute |
|
Alibaba Cloud アカウント名 |
Account A |
Account B |
|
UID |
1234567890**** |
5678901234**** |
MaxCompute を使用して異なるアカウントの Tablestore リソースにアクセスする前に、次の手順を完了してください。
-
Account B について、MaxCompute プロダクト詳細ページで MaxCompute を有効化し、ワークスペースを作成します。詳細については、「ワークスペースの作成」をご参照ください。
-
Account A および Account B の AccessKey ペアを取得します。詳細については、「AccessKey ペアの取得」をご参照ください。
-
Account A で、信頼できるエンティティとして Alibaba Cloud アカウント を指定した RAM ロールを作成し、その信頼ポリシーを設定します。詳細については、「Alibaba Cloud アカウント向けの RAM ロールの作成」および「RAM ロールの信頼ポリシーの変更」をご参照ください。
説明ポリシー内の
5678901234****は、Account B の UID です。次のサンプルの信頼ポリシーでは、アカウント B の MaxCompute サービスがこの RAM ロールを偽装することを許可しています。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "5678901234****@odps.aliyuncs.com" ] } } ], "Version": "1" } -
Account A の AliyunODPSRoleForOtherUser RAM ロールの ARN を記録します。外部テーブル作成時にこのロール ARN が必要になります。例:
acs:ram::1234567890****:role/aliyunodpsroleforotheruser。
-
ポリシーを作成し、Account A の AliyunODPSRoleForOtherUser RAM ロールにアタッチします。詳細については、「カスタムポリシーの作成」および「RAM ロールの権限管理」をご参照ください。
次のサンプルポリシーは、RAM ロールに対して、中国 (杭州) リージョンにある Account A 所属のインスタンス
cap1およびそのすべてのテーブルに対する読み取り・書き込み権限を付与します。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": "ots:*", "Resource": [ "acs:ots:cn-hangzhou:1234567890****:instance/cap1", "acs:ots:cn-hangzhou:1234567890****:instance/cap1/table/*" ], "Condition": {} } ] }カスタムポリシーの詳細については、「カスタム権限ポリシー」をご参照ください。
-
Tablestore コンソールでインスタンスおよびデータテーブルを作成します。詳細については、「インスタンスの作成」および「データテーブルの作成」をご参照ください。
この例では、Tablestore インスタンスおよびデータテーブルを次のように設定します。
-
インスタンス名: cap1
-
データテーブル名: vehicle_track
-
プライマリキー: vid (整数)、gt (整数)
-
エンドポイント:
https://cap1.cn-hangzhou.ots-internal.aliyuncs.com説明MaxCompute を使用して Tablestore にアクセスする場合は、Tablestore インスタンスのプライベートエンドポイントを使用することを推奨します。
-
インスタンスのネットワークアクセス制御が 任意のネットワークからのアクセスを許可 に設定されていることを確認してください。
-
MaxCompute を使用した Tablestore へのアクセス
クロスアカウントアクセスのプロシージャは、同一アカウントアクセスと同一ですが、外部テーブル作成時にロール ARN を指定する必要があります。
Account B で、MaxCompute に外部テーブルを作成します。前提条件セクションで作成したロール ARN を指定して、Tablestore へのアクセス権限を付与します。
CREATE EXTERNAL TABLE ads_log_ots_pt_external
(
vid bigint,
gt bigint,
longitude double,
latitude double,
distance double,
speed double,
oil_consumption double
)
STORED BY 'com.aliyun.odps.TableStoreStorageHandler'
WITH SERDEPROPERTIES (
'tablestore.columns.mapping'=':vid, :gt, longitude, latitude, distance, speed, oil_consumption',
'tablestore.table.name'='vehicle_track',
'odps.properties.rolearn'='acs:ram::1234567890****:role/aliyunodpsroleforotheruser'
)
LOCATION 'tablestore://cap1.cn-hangzhou.ots-internal.aliyuncs.com'
USING 'odps-udf-example.jar'