MaxCompute は、Alibaba Cloud Resource Access Management (RAM) とセキュリティトークンサービス (STS) を使用して、データアクセスを保護します。このトピックでは、RAM と STS を使用して権限を付与する方法について説明します。
通常のロールに対する OSS STS に基づく権限付与
MaxCompute の外部テーブルが OSS データに直接アクセスできるようにするには、まず必要な OSS 権限を MaxCompute アカウントに付与します。次のいずれかの方法を使用します。
ワンクリック権限付与 (推奨): MaxCompute と OSS が同じ Alibaba Cloud アカウントに属している場合は、お使いの Alibaba Cloud アカウントにログインし、ここをクリックしてワンクリック権限付与を完了します。
説明デフォルトの AliyunODPSDefaultRole には広範な権限があります。これはあくまでリファレンスとしてのみ使用してください。MaxCompute の外部テーブルまたは外部データソースがアクセスする必要がある外部データに基づいて、リソースアクセス管理 (RAM) コンソールで適切なアクセスポリシーおよび信頼ポリシーを設定してください。
カスタム権限付与: MaxCompute と OSS が同じ Alibaba Cloud アカウントに属しているかどうかにかかわらず、この方法を使用します。次の手順に従います。
MaxCompute と OSS が同じ Alibaba Cloud アカウントに属している場合は、信頼ポリシーで service を
odps.aliyuncs.comに設定します。MaxCompute および OSS が 異なる Alibaba Cloud アカウント に属する場合、信頼ポリシーで [service] を
<MaxCompute オーナーの Alibaba Cloud アカウント ID>@odps.aliyuncs.comに設定します。MaxCompute オーナーの Alibaba Cloud アカウント ID は、[アカウント概要] ページで確認できます。
RAM ロールを作成します。
リソースアクセス管理 (RAM) コンソールにログインします。次に、リソースアクセス管理 (RAM) コンソール を使用して、RAM ロールを作成します。たとえば、oss-admin という名前のロールを作成します。ロールの作成について詳しくは、「信頼できるエンティティが Alibaba Cloud アカウントである RAM ロールを作成する」をご参照ください。

RAM ロールの信頼ポリシーを編集します。
リソースアクセス管理 (RAM) コンソールにログインします。リソースアクセス管理 (RAM) コンソール。
左側のナビゲーションウィンドウで、 を選択します。
「ロール」ページで、対象の[ロール名]をクリックして、その詳細ページを開きます。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。[信頼ポリシーの編集] ページで、[JSON] タブをクリックします。
次のポリシーを設定します。
MaxCompute と OSS が同じ Alibaba Cloud アカウントに属している場合
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }MaxCompute と OSS が異なる Alibaba Cloud アカウントに属している場合
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<Alibaba Cloud account ID of the MaxCompute owner>@odps.aliyuncs.com" ] } } ], "Version": "1" }作業が完了したら、 [OK] をクリックします。
アクセスポリシーを作成します。
RAM コンソールの [ポリシー] ページで、アクセスポリシーを作成します。たとえば、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) コンソール」にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、詳細ページを開くために対象の [ロール名] をクリックします。
[権限] タブで、[権限付与] をクリックします。[権限付与] パネルで、ロールのアクセスポリシーを選択し、[OK] をクリックします。
詳細については、「RAM ロールの権限を管理する」をご参照ください。
通常のロールに対する Tablestore STS に基づく権限付与
MaxCompute の外部テーブルが Tablestore データに直接アクセスできるようにするには、まず必要な Tablestore 権限を MaxCompute アカウントに付与します。次のいずれかの方法を使用します。
ワンクリックでの権限付与 (推奨): MaxCompute と Tablestore が同じ Alibaba Cloud アカウントに属している場合、Alibaba Cloud アカウントにログインし、ここをクリックしてワンクリックでの権限付与を完了します。
カスタム権限付与: MaxCompute と Tablestore が異なる Alibaba Cloud アカウントに属している場合は、この方法を使用します。カスタムロールを作成し、権限を付与します。
RAM ロールを作成します。
OTS アカウントを使用して、リソースアクセス管理 (RAM) コンソール にログインし、RAM コンソールの RAM ロール セクションを通じてロールを作成します。たとえば、ロール名は oss-admin-ots です。
ロールの作成の詳細については、「信頼できるエンティティが Alibaba Cloud アカウントである RAM ロールの作成」をご参照ください。
RAM ロールの信頼ポリシーを編集します。
MaxCompute と Tablestore が異なる Alibaba Cloud アカウントに属している場合は、MaxCompute から Tablestore へのクロスアカウントアクセスをサポートするために、以下に示すように信頼ポリシーを設定します。
リソースアクセス管理 (RAM) コンソールにログインします。リソースアクセス管理 (RAM) コンソール。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、対象の [ロール名] をクリックして、その詳細ページを開きます。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。[信頼ポリシーの編集] ページで、[JSON] タブをクリックします。
次の信頼ポリシーを設定します。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<Alibaba Cloud account ID of the MaxCompute owner>@odps.aliyuncs.com" ] } } ], "Version": "1" }MaxCompute オーナーの Alibaba Cloud アカウント IDは、Tablestore にアクセスするアカウントです。
アクセスポリシーを作成します。
RAM コンソールの ポリシー ページで、アクセスポリシーを作成します。たとえば、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" } ] }AliyunODPSRolePolicy アクセスポリシーを新しい RAM ロールにアタッチします。
リソースアクセス管理 (RAM) コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、対象の [ロール名] をクリックして詳細ページを開きます。
[権限] タブで、[権限の付与] をクリックします。権限の付与 パネルで、ロールのアクセスポリシーを選択し、[OK] をクリックします。
詳細については、「RAM ロールの権限管理」をご参照ください。
通常のロールに対する Hologres STS に基づく権限付与
MaxCompute の外部テーブルが Hologres データに直接アクセスできるようにするには、まず必要な Hologres 権限を MaxCompute アカウントに付与します。このセクションでは、STS を使用してアクセスを権限付与する方法について説明します。
RAM ロールの作成
RAM ロールを作成してその ARN を取得します。外部テーブルを作成して STS 認証を設定する際に、この ARN を使用します。ニーズに基づいて信頼できるエンティティのタイプを選択します。この例では、信頼できるエンティティは Alibaba Cloud アカウントです。
Alibaba Cloud アカウント:
Alibaba Cloud アカウント下の RAM ユーザーは、RAM ロールを偽装してクラウドリソースにアクセスできます。詳細については、「信頼できるエンティティが Alibaba Cloud アカウントである RAM ロールの作成」をご参照ください。
ID プロバイダー:
シングルサインオン (SSO) を使用して、ユーザーが企業 ID システムから Alibaba Cloud マネジメントコンソールにログインできるようにします。これにより、統合認証の要件が満たされます。詳細については、「信頼できるエンティティが ID プロバイダーである RAM ロールの作成」をご参照ください。
次の手順に従います。
左側のナビゲーションウィンドウで、 を選択します。
[ロール]ページで、[ロールの作成]をクリックします。
信頼ポリシーの編集
[ロール] ページで、目的の [ロール名] をクリックして、その詳細ページを開きます。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。[信頼ポリシーの編集] ページで、[JSON] タブをクリックします。
以下に示すように信頼ポリシーを更新します。
信頼ポリシーは、選択する信頼できるエンティティのタイプによって異なります。
<UID>を、お使いの Alibaba Cloud アカウント ID に置き換えます。 Alibaba Cloud アカウント 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 インスタンスに対する開発権限を持っている必要があり、その権限スコープ内で Hologres を使用できます。
デフォルトでは、RAM ロールには Hologres マネジメントコンソールで Hologres インスタンスを表示または管理する権限がありません。続行する前に、Alibaba Cloud アカウントがこれらの権限を付与する必要があります。
Hologres インスタンスに RAM ロールを追加するには、次の手順に従います。
Hologres マネジメントコンソールを介した権限付与
Hologres マネジメントコンソールにログインし、左上隅でリージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] を選択します。
[インスタンス] ページで、対象のインスタンス名をクリックします。
インスタンスの詳細ページで、左側のナビゲーションウィンドウから [アカウント管理] を選択します。
[ユーザー管理] ページで、[ユーザーの追加] をクリックします。
ポップアップ表示される[ユーザーの追加] ダイアログボックスで、必要な情報を設定し、[OK] をクリックします。
AliyunODPSDefaultRoleロールを選択します。メンバーロールとして 通常ユーザー を選択します。
[ユーザー管理] ページで、左側のナビゲーションウィンドウから [データベース承認] を選択します。
[データベース承認] ページで、[データベースの作成] をクリックします。
「データベースの作成」ダイアログボックスで、パラメーターを設定し、[OK]をクリックします。
[権限ポリシー] SPM を選択します。
「データベース承認」ページで、対象のデータベースの操作列のユーザーを承認をクリックします。
右上隅にある[権限の付与]をクリックします。表示される[権限の付与]ダイアログボックスで、[ユーザー]と[ユーザーグループ]を設定します。
[ユーザー] 設定する RAM ユーザーを選択します。
ユーザーグループ デベロッパーを選択してください。
RAM コンソールを介した権限付与
AliyunODPSRolePolicy アクセスポリシーを新しい RAM ロールにアタッチします。
左側のナビゲーションウィンドウで、 を選択します。
[ユーザー] ページで、対象のユーザーの [ユーザーログオン名/表示名] をクリックすると、ユーザー詳細ページが開きます。
ユーザー詳細ページで、権限 タブをクリックします。
[権限] タブで、[個人] を選択し、[権限を付与] をクリックします。
「権限の付与」パネルで、アクセスポリシーを選択し、[OK] をクリックします。
AliyunRAMReadOnlyAccess権限ポリシーを選択します。詳細については、「RAM ユーザーへの権限付与」をご参照ください。
SQL を使用した権限付与
SQL に基づく権限付与については、「Hologres 権限モデル」をご参照ください。
Hologres はデュアル署名認証もサポートしています。詳細については、「Hologres 外部テーブル」をご参照ください。
DLF+OSS STS に基づく通常のロールの権限付与
MaxCompute、DLF、および OSS を使用してデータレイクハウスを構築する場合、MaxCompute プロジェクトは権限付与されない限り DLF または OSS にアクセスできません。次のいずれかの方法を使用してアクセスを権限付与します。
ワンクリック権限付与 (推奨): MaxCompute プロジェクトを作成する Alibaba Cloud アカウントが、DLF と OSS をデプロイするアカウントと同じである場合は、この方法を使用します。DLF と OSS の権限付与をクリックしてワンクリック権限付与を完了します。
カスタム権限付与: MaxCompute プロジェクトを作成する Alibaba Cloud アカウントが、DLF と OSS をデプロイするアカウントと同じであるかどうかにかかわらず、この方法を使用します。次の手順に従います。
MaxCompute プロジェクトの RAM ユーザーと DLF をデプロイするアカウントが同じである場合は、信頼ポリシーで service を
odps.aliyuncs.comに設定します。MaxCompute プロジェクトの RAM ユーザーと DLF をデプロイするアカウントが異なる場合、信頼ポリシーで [service] を
<Alibaba Cloud account ID of the MaxCompute owner>@odps.aliyuncs.comに設定します。[MaxCompute オーナーの Alibaba Cloud アカウント ID] は、[アカウントの概要] ページで確認できます。
[Resource Access Management (RAM) コンソール]にログインし、信頼できるエンティティが Alibaba Cloud アカウントである RAM ロールを作成します。
Resource Access Management (RAM) コンソールで、RAM ロールの信頼ポリシーを変更します。信頼ポリシーは次のとおりです。
MaxCompute プロジェクトを作成する Alibaba Cloud アカウントが、DLF をデプロイするアカウントと同じである場合
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "odps.aliyuncs.com" ] } } ], "Version": "1" }MaxCompute プロジェクトを作成する Alibaba Cloud アカウントが、DLF をデプロイするアカウントと異なる場合
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "<Alibaba Cloud account ID of the MaxCompute owner>@odps.aliyuncs.com" ] } } ], "Version": "1" }Resource Access Management (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: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 STS に基づくサービスリンクロールの権限付与
MaxCompute が外部データソースと外部プロジェクトを介して Hologres データにアクセスできるようにするには、まず必要な Hologres 権限を MaxCompute アカウントに付与します。
タスクエグゼキュータ ID の使用とは、Hologres アクセス権限を MaxCompute サービスリンクロールに付与し、タスクエグゼキュータ ID を Hologres に渡すことを意味します。両方のサービスは、現在のタスクエグゼキュータをそれぞれの権限スコープに制限します。したがって、MaxCompute サービスリンクロールを事前に作成して権限付与する必要があります。次のいずれかの方法を使用します。
[リソースアクセス管理 (RAM) コンソール] にログインします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、[ロールの作成] をクリックします。
「ロールの作成」ページの右上隅で、[サービス関連ロールの作成] をクリックします。
[サービス関連ロールの作成] ページで、[サービスの選択] で
aliyunserviceroleformaxcomputeidentitymgmtを選択し、[サービス関連ロールの作成] をクリックします。ロールが既に存在するとシステムに表示される場合は、この手順をスキップします。
Paimon_DLF STS に基づくサービスリンクロールの権限付与
MaxCompute が外部データソースと外部プロジェクトを介して Paimon_DLF データにアクセスできるようにするには、まず必要な DLF 権限を MaxCompute アカウントに付与します。
タスクエグゼキュータ ID の使用とは、DLF アクセス権限を MaxCompute サービスリンクロールに付与し、タスクエグゼキュータ ID を DLF に渡すことを意味します。両方のサービスは、現在のタスクエグゼキュータをそれぞれの権限スコープに制限します。したがって、MaxCompute サービスリンクロールを事前に作成して権限付与する必要があります。次のいずれかの方法を使用します。
左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、[ロールの作成] をクリックします。
「[ロールの作成]」ページの右上隅で、「[サービス関連ロールの作成]」をクリックします。
「サービス関連ロールの作成」ページで、[サービスの選択]に
AliyunServiceRoleForMaxComputeLakehouseを選択し、「サービス関連ロールの作成」をクリックします。ロールが既に存在するとシステムに表示される場合は、この手順をスキップします。