Dataproc Granular IAM は、クラスタ、ジョブ、オペレーション、ワークフロー テンプレート、自動スケーリング ポリシーの各レベルで権限を付与できる機能です。
たとえば、あるユーザーにはクラスタ閲覧者の役割を付与してプロジェクト内のクラスタを表示できるようにし、別のユーザーにはジョブ編集者の役割を付与してジョブの表示だけでなく更新とキャンセルもできるようにします。 Cloud Dataproc Granular IAM の各役割で有効になる、特定の Google Cloud CLI コマンドの詳細は、Granular IAM で有効になる SDK コマンドをご覧ください。
Dataproc Granular IAM のロールと権限
Dataproc Granular IAM では、Dataproc リソースで次の各権限を持つロールを以下のように設定できます。
クラスタの役割
役割 | 権限 |
---|---|
閲覧者 | dataproc.clusters.get |
編集者 | dataproc.clusters.get dataproc.clusters.list dataproc.clusters.delete dataproc.clusters.update dataproc.clusters.use dataproc.clusters.start dataproc.clusters.stop |
オーナー | dataproc.clusters.get dataproc.clusters.list dataproc.clusters.delete dataproc.clusters.update dataproc.clusters.use dataproc.clusters.start dataproc.clusters.stop dataproc.clusters.setIamPolicy dataproc.clusters.getIamPolicy |
ジョブの役割
役割 | 権限 |
---|---|
閲覧者 | dataproc.jobs.get |
編集者 | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update |
オーナー | dataproc.jobs.get dataproc.jobs.cancel dataproc.jobs.delete dataproc.jobs.update dataproc.jobs.setIamPolicy dataproc.jobs.getIamPolicy |
オペレーションの役割
役割 | 権限 |
---|---|
閲覧者 | dataproc.operations.get |
編集者 | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete |
オーナー | dataproc.jobs.get dataproc.operations.cancel dataproc.operations.delete dataproc.operations.setIamPolicy dataproc.operations.getIamPolicy |
ワークフロー テンプレートの役割
役割 | 権限 |
---|---|
閲覧者 | dataproc.workflowTemplates.get |
編集者 | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update |
オーナー | dataproc.workflowTemplates.get dataproc.workflowTemplates.delete dataproc.workflowTemplates.update dataproc.workflowTemplates.setIamPolicy dataproc.workflowTemplates.getIamPolicy |
自動スケーリング ポリシーの役割
役割 | 権限 |
---|---|
閲覧者 | dataproc.autoscalingPolicies.get |
編集者 | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update |
オーナー | dataproc.autoscalingPolicies.get dataproc.autoscalingPolicies.use dataproc.autoscalingPolicies.delete dataproc.autoscalingPolicies.update dataproc.autoscalingPolicies.setIamPolicy dataproc.autoscalingPolicies.getIamPolicy |
Dataproc Granular IAM の使用
このセクションでは、Dataproc Granular IAM を使用して、既存の Dataproc リソースに対する役割をユーザーに割り当てる方法について説明します。Identity and Access Management(IAM)ロールの更新と削除に関する一般的な情報については、アクセス権の付与、変更、取り消しをご覧ください。
gcloud コマンド
- リソースの IAM ポリシーを取得し、JSON ファイルに書き込みます(resource-type は、「clusters」、「jobs」、「operations」、「workflow-templates」、または「autoscaling-policies」になります)。
gcloud dataproc resource-type get-iam-policy resource-id \ --region=region \ --format=json > iam.json
- JSON ファイルの内容は次のようになります。
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ], "etag": "string" }
- テキスト エディタを使用して、新しいバインディング オブジェクトを bindings 配列に追加し、ユーザーとそのユーザーに対するリソース アクセスの役割を定義します。たとえば、閲覧者ロール(
roles/viewer
)をユーザーsean@example.com
に付与するには、上記の例を変更して新しいバインディング オブジェクトを追加します(下の太字表示)。注:gcloud dataproc resource-type get-iam-policy
から受け取ったetag
値を必ず返すようにしてください(etag のドキュメントをご覧ください)。{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-get-iam-policy" }
- 次のコマンドを実行して、新しい bindings 配列でクラスタのポリシーを更新します(resource-type は、「clusters」、「jobs」、「operations」、「workflow-templates」、または「autoscaling-policies」になります)。
gcloud dataproc resource-type set-iam-policy resource-name \ --region=region \ --format=json iam.json
- 更新後のポリシーがコマンドから出力されます。
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "string" }
REST API
- resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "autoscalingPolicies") getIamPolicy リクエストを発行して、リソースの IAM ポリシーを取得します。
クラスタ getIamPolicy の例
GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
- JSON ファイルの内容は次のようになります。
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] } ], "etag": "string" }
- テキスト エディター使用して、次の JSON ポリシー オブジェクトを作成し、Dataproc サービスから受け取った bindings 配列を囲みます。getIamPolicy レスポンスで受け取った「etag」値を必ず返すようにしてください(etag のドキュメントをご覧ください)。次に、ユーザーと、そのユーザーのクラスタ アクセスのロールを定義する新しいバインディング オブジェクトを bindings 配列に追加します。たとえば、閲覧者ロール(
roles/viewer
)をユーザーsean@example.com
に付与するには、上記の例を変更して新しいバインディング オブジェクトを追加します(下の太字表示)。{ "policy": { "version": "", "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-getIamPolicy" } }
- setIamPolicy リクエストを発行して、更新したポリシーをリソースに設定します。
クラスタ setIamPolicy の例
POST https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:setIamPolicy Request body
{ "policy": { "version": "", "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "value-from-getIamPolicy" } }
- JSON レスポンスの内容は次のようになります。
イベントに
{ "bindings": [ { "role": "roles/editor", "members": [ "user:mike@example.com", "group:admins@example.com", "domain:google.com", "serviceAccount:my-other-app@appspot.gserviceaccount.com" ] }, { "role": "roles/viewer", "members": [ "user:sean@example.com" ] } ], "etag": "string" }
Console
Google Cloud コンソールの [Dataproc クラスタ] ページに移動し、クラスタ名の左側のボックスをクリックして、[権限 / ラベル] パネルを開きます(このパネルが表示されない場合は、ページの右上にある [情報パネルを表示] をクリックします)。[権限] タブで、Dataproc 役割を選択し、[プリンシパルを追加] ボックスに 1 つ以上のアカウント アドレスを追加し、[追加] をクリックします。
Granular IAM で有効になる SDK コマンド
次の表は、各 Granular IAM ロールにより Dataproc リソースに対して有効になる gcloud dataproc
コマンドを示しています。
クラスタ
IAM の役割 | コマンド |
---|---|
閲覧者 | gcloud dataproc clusters describe cluster-name |
編集者 | gcloud dataproc clusters describe cluster-name gcloud dataproc clusters list gcloud dataproc clusters delete cluster-name gcloud dataproc clusters diagnose cluster-name gcloud dataproc clusters update cluster-name gcloud beta dataproc clusters start cluster-name gcloud beta dataproc clusters stop cluster-name |
オーナー | gcloud dataproc clusters describe cluster-name gcloud dataproc clusters list gcloud dataproc clusters delete cluster-name gcloud dataproc clusters diagnose cluster-name gcloud dataproc clusters update cluster-name gcloud beta dataproc clusters start cluster-name gcloud beta dataproc clusters stop cluster-name gcloud dataproc clusters get-iam-policy cluster-name gcloud dataproc clusters set-iam-policy cluster-name |
ジョブ
IAM の役割 | コマンド |
---|---|
閲覧者 | gcloud dataproc jobs describe job-id |
編集者 | gcloud dataproc jobs delete job-id gcloud dataproc jobs describe job-id gcloud dataproc jobs kill job-id gcloud dataproc jobs update job-id gcloud dataproc jobs wait job-id |
オーナー | gcloud dataproc jobs delete job-id gcloud dataproc jobs describe job-id gcloud dataproc jobs kill job-id gcloud dataproc jobs update job-id gcloud dataproc jobs wait job-id gcloud dataproc jobs get-iam-policy job-id gcloud dataproc jobs set-iam-policy job-id |
運用
IAM の役割 | コマンド |
---|---|
閲覧者 | gcloud dataproc operations describe operation-id |
編集者 | gcloud dataproc operations delete operation-id gcloud dataproc operations describe operation-id gcloud dataproc operations cancel operation-id |
オーナー | gcloud dataproc operations delete operation-id gcloud dataproc operations describe operation-id gcloud dataproc operations cancel operation-id gcloud dataproc operations get-iam-policy operation-id gcloud dataproc operations set-iam-policy operation-id |
ワークフロー テンプレート
IAM の役割 | コマンド |
---|---|
閲覧者 | gcloud dataproc workflow-templates describe template-id |
編集者 | gcloud dataproc workflow-templates delete template-id gcloud dataproc workflow-templates describe template-id gcloud dataproc workflow-templates remove-job template-id gcloud dataproc workflow-templates run template-id |
オーナー | gcloud dataproc workflow-templates delete template-id gcloud dataproc workflow-templates describe template-id gcloud dataproc workflow-templates remove-job template-id gcloud dataproc workflow-templates run template-id gcloud dataproc workflow-templates get-iam-policy template-id gcloud dataproc workflow-templates set-iam-policy template-id |
自動スケーリング ポリシー
IAM の役割 | コマンド |
---|---|
閲覧者 | gcloud dataproc autoscaling-policies describe policy-id |
編集者 | gcloud dataproc autoscaling-policies delete policy-id gcloud dataproc autoscaling-policies describe policy-id gcloud dataproc autoscaling-policies update policy-id gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id |
オーナー | gcloud dataproc autoscaling-policies delete policy-id gcloud dataproc autoscaling-policies describe policy-id gcloud dataproc autoscaling-policies update policy-id gcloud dataproc clusters create cluster-name --autoscaling-policy policy-id gcloud dataproc autoscaling-policies get-iam-policy policy-id gcloud dataproc autoscaling-policies set-iam-policy policy-id |
Granular IAM によるジョブの送信
Dataproc Granular IAM を使用してプリンシパル(ユーザー、グループまたはサービス アカウント)が指定されたクラスタにジョブを送信できるようにするには、ユーザーにクラスタでの編集者の役割を付与するだけでなく、プロジェクト レベルで追加の権限を設定する必要があります。指定した Dataproc クラスタでプリンシパルがジョブを送信できるようにするための手順は次のとおりです。
- クラスタが Cloud Storage に接続するために使用できる Cloud Storage バケットを作成します。
- プリンシパルをバケットレベルのポリシーに追加し、そのメンバーの Storage オブジェクト閲覧者ロールを選択します(
roles/storage.objectViewer
をご覧ください)。このロールには次の権限が含まれています。storage.objects.get
storage.objects.list
- クラスタの作成時には、
--bucket
パラメータを使用して、作成したバケットの名前をクラスタに渡します(gcloud dataproc clusters create --bucket をご覧ください)。 - クラスタを作成したら、プリンシパルに編集者またはオーナーの役割を付与するポリシーをそのクラスタに設定します(Dataproc Granular IAM を使用するをご覧ください)。
- 次の権限を持つ IAM カスタムロールを作成します。
dataproc.jobs.create
dataproc.jobs.get
- Google Cloud コンソールの [IAM] ページでメンバーを選択または追加し、続いてカスタムロールを選択してそのプリンシパルに適用します。