MaxCompute は RAM および STS と統合され、外部データソースへの安全なアクセスを実現します。本トピックでは、RAM および STS を使用したさまざまなシナリオにおける権限付与方法について説明します。
OSS に対する RAM ロールによる権限付与
MaxCompute の外部テーブルが OSS 内のデータに直接アクセスできるようにするには、テーブル所有者が外部テーブル定義内に必要な OSS アクセス権限を持つ RAM ロールを指定する必要があります。ロールを関連付けた後、所有者はユーザーに対して外部テーブルへのアクセス権限を付与できます。権限付与は以下の方法で行います。
ワンクリック認可(推奨):MaxCompute と OSS が同一の Alibaba Cloud アカウントに属している場合、ご利用のアカウントにログインし、ここをクリックしてワンクリック認可を完了してください。
説明デフォルトの
AliyunODPSDefaultRoleは広範な権限を付与するものであり、参考用です。MaxCompute 外部テーブルまたは外部データソースに必要な権限に合わせて、RAM コンソール でアクセスポリシーおよび信頼ポリシーを設定する必要があります。カスタム認可:この方法は、同一アカウントおよびクロスアカウントの両方のシナリオで使用できます。以下の手順に従ってください。
MaxCompute と OSS が同一アカウントに属している場合、信頼ポリシー内の Service を
odps.aliyuncs.comに設定します。MaxCompute と OSS が異なるアカウントに属している場合、信頼ポリシー内の Service を
<MaxCompute-owner-account-ID>@odps.aliyuncs.comに設定します。アカウント概要ページで MaxCompute 所有者のアカウント ID を取得できます。
RAM ロールを作成します。
RAM コンソール にログインし、RAM ロールページからロールを作成します。たとえば、ロール名を
oss-adminとできます。詳細については、「信頼できる Alibaba Cloud アカウント向けの RAM ロールの作成」をご参照ください。
RAM ロールの信頼ポリシーを変更します。
RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ロール ページで、対象の ロール名 をクリックしてロール詳細ページに移動します。
トラスト規則 タブで、編集トラスト規則 をクリックし、表示された 編集トラスト規則 ページで JSON タブを選択します。
既存のポリシーを以下のコードに置き換えます。
同一アカウント
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }クロスアカウント
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<MaxCompute-owner-account-ID>@odps.aliyuncs.com" ] } } ], "Version": "1" }完了したら、決定 をクリックします。
アクセスポリシーを作成します。
RAM コンソールの Policies ページで、アクセスポリシーを作成します。たとえば、ポリシー名を
AliyunODPSRolePolicyとできます。以下のポリシーは一般的な OSS 権限を付与します。必要に応じて権限をカスタマイズすることも可能です。詳細については、「カスタムアクセスポリシーの作成」をご参照ください。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" } ] }作成した RAM ロールにアクセスポリシーをアタッチします。
RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ロール ページで、対象の ロール名 をクリックしてロール詳細ページに移動します。
権利管理 タブで、新しい権限付与 をクリックします。表示された 追加の承認 パネルで、ロールに付与するポリシーを選択し、Grant permissions をクリックします。
詳細については、「RAM ロールの権限管理」をご参照ください。
Tablestore に対する RAM ロールによる権限付与
MaxCompute の外部テーブルが Tablestore 内のデータに直接アクセスできるようにするには、テーブル所有者が外部テーブル定義内に必要な Tablestore アクセス権限を持つ RAM ロールを指定する必要があります。ロールを関連付けた後、所有者はユーザーに対して外部テーブルへのアクセス権限を付与できます。権限付与は以下の方法で行います。
ワンクリック認可(推奨):MaxCompute と Tablestore が同一の Alibaba Cloud アカウントに属している場合、ご利用のアカウントにログインし、ここをクリックしてワンクリック認可を完了してください。
カスタム認可:この方法は、MaxCompute と Tablestore が異なるアカウントに属するクロスアカウントシナリオに適用されます。
RAM ロールを作成します。
Tablestore アカウントで RAM コンソール にログインし、RAM ロールページからロールを作成します。たとえば、ロール名を
tablestore-access-roleとできます。詳細については、「信頼できる Alibaba Cloud アカウント向けの RAM ロールの作成」をご参照ください。
RAM ロールの信頼ポリシーを変更します。
MaxCompute と Tablestore が異なるアカウントに属している場合、MaxCompute から Tablestore へのクロスアカウントアクセスを有効にするために、以下の設定を使用します。
RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ロール ページで、対象の ロール名 をクリックしてロール詳細ページに移動します。
トラスト規則 タブで、編集トラスト規則 をクリックし、表示された 編集トラスト規則 ページで JSON タブを選択します。
以下のポリシーを設定します。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<MaxCompute-owner-account-ID>@odps.aliyuncs.com" ] } } ], "Version": "1" }<MaxCompute-owner-account-ID>プレースホルダーは、MaxCompute プロジェクトを所有する Alibaba Cloud アカウントの ID を表します。
アクセスポリシーを作成します。
RAM コンソールの Policies ページで、アクセスポリシーを作成します。たとえば、ポリシー名を
AliyunODPSRolePolicyとできます。以下のポリシーは一般的な Tablestore 権限を付与します。必要に応じて権限をカスタマイズすることも可能です。詳細については、「カスタムアクセスポリシーの作成」をご参照ください。
{ "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" } ] }作成した RAM ロールに
AliyunODPSRolePolicyアクセスポリシーをアタッチします。RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ロール ページで、対象の ロール名 をクリックしてロール詳細ページに移動します。
権利管理 タブで、新しい権限付与 をクリックします。表示された 追加の承認 パネルで、ロールに付与するポリシーを選択し、Grant permissions をクリックします。
詳細については、「RAM ロールの権限管理」をご参照ください。
Hologres に対する RAM ロールによる権限付与
MaxCompute の外部テーブルが Hologres 内のデータに直接アクセスできるようにするには、テーブル所有者が外部テーブル定義内に必要な Hologres アクセス権限を持つ RAM ロールを指定する必要があります。ロールを関連付けた後、所有者はユーザーに対してこの外部テーブルへのアクセス権限を付与できます。必要な権限を設定するには、以下の手順に従ってください。
RAM ロールの作成
RAM ロールを作成し、その Alibaba Cloud リソースネーム (ARN) を取得します。ARN は、外部テーブル作成時に STS 認証を設定するために必要です。ビジネス要件に基づいて、信頼できるエンティティの種類を選択します。本例では、Alibaba Cloud アカウントを信頼できるエンティティとしています。
Alibaba Cloud アカウント:
Alibaba Cloud アカウントに属する RAM ユーザーは、RAM ロールを偽装してクラウドリソースにアクセスできます。詳細については、「信頼できる Alibaba Cloud アカウント向けの RAM ロールの作成」をご参照ください。
ID プロバイダー:
シングルサインオン (SSO) を設定することで、企業の ID システムに属するユーザーが Alibaba Cloud コンソールにログインできるようになります。これにより、ユーザーの統一ログインおよび認証要件を満たすことができます。詳細については、「信頼できる ID プロバイダー向けの RAM ロールの作成」をご参照ください。
以下の手順を実行します。
RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ロール ページで、ロールの作成 をクリックします。
信頼ポリシーの変更
ロール ページで、対象の ロール名 をクリックしてロール詳細ページに移動します。
トラスト規則 タブで、編集トラスト規則 をクリックし、表示された 編集トラスト規則 ページで JSON タブを選択します。
以下の例に従って信頼ポリシーを変更します。
信頼ポリシーの内容は、信頼できるエンティティの種類によって異なります。
<UID>は、ご利用の Alibaba Cloud アカウント ID に置き換えてください。ユーザー情報ページでアカウント ID を取得できます。Alibaba Cloud アカウント
{ "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" }ID プロバイダー
{ "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" }
Hologres インスタンスへの RAM ロールの追加および権限付与
RAM ロールは、Hologres インスタンスのリソースにアクセスするために、開発者権限が必要です。
デフォルトでは、RAM ロールは Hologres 管理コンソールでインスタンスを表示または管理できません。Alibaba Cloud アカウント所有者が、ロールに必要な権限を付与する必要があります。
Hologres インスタンスに RAM ロールを追加するには、以下の手順に従ってください。
Hologres コンソール
Hologres 管理コンソール にログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、Instances をクリックします。
Instances ページで、対象のインスタンス名をクリックします。
インスタンス詳細ページの左側ナビゲーションウィンドウで、Account Management をクリックします。
User Management ページで、Add User をクリックします。
表示された Add User ダイアログボックスで、パラメーターを設定し、OK をクリックします。
Role を
AliyunODPSDefaultRoleに設定します。Member Role を Regular userに設定します。
User Management ページの左側ナビゲーションウィンドウで、DB Authorization をクリックします。
Database Authorization ページで、Create Database をクリックします。
Create Database ダイアログボックスで、必要なパラメーターを設定し、OK をクリックします。
ポリシー を SPM に設定します。
DB Authorization ページで、対象のデータベースの Actions 列にある Authorize User をクリックします。
右上隅の Grant Permissions をクリックします。表示された Grant Permissions ダイアログボックスで、User および User Group を設定します。
ユーザー で、設定する RAM ユーザーを選択します。
グループ で、Developer を選択します。
RAM コンソール
作成した RAM ロールに
AliyunODPSRolePolicyアクセスポリシーをアタッチします。RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ユーザー ページで、対象の ユーザーログイン名/表示名 をクリックしてユーザー詳細ページに移動します。
ユーザー詳細ページで、権利管理 タブをクリックします。
権利管理 タブで、ユーザー権限 を選択し、権限の付与 をクリックします。
権限の付与 パネルで、ユーザーに付与するポリシーを選択し、Grant permissions をクリックします。
アクセスポリシーには、
AliyunRAMReadOnlyAccessを選択します。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
SQL
権限付与に関する SQL ステートメントについては、「Hologres 権限モデル」をご参照ください。
Hologres はデュアル署名認証もサポートしています。詳細については、「Hologres 外部テーブル」をご参照ください。
DLF および OSS に対する RAM ロールによる権限付与
MaxCompute、DLF、OSS を使用してデータレイクハウスを構築する際には、まず DLF および OSS の両方に対する必要なデータアクセス権限を持つ RAM ロールに関連付けられた外部データソースを作成する必要があります。この設定を使用して、データにアクセスするための外部スキーマを作成できます。外部スキーマ内のテーブルに対して他のユーザーに権限を付与する方法については、「外部スキーマ内の連携外部テーブルへの権限付与」をご参照ください。権限付与は以下の方法で行います。
ワンクリック認可(推奨):MaxCompute プロジェクトの作成に使用するアカウントが、DLF および OSS のデプロイに使用するアカウントと同じである場合、DLF および OSS の認可 をクリックして認可を完了できます。
カスタム認可:この方法は、同一アカウントおよびクロスアカウントの両方のシナリオで使用できます。以下の手順に従ってください。
MaxCompute プロジェクトと DLF が同一アカウントにある場合、信頼ポリシー内の Service を
odps.aliyuncs.comに設定します。MaxCompute プロジェクトと DLF が異なるアカウントにある場合、信頼ポリシー内の Service を
<MaxCompute-project-owner-account-ID>@odps.aliyuncs.comに設定します。MaxCompute 所有者アカウント ID は、アカウント概要ページで取得できます。
RAM コンソール にログインし、「信頼できる Alibaba Cloud アカウント向けの RAM ロールの作成」に従って RAM ロールを作成します。
RAM コンソールで、「RAM ロールの信頼ポリシーの変更」に従って RAM ロールの信頼ポリシーを変更します。信頼ポリシーには以下の内容を使用します。
同一アカウント
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }クロスアカウント
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<MaxCompute-project-owner-account-ID>@odps.aliyuncs.com" ] } } ], "Version": "1" }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" } ] }作成した RAM ロールにカスタムアクセスポリシーをアタッチします。詳細については、「RAM ロールの権限管理」をご参照ください。
Hologres に対するサービスリンクロールによる権限付与(ID パススルー)
MaxCompute が外部データソースおよび外部プロジェクトを介して Hologres 内のデータにアクセスする際には、Hologres に必要なデータアクセス権限を付与するためにサービスリンクロールを使用する必要があります。ロール作成後、このモードでは ID パススルーによる権限付与が行われ、ユーザーの ID を Hologres に渡して認証を行い、不正アクセスを防止します。この機能を使用するには、ユーザーが MaxCompute 外部プロジェクトのメンバーであり、外部プロジェクトにマップされた Hologres データソースに対する権限を持っている必要があります。
RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ロール ページで、ロールの作成 をクリックします。
ロールの作成 ページの右上隅で、Create Service Linked Role をクリックします。
Create Service Linked Role ページで、Select Service に
aliyunserviceroleformaxcomputeidentitymgmtを選択し、Create Service Linked Role をクリックします。「ロールはすでに存在します」というメッセージが表示された場合は、ロールがすでに認可されていることを意味します。このメッセージは無視してください。
Paimon_DLF に対するサービスリンクロールによる権限付与(ID パススルー)
MaxCompute が外部データソースおよび外部プロジェクトを介して DLF 内のデータにアクセスする際には、DLF に必要なデータアクセス権限を付与するためにサービスリンクロールを使用する必要があります。ロール作成後、このモードでは ID パススルーによる権限付与が行われ、ユーザーの ID を DLF に渡して認証を行い、不正アクセスを防止します。この機能を使用するには、ユーザーが MaxCompute 外部プロジェクトに追加されており、外部プロジェクトにマップされた DLF データソースに対する権限を持っている必要があります。
RAM コンソール にログインします。
左側のナビゲーションバーで、 を選択します。
ロール ページで、ロールの作成 をクリックします。
ロールの作成 ページの右上隅で、Create Service Linked Role をクリックします。
Create Service Linked Role ページで、Select Service に
AliyunServiceRoleForMaxComputeLakehouseを選択し、Create Service Linked Role をクリックします。「ロールはすでに存在します」というメッセージが表示された場合は、ロールがすでに認可されていることを意味します。このメッセージは無視してください。