MaxCompute は、Alibaba Cloud の Resource Access Management (RAM) と Security Token Service (STS) を使用してデータアクセスを保護します。このトピックでは、RAM と STS を使用して、MaxCompute に Object Storage Service (OSS)、Tablestore、および Hologres へのアクセスを承認する方法について説明します。
OSS の STS 認証
MaxCompute の外部テーブル機能を使用して OSS データにアクセスするには、MaxCompute ジョブの実行に使用する Alibaba Cloud アカウントに OSS アクセス権限を付与する必要があります。OSS アクセス権限を付与するには、次のいずれかの方法を使用できます。
方法 1(推奨): MaxCompute プロジェクトとアクセスする OSS バケットが同じ Alibaba Cloud アカウントに属している場合は、RAM コンソールにログインし、権限を付与を実行します。
説明デフォルトの AliyunODPSDefaultRole は広範な権限を持っていますが、これは参考用です。MaxCompute の外部データソースまたは外部テーブルに必要なアクセス権限に基づいて、RAM コンソール で適切な権限ポリシーと信頼ポリシーを構成する必要があります。
方法 2: MaxCompute プロジェクトとアクセスする OSS バケットが同じ Alibaba Cloud アカウントに属していない場合は、RAM ロールをカスタマイズし、その RAM ロールに権限を付与できます。
RAM ロールを作成します。
OSS バケットが属する Alibaba Cloud アカウントを使用して、RAM コンソール にログインします。RAM コンソールの ロール ページで RAM ロールを作成します。たとえば、oss-admin という名前の RAM ロールを作成できます。
説明RAM ロールの作成方法の詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。
RAM ロールのポリシーを変更します。
RAM コンソールの ロール ページで、[ロール名] 列にある RAM ロールの名前をクリックします。表示されるページで、[信頼ポリシー] タブをクリックし、[信頼ポリシーの編集] をクリックします。信頼ポリシーの編集ページで、ポリシーを変更します。MaxCompute プロジェクトが OSS バケットにアクセスできるように、ポリシーのドキュメントを次のコードに置き換えます。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "MaxCompute プロジェクトが属する Alibaba Cloud アカウントの ID@odps.aliyuncs.com" ] } } ], "Version": "1" }
説明MaxCompute プロジェクトが属する Alibaba Cloud アカウントの ID
は、OSS バケットへのアクセスに使用するアカウントを示します。ポリシーの変更方法の詳細については、「RAM ロールの信頼ポリシーを編集する」をご参照ください。
ポリシーを作成します。
RAM コンソールの ポリシー ページで、ポリシーを作成します。この例では、AliyunODPSRolePolicy という名前のポリシーが作成されます。次のコードは、ポリシードキュメントを提供します。ビジネス要件に基づいて、ポリシーで権限を指定できます。
{ "Version": "1", "Statement": [ { "Action": [ "oss:ListBuckets", "oss:GetObject", "oss:ListObjects", "oss:PutObject", "oss:DeleteObject", "oss:AbortMultipartUpload", "oss:ListParts" ], "Resource": "*", "Effect": "Allow" } ] }
ポリシー AliyunODPSRolePolicy を RAM ロールにアタッチします。
RAM ロールにポリシーをアタッチする方法の詳細については、「RAM ロールに権限を付与する」をご参照ください。
Tablestore の STS 認証
MaxCompute の外部テーブル機能を使用して Tablestore データにアクセスするには、MaxCompute ジョブの実行に使用する Alibaba Cloud アカウントに Tablestore アクセス権限を付与する必要があります。アカウントに権限を付与するには、次のいずれかの方法を使用できます。
方法 1: MaxCompute プロジェクトとアクセスする Tablestore インスタンスが同じ Alibaba Cloud アカウントに属している場合は、RAM コンソールにログインし、ワンクリック認証を実行します。この方法を使用することをお勧めします。
方法 2: MaxCompute プロジェクトとアクセスする Tablestore インスタンスが同じ Alibaba Cloud アカウントに属していない場合は、RAM ロールをカスタマイズし、その RAM ロールに権限を付与できます。
RAM ロールを作成します。
Tablestore インスタンスが属する Alibaba Cloud アカウントを使用して、RAM コンソール にログインします。RAM コンソールの ロール ページで RAM ロールを作成します。たとえば、oss-adminots という名前の RAM ロールを作成できます。
RAM ロールの作成方法の詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。
RAM ロールのポリシーを変更します。
RAM コンソールの ロール ページで、[ロール名] 列にある RAM ロールの名前をクリックします。表示されるページで、[信頼ポリシー] タブをクリックし、[信頼ポリシーの編集] をクリックします。信頼ポリシーの編集ページで、ポリシーを変更します。MaxCompute プロジェクトが Tablestore インスタンスにアクセスできるように、ポリシーのドキュメントを次のコードに置き換えます。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "MaxCompute プロジェクトが属する Alibaba Cloud アカウントの ID@odps.aliyuncs.com" ] } } ], "Version": "1" }
MaxCompute プロジェクトが属する Alibaba Cloud アカウントの ID
は、Tablestore へのアクセスに使用するアカウントです。ポリシーを作成します。
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 ロールにアタッチします。
RAM ロールにポリシーをアタッチする方法の詳細については、「RAM ロールに権限を付与する」をご参照ください。
Hologres の STS 認証
MaxCompute の外部テーブル機能を使用して Hologres データにアクセスするには、MaxCompute ジョブの実行に使用する Alibaba Cloud アカウントに Hologres アクセス権限を付与する必要があります。Hologres の認証を実行するには、次のいずれかの方法を使用できます。
Hologres インスタンスが属する Alibaba Cloud アカウントを使用して、RAM コンソール にログインします。RAM コンソールの ロール ページで RAM ロールを作成します。
Alibaba Cloud アカウント:
Alibaba Cloud アカウントの RAM ユーザーは、RAM ロールを引き受けることでクラウド リソースにアクセスできます。詳細については、「信頼できる Alibaba Cloud アカウントの RAM ロールを作成する」をご参照ください。
IdP:
ロールベースのシングルサインオン (SSO) を使用して Alibaba Cloud 管理コンソールにログインできます。ユーザー名とパスワードを入力せずにログインできます。詳細については、「信頼できる IdP の RAM ロールを作成する」をご参照ください。
信頼ポリシーを編集します。
[ロール] ページで、作成した RAM ロールの名前をクリックします。
[信頼ポリシー] タブをクリックします。
[信頼ポリシー] タブで、[信頼ポリシーの編集] をクリックします。
次の情報に基づいて信頼ポリシーを変更します。
信頼ポリシーの構成は、選択した信頼エンティティのタイプによって異なります。
[信頼エンティティの選択] で [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" }
[信頼エンティティの選択] で [IdP] が選択されている場合:
{ "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" }
説明<UID> は Alibaba Cloud アカウントの ID を示します。Alibaba Cloud アカウントの ID は、アカウント管理コンソールの セキュリティ設定 ページで取得できます。
[信頼ポリシードキュメントの保存] をクリックします。
Hologres インスタンスが属する Alibaba Cloud アカウントに RAM ロールを割り当て、RAM ロールに権限を付与します
RAM ロールが Hologres インスタンスを使用する前に、ロールは Hologres インスタンスで必要な開発権限を取得する必要があります。デフォルトでは、RAM ロールには Hologres コンソールでインスタンスを表示または管理する権限が付与されていません。Alibaba Cloud アカウントを使用して、RAM ロールに権限を付与する必要があります。Hologres インスタンスが属する Alibaba Cloud アカウントに RAM ロールを割り当てた後、次のいずれかの方法を使用して RAM ロールに権限を付与できます。
Hologres コンソールを使用して、必要な権限を RAM ロールに付与します。
Hologres コンソール にログインします。
左側のナビゲーション ウィンドウで、[インスタンス] をクリックします。[Hologres インスタンス] ページで、RAM ロールを追加する Hologres インスタンスの名前をクリックします。
インスタンスの詳細ページで、[アカウント管理] をクリックします。
[ユーザー管理] ページで、[ユーザーの追加] をクリックして、RAM ロールを Hologres インスタンスに追加します。
[データベース認証] ページで、インスタンスの開発権限を RAM ロールに付与します。
説明データベース権限ポリシーがエキスパートモードに設定されている場合、[ユーザー管理] ページでロールタイプを SuperUser に変更する必要があります。その後、データベース認証操作は不要になります。
SQL 文を使用して、必要な権限を RAM ロールに付与します。
SQL 文を使用して RAM ユーザーに必要な権限を付与する方法の詳細については、「Hologres 権限モデル」をご参照ください。
デフォルトでは、RAM ユーザーには Hologres コンソールで操作を実行する権限が付与されていません。RAM ユーザーに RAM ロールを引き受けさせたい場合は、Alibaba Cloud アカウントを使用して [AliyunRAMReadOnlyAccess] ポリシーを RAM ユーザーにアタッチする必要があります。そうしないと、RAM ユーザーは Hologres コンソールで操作を実行できません。詳細については、「Hologres の権限を RAM ユーザーに付与する」をご参照ください。
Hologres はデュアルシグネチャ認証もサポートしています。詳細については、「デュアルシグネチャモードで Hologres 外部テーブルを作成する」をご参照ください。