Cloud Dataproc Granular IAM

Cloud Dataproc Granular IAM は、クラスタ、ジョブ、オペレーション、ワークフロー テンプレート、自動スケーリング ポリシーの各レベルで権限を付与できる機能です。

たとえば、あるユーザーにはクラスタ閲覧者の役割を付与してプロジェクト内のクラスタを表示できるようにし、別のユーザーにはジョブ編集者の役割を付与してジョブの表示だけでなく更新とキャンセルもできるようにします。Cloud Dataproc Granular IAM の各役割で有効になる、特定の Google Cloud SDK コマンドの詳細は、Granular IAM で有効になる SDK コマンドをご覧ください。

Cloud Dataproc Granular IAM の役割と権限

Cloud Dataproc Granular IAM では、Cloud Dataproc リソースで次の各権限を持つ役割を以下のように設定できます。

クラスタの役割

役割 権限
閲覧者 dataproc.clusters.get
編集者 dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
オーナー dataproc.clusters.get
dataproc.clusters.list
dataproc.clusters.delete
dataproc.clusters.update
dataproc.clusters.use
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 の使用

このセクションでは、Cloud Dataproc Granular IAM を使用して、既存の Cloud Dataproc リソースに対する役割をユーザーに割り当てる方法について説明します。Cloud IAM の役割の更新と削除に関する一般的な情報については、プロジェクト メンバーに対するアクセス権の付与、変更、取り消しをご覧ください。

gcloud コマンド

  1. リソースの IAM ポリシーを取得し、JSON ファイルに書き込みます。
    gcloud dataproc resource-type ("clusters" or "jobs" or "operations" or "workflow-templates" or "autoscaling-policies" \
        get-iam-policy  resource-name --format=json > iam.json
    
  2. 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"
    }
    
  3. テキスト エディタを使用して、新しいバインディング オブジェクトを bindings 配列に追加し、ユーザーとそのユーザーに対するリソース アクセスの役割を定義します。たとえば、ユーザー sean@example.com に閲覧者の役割(roles/viewer)を付与するには、上記の例を変更して、新しいバインディング オブジェクト(以下の太字で示されている部分)を追加します。注: etag から受け取った gcloud dataproc resource-type get-iam-policy 値を返すようにしてください(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"
    }
    
  4. 次のコマンドを実行して、新しい bindings 配列でクラスタのポリシーを更新します。
    gcloud dataproc resource-type ("clusters" or "jobs" or "operations" or "workflow-templates" or "autoscaling-policies") \
        set-iam-policy resource-name --format=json iam.json
    
  5. コマンドにより、更新したポリシーが出力されます。
    {
      "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

  1. 特定のリソースの IAM ポリシーを取得するには、そのリソースタイプ(clusters、jobs、operations、workflowTemplates、autoscalingPolicies)の getIamPolicy リクエストを発行します。

    クラスタ getIamPolicy の例:

    GET https://dataproc.googleapis.com/v1/projects/projectName/regions/region/clusters/clusterName:getIamPolicy
    
  2. 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"
    }
    
  3. テキスト エディター使用して、次の JSON ポリシー オブジェクトを作成し、Cloud Dataproc サービスから受け取った bindings 配列を囲みます。getIamPolicy レスポンスで受け取った「etag」値を必ず返すようにしてください(etag のドキュメントをご覧ください)。次に、ユーザーと、そのユーザーのクラスタ アクセスの役割を定義する新しいバインディング オブジェクトを bindings 配列に追加します。たとえば、ユーザー sean@example.com に閲覧者の役割(roles/viewer)を付与するには、上記の例を変更して、新しいバインディング オブジェクト(以下の太字で示されている部分)を追加します。
    {
      "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"
      }
    }
    
  4. 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"
      }
    }
    
  5. 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

GCP Console の [Cloud Dataproc クラスタ] ページに移動し、クラスタ名の左側のボックスをクリックして、[権限 / ラベル] パネルを開きます(このパネルが表示されない場合は、ページの右上にある [情報パネルを表示] をクリックします)。[権限] タブで、Dataproc 役割を選択し、[メンバーを追加] ボックスに 1 つ以上のアカウント アドレスを追加し、[追加] をクリックします。

Granular IAM で有効になる SDK コマンド

次の表は、各 Granular IAM 役割により Cloud 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 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 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 によるジョブの送信

Cloud Dataproc Granular IAM を使用してメンバー(ユーザー、グループまたはサービス アカウント)が指定されたクラスタにジョブを送信できるようにするには、ユーザーにクラスタでの編集者の役割を付与するだけでなく、プロジェクト レベルで追加の権限を設定する必要があります。指定した Cloud Dataproc クラスタでメンバーがジョブを送信できるようにするための手順は次のとおりです。

  1. クラスタが Cloud Storage に接続するために使用できる Cloud Storage バケットを作成します。
  2. メンバーをバケットレベルのポリシーに追加し、そのメンバーに対してストレージ オブジェクト閲覧者の役割を選択します(roles/storage.objectViewer をご覧ください)。この役割には次の権限が含まれています。
    1. storage.objects.get
    2. storage.objects.list
  3. クラスタの作成時には、--bucket パラメータを使用して、作成したバケットの名前をクラスタに渡します(gcloud dataproc clusters create --bucket をご覧ください)。
  4. クラスタを作成したら、メンバーに編集者またはオーナーの役割を付与するポリシーをそのクラスタに設定します(Dataproc Granular IAM を使用するをご覧ください)。
  5. 次の権限を持つ Cloud IAM のカスタムの役割を作成します。
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. GCP Console の [IAM] ページでメンバーを選択または追加し、そのメンバーに適用するカスタムの役割を選択します。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Dataproc ドキュメント
ご不明な点がありましたら、Google のサポートページをご覧ください。