MaxCompute の権限管理に関するよくある質問です。
|
カテゴリ |
よくある質問 |
|
権限付与ソリューション |
|
|
ユーザーへの権限付与 |
|
|
権限エラー |
プロジェクト間でデータを読み取る方法は?
パッケージを使用して、プロジェクト間でデータおよびリソースを共有します。プロジェクト管理者が必要なオブジェクトをパッケージ化し、そのパッケージに対する権限を付与します。他のプロジェクトがそのパッケージをインストールすると、それぞれのプロジェクト管理者がパッケージを管理し、自プロジェクト内のユーザーに権限を付与できるようになります。
詳細については、「パッケージに基づくプロジェクト間リソースアクセス」および「パッケージの権限制御」をご参照ください。
MaxCompute プロジェクトのオーナーを RAM ユーザーに変更できますか?
いいえ。プロジェクト作成者は常にプロジェクトオーナーであり、所有権を譲渡することはできません。ただし、プロジェクトオーナーは RAM ユーザーに 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 が設定されていません。
-
解決方法
RAM コンソールに Alibaba Cloud アカウントでログインするか、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 アカウントによって作成されたプロジェクトにアクセスするにはどうすればよいですか?
Alibaba Cloud アカウント A と B の 2 つがあると仮定します。アカウント A には ram_user_1 という名前の RAM ユーザー C が存在します。ユーザー 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;コマンドを実行して、プロジェクトのアカウントシステムが RAM をサポートしているかどうかを確認してください。出力結果に RAM が含まれていない場合は、add accountprovider ram;コマンドを実行して RAM アカウントシステムのサポートを追加します。その後、再度list accountproviders;コマンドを実行し、RAM がサポートされていることを確認してください。プロジェクトが RAM をサポートしているにもかかわらずエラーが解消しない場合は、ユーザー名が正しいかどうかを確認してください。list users;コマンドを実行して現在のプロジェクトのユーザー一覧を取得し、権限付与時に一覧から直接ユーザー名をコピーして、スペルミスによるエラーを防止してください。
MaxCompute のビューをクエリする権限がありますが、ビューをクエリすると、別のユーザーが権限を持っていないというエラーが表示されます。これはなぜですか?
-
症状
ViewA が Table B を参照しています。ユーザー A は ViewA をクエリする権限を持っていますが、クエリを実行すると、ビューのオーナー(ユーザー B)が Table B をクエリする権限を持っていないというエラーが表示されます。
-
原因
ビューのオーナーが参照先のテーブルに対する SELECT 権限を失っているため、ビューが利用できなくなります。これは通常、ビューのオーナーが変更され、新しいオーナーが参照先のテーブルに対する SELECT 権限を付与されていない場合や、参照先のテーブルのオーナーがビューのオーナーからの SELECT 権限を取り消した場合に発生します。
-
解決方法
ビューのオーナーが参照先のテーブルに対する SELECT 権限を失っていないかどうかを確認してください。コマンドは以下のとおりです。
show grants for <user_name>; -- user_name はビューのオーナーのユーザー名権限が失われている場合は、再度参照先のテーブルに対する SELECT 権限をビューのオーナーに付与してください。これにより、ビューが利用可能になります。
ジョブを実行すると、「You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied」というエラーが表示されます。この問題を解決するにはどうすればよいですか?
-
原因
プロジェクトが無効化されています。
-
解決方法
-
ご利用のアカウントに支払い遅延がないか、またはプロジェクトに関連付けられたサブスクリプションクォータの注文が期限切れになっていないかを確認してください。アカウントに支払い遅延がある場合や注文が期限切れになっている場合は、アカウントに資金を追加するかサブスクリプションを更新すると、プロジェクトは自動的に Normal 状態に復元されます。復元には、注文およびプロジェクトの数に応じて 2~30 分程度かかる場合があります。
-
プロジェクトが支払い遅延や注文の期限切れ以外の理由で無効化されている場合は、手動で無効化された可能性があります。MaxCompute コンソールのプロジェクト管理ページでプロジェクトを再開できます。ページに移動するには、左側のナビゲーションウィンドウで設定管理を選択してください。
-
リソースタイプのカスタムロールを作成する際に、「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 は、リソースタイプのロールにプロジェクト管理権限を付与することをサポートしていません。CreatePackage はプロジェクト管理権限です。詳細については、「プロジェクト管理権限の一覧」をご参照ください。
-
解決方法
プロジェクト管理権限を含むカスタムロールを作成する場合は、ロールタイプを[管理者](管理タイプ)に設定します。詳細については、「ロール計画」をご参照ください。