このトピックでは、MaxCompute の権限管理に関するよくある質問 (FAQ) とその回答を記載します。
カテゴリ | よくある質問 |
権限付与ソリューション | |
ユーザーへの権限付与 | |
権限エラー |
プロジェクト間でデータを読み取るにはどうすればよいですか。
パッケージを使用して、プロジェクト間でデータを読み取ることができます。パッケージは、プロジェクト間でデータとリソースを共有するためのメカニズムであり、主にクロスプロジェクトのユーザー権限付与に使用されます。プロジェクト管理者は、必要なオブジェクトをパッケージ化し、それらに対する権限を付与できます。その後、他のプロジェクトでこのパッケージをインストールできます。インストール後、それらのプロジェクトの管理者はパッケージを管理し、自身のプロジェクト内のユーザーに権限を付与できます。
詳細については、「パッケージに基づくプロジェクト間のリソースへのアクセス」および「パッケージの権限管理」をご参照ください。
MaxCompute プロジェクトのオーナーを RAM ユーザーに変更できますか?
いいえ。プロジェクトのオーナーは変更できません。プロジェクトを作成したユーザーがプロジェクトのオーナーになります。プロジェクトのオーナーは、Resource Access Management (RAM) ユーザーに Admin ロールを付与できます。
Admin ロールには、プロジェクトオーナーと比較してどのような制限がありますか。
プロジェクトのオーナーと比較して、Admin ロールを持つユーザーは次の操作を実行できません:
Admin ロールを持つユーザーは、他のユーザーに Admin 権限を割り当てることはできません。
プロジェクトのセキュリティ構成を変更することはできません。
プロジェクトの権限付与モデルを変更することはできません。
Admin ロールの権限を変更することはできません。
RAM ユーザーに本番環境テーブルの権限をリクエストすると、権限付与が失敗します。この問題を解決するにはどうすればよいですか?
症状
Alibaba Cloud アカウントを使用して、本番環境のテーブルに対する権限を RAM ユーザーに付与すると、次のエラーが返されます。
class java.lang.IllegalArgumentException: AccessId should not be empty.原因
Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ID と AccessKey Secret が設定されていません。
解決策
Alibaba Cloud アカウントまたは RAM ユーザーとして RAM コンソールにログインします。[AccessKey ID] と [AccessKey Secret] が設定されていることを確認してください。
テーブルを操作する権限をユーザーに付与するにはどうすればよいですか?
権限付与は、プロジェクトのオーナー、または Super_Administrator もしくは Admin ロールを持つユーザーが行う必要があります。アクセス制御リスト (ACL) による権限付与メソッド (grant) を使用して、テーブルを操作するために必要な権限をユーザーに付与できます。次のコマンドはその一例です。
GRANT UPDATE ON TABLE project_name TO ram$bob@aliyun.com:Allen;権限付与の詳細については、「MaxCompute の権限」をご参照ください。
RAM ユーザーに権限を付与するにはどうすればよいですか。
権限付与は、Alibaba Cloud アカウント、または Super_Administrator もしくは Admin ロールを持つユーザーが行う必要があります。権限付与の詳細については、「MaxCompute の権限」をご参照ください。
権限管理におけるオブジェクトと操作とは何ですか?
MaxCompute の権限付与には、次の 3 つの要素が含まれます:
サブジェクト:権限が付与されるユーザーまたはロール。
オブジェクト:ユーザーまたはロールに権限が付与される対象オブジェクト。たとえば、プロジェクト、テーブル、モデル、関数、リソース、インスタンスなど。
操作:ユーザーまたはロールが対象オブジェクトに対して実行を許可される操作。たとえば、テーブルの読み取り、書き込み、クエリなど。
詳細については、「ACL ベースのアクセスコントロール」をご参照ください。
RAM ユーザーが別の Alibaba Cloud アカウントで作成されたプロジェクトにアクセスするにはどうすればよいですか?
アカウント A とアカウント B という 2 つの Alibaba Cloud アカウントがあるとします。アカウント A には C (ram_user_1) という名前の RAM ユーザーがいます。ユーザー C は、アカウント B によって作成された MaxCompute プロジェクトにアクセスする必要があります。
アカウント B は、アカウント A を自身のプロジェクトに追加し、MaxCompute の Super_Administrator ロールをアカウント A に付与する必要があります。その後、アカウント A はアカウント B のプロジェクトにログインし、add user ram$A:ram_user_1; コマンドを実行してユーザー C をプロジェクトに追加できます。
テナント ID (tenant_id) を取得するにはどうすればよいですか?
テナントレベルで権限付与されたリソースの範囲を指定するには、アクセスポリシーでテナントを指定します。そのためには、まずテナント ID を取得する必要があります。次のステップに従ってください:
MaxCompute コンソールにログインし、左上のコーナーでリージョンを選択します。
左側のナビゲーションウィンドウで、 を選択します。
テナント管理 ページで、テナントプロパティ タブをクリックします。
テナントプロパティ タブで、テナントID: を取得します。
ユーザーに権限を付与する際に「FAILED: Invalid account Name xxxxxx」というエラーが報告されます。この問題を解決するにはどうすればよいですか?
症状
ユーザーに権限を付与すると、次のエラーが返されます。
FAILED: Invalid account Name xxxxxx原因
権限付与文のユーザー名が無効です。
解決策
ユーザー名が正しいことを確認してください。現在のプロジェクトのユーザーリストを取得するには、
list users;コマンドを実行します。権限を付与する際は、リストからユーザー名を直接コピーして、スペルミスによるユーザー名の無効化を避けてください。
ユーザーに権限を付与する際に「FAILED: lack of account provider, principalName xxxxxx」というエラーが報告されます。この問題を解決するにはどうすればよいですか?
症状
ユーザーに権限を付与すると、次のエラーが返されます。
FAILED: lack of account provider, principalName xxxxxx原因
権限付与ステートメントのユーザー名が無効であるか、現在のプロジェクトのアカウントシステムが RAM をサポートしていません。
解決策
MaxCompute クライアントにログインします。
list accountproviders;コマンドを実行して、MaxCompute プロジェクトのアカウントシステムが RAM をサポートしているかどうかを確認します。返された結果に RAM が含まれていない場合は、add accountprovider ram;コマンドを実行して RAM アカウントシステムのサポートを追加します。再度list accountproviders;コマンドを実行して、RAM のサポートが追加されたことを確認します。プロジェクトが RAM をサポートしているにもかかわらずエラーが解決しない場合は、ユーザー名が正しいことを確認してください。現在のプロジェクトのユーザーリストを取得するには、list users;コマンドを実行します。権限を付与する際は、リストからユーザー名を直接コピーして、スペルミスによるユーザー名の無効化を避けてください。
MaxCompute のビューをクエリする権限を持っていますが、ビューをクエリすると、別のユーザーに権限がないというエラーが報告されるのはなぜですか?
症状
MaxCompute では、ビュー A がテーブル B を参照しています。ユーザー A はビュー A をクエリする権限を持っています。ユーザー A がビュー A をクエリすると、ユーザー B (ビューのオーナー) がテーブル B をクエリする権限を持っていないことを示すエラーが報告されます。
原因
ビューのオーナーが、ビューによって参照されるテーブルに対する SELECT 権限を失うと、そのビューは利用できなくなります。これは通常、ビューのオーナーが変更され、新しいオーナーに参照テーブルに対する SELECT 権限が速やかに付与されなかった場合に発生します。また、参照テーブルのオーナーがビューのオーナーから SELECT 権限を取り消した場合にも発生する可能性があります。したがって、ユーザー A がビュー A をクエリする権限を持っていても、クエリは失敗します。
解決策
ビューのオーナーが参照テーブルに対する SELECT 権限を失っていないか確認してください。コマンドは次のとおりです。
show grants for <user_name>; -- user_name はビューのオーナーのユーザー名です権限が失われている場合は、参照テーブルに対する SELECT 権限をビューのオーナーに再度付与してください。これにより、ビューが使用可能になります。
ジョブを実行すると「You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied」というエラーが報告されます。この問題を解決するにはどうすればよいですか?
原因
プロジェクトが無効化されています。
解決策
ご利用のアカウントに支払い遅延があるか、またはプロジェクトに関連付けられているサブスクリプションクォータのサブスクリプション注文が期限切れになっていないかを確認してください。アカウントに支払い遅延があるか、注文が期限切れになっている場合、アカウントに入金するかサブスクリプションを更新すると、プロジェクトは自動的に通常状態に復元されます。復元には、注文数やプロジェクト数に応じて 2 分から 30 分かかる場合があります。
プロジェクトが支払い遅延や注文の期限切れによって無効化されたのではない場合、手動で無効化された可能性があります。MaxCompute コンソールの プロジェクト管理 ページでプロジェクトを再開できます。このページに移動するには、左側のナビゲーションウィンドウで 構成の管理 を選択します。。
Resource リソースタイプのカスタムロールを作成すると、「failed to check policy format: invalid Action value - odps:<Action>」というエラーが報告されます。この問題を解決するにはどうすればよいですか?
症状
ポリシー承認メカニズム機能を使用して Resource リソースタイプに対して test_role という名前のロールを作成し、そのロールに CreatePackage 権限を付与する場合、次のポリシーを記述します。
{ "Statement":[ { "Action":[ "odps:CreatePackage" ], "Effect":"Allow", "Resource":[ "acs:odps:*:projects/test_project/authorization", "acs:odps:*:projects/test_project/authorization/packages/*", "acs:odps:*:projects/test_project/authorization/packages/*/*/*" ] } ], "Version":"1" }次のエラーが返されます。
Create role test_role error: [400] com.aliyun.odps.OdpsException: failed to check policy format: invalid Action value - odps:CreatePackage原因
MaxCompute は、Resource リソースタイプのロールにプロジェクト管理権限を付与することをサポートしていません。CreatePackage 権限はプロジェクト管理権限です。プロジェクト管理権限の詳細については、「プロジェクト管理権限のリスト」をご参照ください。
解決策
プロジェクト管理権限を含むカスタムロールを作成する場合は、ロールタイプを [Admin] (管理タイプ) に切り替えてください。そうすることで、ロールを作成できます。ロール計画の詳細については、「ロール計画」をご参照ください。