このページでは、MaxCompute の権限管理に関するよくある質問にお答えします。
権限付与ソリューション
プロジェクト間でデータを読み取るにはどうすればよいですか?
パッケージを使用します。パッケージは、あるプロジェクトのオブジェクトをバンドルし、他のプロジェクトがそれをインストールしてアクセスできるようにするもので、MaxCompute におけるプロジェクト間の権限付与の主要なメカニズムです。ワークフローは次のとおりです:
プロジェクト管理者が、必要なオブジェクトをパッケージ化し、それらに対する権限を設定します。
他のプロジェクトがそのパッケージをインストールします。
それらのプロジェクトの管理者が、インストールされたパッケージを管理し、自身のユーザーにアクセス権を付与します。
詳細については、「パッケージに基づくプロジェクト間のリソースアクセス」および「パッケージの権限コントロール」をご参照ください。
プロジェクトオーナーを RAM ユーザーに変更できますか?
いいえ。プロジェクトオーナーは、プロジェクトを作成したアカウントに永続的に設定され、転送することはできません。Resource Access Management (RAM) ユーザーに広範な管理コントロールを持たせる必要がある場合、プロジェクトオーナーはその RAM ユーザーに Admin ロールを付与できます。
Admin ロールは広範な管理機能を提供しますが、プロジェクトオーナーのみが実行できる 4 つの操作は除外されます。「Admin ロールにはできず、プロジェクトオーナーにのみ可能な操作は何ですか?」をご参照ください。
Admin ロールにはできず、プロジェクトオーナーにのみ可能な操作は何ですか?
Admin ロールは日常的な管理アクセス権を完全に持ちますが、4 つの操作はプロジェクトオーナー専用です:
| 機能 | プロジェクトオーナー | Admin ロール |
|---|---|---|
| 他のユーザーに Admin ロールを割り当てる | はい | いいえ |
| プロジェクトのセキュリティ構成を変更する | はい | いいえ |
| プロジェクトの権限付与モデルを変更する | はい | いいえ |
| Admin ロールの権限を変更する | はい | いいえ |
ヒント:運用リスクを軽減するため、日常的なタスクにプロジェクトオーナーのアカウントを使用することは避けてください。日常の管理には Admin ロールを持つ専用のユーザーを作成し、プロジェクトオーナーのアカウントは上記の 4 つの操作にのみ使用してください。
RAM ユーザーが DataWorks にアクセスできず、AccessKey ID が見つからないというプロンプトが表示されますが、AccessKey ID は存在します。この問題を解決するにはどうすればよいですか?
RAM ユーザーは、自身の AccessKey 情報を個人プロファイルに追加する必要があります。個人情報ページに移動します。[AccessKey 情報の変更] をクリックし、[AccessKey ID] と [AccessKey シークレット] を入力します。構成が完了したら、再度 DataWorks にアクセスしてみてください。
権限の付与
RAM ユーザーが DataWorks にアクセスできず、AccessKey ID が見つからないというプロンプトが表示されます。どうすれば修正できますか?
RAM ユーザーは、個人プロファイルに AccessKey 情報を追加する必要があります。[個人情報] ページに移動し、「AccessKey 情報の変更」をクリックして、AccessKey ID および AccessKey シークレット を入力します。保存後、再度 DataWorks にアクセスしてみてください。
RAM ユーザーに本番テーブルへのアクセス権を付与する際に権限付与が失敗します。どうすれば修正できますか?
現象
本番テーブルに権限を付与する際に、次のエラーが表示されます:
class java.lang.IllegalArgumentException: AccessId should not be empty.原因
権限付与を実行しているアカウントに 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 の権限付与における主題、オブジェクト、操作とは何ですか?
MaxCompute の権限付与は、3 つの要素を中心に構築されています:
主題 (Subject):権限を受け取るユーザーまたはロール。
オブジェクト (Object):保護対象のリソース (プロジェクト、テーブル、モデル、関数、リソース、またはインスタンス)。
操作 (Action):そのオブジェクトで許可される操作 (読み取り、書き込み、クエリなど)。
詳細については、「ACL に基づくアクセス制御」をご参照ください。
RAM ユーザーが別の Alibaba Cloud アカウントが所有するプロジェクトにアクセスするにはどうすればよいですか?
アカウント A に RAM ユーザー (ram_user_1) がおり、アカウント B が所有するプロジェクトへのアクセスが必要だとします。手順は次のとおりです:
アカウント B は、アカウント A をプロジェクトに追加し、アカウント A に Super_Administrator ロールを付与します。
アカウント A は、アカウント B のプロジェクトにログインし、次のコマンドを実行して ram_user_1 を追加します:
add user ram$A:ram_user_1;
テナント ID を取得するにはどうすればよいですか?
MaxCompute コンソールにログインし、左上のコーナーでリージョンを選択します。MaxCompute コンソール
左側のナビゲーションウィンドウで、[設定の管理] > [テナント] を選択します。
[テナント] ページで、[テナントプロパティ] タブをクリックします。
[テナント ID] に表示されている値をコピーします。
エラー:「FAILED: Invalid account Name xxxxxx」
FAILED: Invalid account Name xxxxxx原因
GRANT ステートメント内のユーザー名にスペルミスがあるか、フォーマットが間違っています。
解決策
list users; を実行して現在のプロジェクト内の正確なユーザー名を取得し、その出力からユーザー名を直接権限付与コマンドにコピーします。
エラー:「FAILED: lack of account provider, principalName xxxxxx」
FAILED: lack of account provider, principalName xxxxxx原因
プロジェクトのアカウントシステムが RAM をサポートしていないか、ユーザー名のフォーマットが間違っています。
解決策
プロジェクトが RAM をサポートしているかどうかを確認します:
list accountproviders;出力に
ramがない場合は、追加します:add accountprovider ram;再度
list accountproviders;を実行して、RAM がリストに含まれていることを確認します。RAM を追加してもエラーが解決しない場合は、ユーザー名自体が間違っている可能性があります。
list users;を実行し、正確なユーザー名をコマンドにコピーしてください。
権限エラー
ビューをクエリする権限があるにもかかわらず、別のユーザーに関する権限エラーでクエリが失敗します。なぜですか?
原因
クエリが失敗するのは、あなたではなくビューのオーナーが、基になるテーブルに対する SELECT 権限を持っていないためです。MaxCompute では、ビューはオーナーの権限を使用して評価されます。オーナーが参照先のテーブルへのアクセス権を失うと (例えば、ビューのオーナーシップの変更後や明示的な権限の取り消し後など)、ビューへのクエリ権限が付与されているユーザーであっても、そのビューは誰にも利用できなくなります。
解決策
ビューのオーナーの権限を確認します:
show grants for <view_owner_username>;参照テーブルに対する SELECT 権限がない場合は、ビューのオーナーに再度付与してください。そうすれば、ビューは再び機能するようになります。
エラー:「You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied」
You have NO privilege to do the restricted operation on xxx Access Mode is AllDenied原因
プロジェクトが無効になっています。
解決策
以下のいずれかの原因を確認してください:
支払いの延滞またはサブスクリプションクォータの期限切れ:アカウントに資金を追加するか、サブスクリプションを更新してください。プロジェクトは自動的に通常状態に復元されますが、これには関連する注文やプロジェクトの数に応じて 2 分から 30 分かかる場合があります。
手動で無効化された: MaxCompute コンソールで、[設定の管理] > [プロジェクト] に移動し、プロジェクトを再開します。
エラー:「failed to check policy format: invalid Action value - odps:\<Action\>」
現象
ポリシー承認メカニズム機能を使用して、リソースタイプのロール 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原因
このエラーは、リソースタイプのロールにプロジェクト管理権限 (例えば CreatePackage) を割り当てた場合に発生します。MaxCompute では、リソースタイプのロールにプロジェクト管理権限を付与することは許可されていません。
解決策
カスタムロールにプロジェクト管理権限を含める必要がある場合は、ロールタイプを[管理者] (管理タイプ) に切り替えます。プロジェクト管理権限の完全なリストについては、「プロジェクト管理権限の一覧」をご参照ください。ロール計画のガイダンスについては、「ロール計画」をご参照ください。