MaxCompute は、Alibaba Cloud Resource Access Management (RAM) および Security Token Service (STS) と統合されており、安全なデータアクセスを保証します。本トピックでは、RAM と STS を使用した権限付与方法について説明します。
OSS の標準ロールに対する STS モードでの権限付与
MaxCompute の外部テーブルが Object Storage Service (OSS) のデータに直接アクセスする前に、MaxCompute のアクセスアカウントに必要な OSS 権限を付与する必要があります。これらの権限は、以下のいずれかの方法で付与できます。
ワンクリック権限付与 (推奨):MaxCompute と OSS の両方を同じ Alibaba Cloud アカウントが所有している場合、ご利用の Alibaba Cloud アカウントにログインし、します。ここをクリックしてワンクリック権限付与を完了します。
説明デフォルトの AliyunODPSDefaultRole ロールは広範な権限を持っており、参考としてのみ提供されています。MaxCompute の外部テーブルまたはデータソースがアクセスする必要のある外部データに基づいて、RAM コンソールで適切な権限ポリシーと信頼ポリシーを設定してください。
カスタム権限付与:この方法は、MaxCompute と OSS を同じアカウントが所有しているかどうかに関わらず使用できます。手順は以下の通りです。
MaxCompute と OSS を同じアカウントが所有している場合、信頼ポリシーを追加する際に service を
odps.aliyuncs.comに設定します。MaxCompute と OSS を異なるアカウントが所有している場合、信頼ポリシーを追加する際に service を
<MaxCompute オーナーの Alibaba Cloud アカウントの UID>@odps.aliyuncs.comに設定します。MaxCompute を所有する Alibaba Cloud アカウントの UID は、アカウント概要ページで確認できます。
RAM ロールを作成します。
RAM コンソールにログインし、RAM ロールページでロールを作成します。たとえば、oss-admin という名前のロールを作成できます。ロールの作成方法の詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールの作成」をご参照ください。

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