プロジェクト所有者以外のすべてのユーザーを MaxCompute プロジェクトに追加し、MaxCompute のデータ、ジョブ、リソース、関数を管理する権限を付与する必要があります。ここでは、プロジェクト所有者が他のユーザー (MaxCompute の RAM サブアカウントを含む) を MaxCompute に追加、権限付与、削除する方法について説明します。

プロジェクト所有者の場合、このドキュメントを注意深く読むことを推奨します。 一般ユーザーの場合は、関連するプロジェクトへの追加をプロジェクト所有者に申請することを推奨します。 すべてのユーザーが、以降のセクションを読むことを推奨します。

ここに記載されているすべての操作は、コンソール上で実行されます。 Linux の場合は ./bin/odpscmd を実行し、Windows の場合は ./bin/odpscmd.bat を実行します。

ユーザーの追加

この例では、プロジェクト所有者 Alice がユーザーに権限を付与しようとしていて、最初にそのユーザーをプロジェクトに追加する必要があります。 プロジェクトに追加されているユーザーにのみ、権限を付与できます

ユーザーを追加するコマンドは次のとおりです。
add user
Alibaba Cloud アカウントの <username> は、Alibaba Cloud に登録されている有効な E メールアドレス、またはコマンドを実行する Alibaba Cloud アカウントの RAM サブアカウントです。例:
add user ALIYUN$odps_test_user@aliyun.com;
add user RAM$ram_test_user;
Alice の Alibaba Cloud アカウントが alice@aliyun.com とします。 Alice が上記の文を実行し、list users; コマンドを実行すると、以下の結果が返されます。
RAM$alice@aliyun.com:ram_test_user
ALIYUN$odps_test_user@aliyun.com

これは、Alice が RAM を使用して作成した Alibaba Cloud アカウント odps_test_user@aliyun.com とサブアカウント ram_test_user がプロジェクトに追加されたことを示しています。

RAM サブアカウントの追加

RAM サブアカウントを追加する方法は2つあります。
  • DataWorks を使用します。詳細については、「RAM アカウントの準備」をご参照ください。
  • ここで説明されているように、MaxCompute クライアントコマンドを使用します。
    • MaxCompute では、プライマリアカウント に対して、自分の RAM サブアカウントをプロジェクトに追加することだけを許可します。 他の Alibaba Cloud アカウントの RAM サブアカウントは許可されません。 したがって、add user の実行時、RAM サブアカウントの前にプライマリアカウント名の指定を省略できます。 MaxCompute は、デフォルトで、コマンドを実行するアカウントが、対応するサブアカウントであると判断します。
    • MaxCompute は RAM アカウントシステムのみを認識し、RAM 権限付与システムを認識しません。ユーザーは自分の RAM サブアカウントを MaxCompute プロジェクトに追加できますが、MaxCompute は RAM サブアカウントの権限の検証を実行するときに RAM 内の権限制限を考慮しません。
    デフォルトでは、MaxCompute プロジェクトは Alibaba Cloud アカウントシステムのみを認識します。 サポートされているアカウントシステムを表示するには、list accountproviders; コマンドを使用します。 通常は、ALIYUN アカウントのみが表示されます。次に例を示します。
    odps@ ****>list accountproviders;
    ALIYUN
    プロジェクト所有者のみが accountproviders に関連する操作の権限を持っています。
    前のコマンドで示したように、ALIYUN アカウントシステムしか表示されません。 RAM アカウントのサポートを追加したい場合は、次のように add accountprovider ram;を実行してください。
    odps@ odps_pd_inter>add accountprovider ram; 
    OK

    ユーザーはまだ MaxCompute を操作することができません。 これは、MaxCompute を許容限度内で操作するには、ユーザーに特定の権限を付与する必要があるためです。 詳しくは、「権限付与」をご参照ください。

ユーザ権限付与

ユーザーを追加した後、プロジェクト所有者またはプロジェクト管理者はユーザーに権限付与する必要があります。 ユーザーは、権限を取得した後にのみ操作を実行できます。

MaxCompute は、ACL権限付与、プロジェクト間のリソース共有、およびプロジェクトリソース保護を提供します。以下に一般的なシナリオを 2 つ示します。詳しい情報は、「ACL 権限付与」をご参照ください 。

シナリオ 1
次のシナリオでは、Jack はプロジェクト prj1 の管理者です。 新しいプロジェクトチームメンバー Alice (Alibaba Cloudアカウント: alice@aliyun.com) は、プロジェクト prj1 への参加と、テーブルリストの表示、ジョブの送信およびテーブルの作成のための権限を申請します。
管理者またはプロジェクト所有者は、クライアント上で次のコマンドを実行できます。
use prj1; --Open the project prj1  
add user aliyun$alice@aliyun.com; --Add the user  
grant List, CreateTable, CreateInstance on project prj1 to user aliyun$alice@aliyun.com; --Authorize the user
シナリオ 2
次のシナリオでは、Alibaba Cloud アカウントユーザー (bob@aliyun.com) はプロジェクト ($ user_project_name) に追加されていて、テーブルの作成、テーブル情報の取得、関数の実行のための権限を付与されている必要があります。
管理者またはプロジェクトの所有者は、クライアント上で次のコマンドを実行できます。
grant CreateTable on PROJECT $user_project_name to USER ALIYUN$bob@aliyun.com;
  --Grant CreateTable permission on project “$user_project_name” to bob@aliyun.com
grant Describe on Table $user_table_name to USER ALIYUN$bob@aliyun.com;
  --Grant Describe permission on table “$user_table_name” to bob@aliyun.com
grant Execute on Function $user_function_name to USER ALIYUN$bob@aliyun.com;
  --Grant Run permission on function "$user_function_name" to bob@aliyun.com

RAM サブアカウント権限付与

アカウントのサポートを確認するには、list accountproviders; を実行します。コマンドは次のとおりです。
odps@ ****>list accountproviders;
ALIYUN、RAM
このプロジェクトでは、RAM アカウントもサポートされています。 このプロジェクトに RAM サブアカウントを追加して、テーブルに対する Describe 権限を付与することができます。 例:
odps@ ****>add user ram$bob@aliyun.com:Alice;
OK: DisplayName=RAM$bob@aliyun.com:Alice
odps@ ****>grant Describe on table src to user ram$bob@aliyun.com:Alice;
OK
これらのコマンドを実行した後、Alice アカウント (bob@aliyun.com の RAM サブアカウント) は、AccessKeyIDAccessKeySecret を使用して MaxCompute にログインし、テーブル src に対して desc を実行できます。
  • RAM サブアカウント AccessKeyIDAccessKeySecret を作成する方法の詳細は、「RAM ユーザーの作成」をご参照ください。
  • MaxCompute でユーザーを追加または削除する方法の詳細は、このドキュメント内の該当する内容をご参照ください。
  • ユーザーの権限付与に関する詳細は、「権限付与」をご参照ください。

ユーザーの削除

ユーザーがプロジェクトチームから抜ける場合、Alice はそのユーザーをプロジェクトから削除する必要があります。 プロジェクトから削除された時点で、ユーザーはプロジェクトリソースへのアクセス権限を失います。

プロジェクトからユーザーを削除するコマンドは次のとおりです。
remove user 
  • プロジェクトから削除されたユーザーは、直ちにプロジェクトリソースへのアクセス権限を失います。
  • ロールが割り当てられているユーザーを削除する前に、そのユーザーのすべてのロールを取り消します。 ロールの詳細は、「ロール管理」をご参照ください。
  • ユーザーを削除した後、ユーザーに関連するすべての ACL 権限付与データは保持されます。 ユーザーがプロジェクトに再度追加されると、このユーザーの ACL 権限付与が再び有効になります。
  • MaxCompute は、プロジェクトからユーザーとすべての権限データを完全に削除することはできません。
ユーザーを削除するには、Alice は以下のコマンドを実行することができます。
remove user ALIYUN$odps_test_user@aliyun.com;
remove user RAM$ram_test_user;
ユーザーが削除されたことを確認するには、次のコマンドを実行します。
LIST USERS;

コマンドの実行後、これら 2 つのアカウントが一覧に表示されなくなった場合は、アカウントがプロジェクトから削除されたことを示しています。

RAM サブアカウントの削除

同様に、RAM サブアカウントは remove user コマンドを使用して削除できます。 例:
odps@ ****>revoke describe on table src from user ram$bob@aliyun.com:Alice;
OK
-- Revoke Alice sub-account permissions
odps@ ****>remove user ram$bob@aliyun.com:Alice;
Confirm to "remove user ram$bob@aliyun.com:Alice;" (yes/no)? yes
OK
-- Remove sub-account
ユーザーがプロジェクト所有者であれば、以下のように remove accountprovider で現在のプロジェクトから RAM アカウントシステムを削除することもできます。
odps@ ****>remove accountprovider ram;
Confirm to "remove accountprovider ram;" (yes/no)? yes
OK
odps@ ****>list accountproviders;
ALIYUN