Dataproc 精細的身分與存取權管理

Dataproc 精細的身分與存取權管理功能可讓您授予叢集、工作、作業、工作流程範本或自動調度政策層級的權限。

範例:您可以將叢集檢視者角色授予某使用者,讓該使用者查看專案中的叢集,然後將工作編輯者角色授予另一位使用者,讓此使用者更新、取消及查看工作。如要瞭解每個 Dataproc 精細的身分與存取權管理角色所提供的特定 Google Cloud CLI 指令,請參閱精細的身分與存取權管理提供的 SDK 指令

Dataproc 精細的身分與存取權管理角色和權限

Dataproc 精細的身分與存取權管理可以設定下列角色,在 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 精細的身分與存取權管理

本節說明如何使用 Dataproc 精細的身分與存取權管理,在現有的 Dataproc 資源上將角色指派給使用者。如要進一步瞭解如何更新及移除 Identity and Access Management (IAM) 角色,請參閱「管理專案、資料夾和機構的存取權」一文。

gcloud 指令

  1. 取得資源的身分與存取權管理政策,並寫入 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
    
  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. 使用文字編輯器,在繫結陣列中新增繫結物件,定義使用者以及使用者的資源存取權角色。例如,如要將檢視者角色 (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"
    }
    
  4. 執行下列指令,使用新的繫結陣列更新叢集政策 (resource-type 可以是「clusters」、「jobs」、「operations」、「workflow-templates」或「autoscaling-policies」):
    gcloud dataproc resource-type set-iam-policy resource-name \
        --region=region \
        --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. 發出 resource-type ("clusters" or "jobs" or "operations" or "workflowTemplates" or "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 政策物件,以納入您剛剛從 Dataproc 服務接收的繫結陣列。請務必傳回您在 getIamPolicy 回應中接收到的「etag」值 (請參閱 etag 說明文件)。 現在,請在繫結陣列中新增繫結物件,定義使用者以及使用者的叢集存取權角色。例如,若要將檢視者角色 (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"
      }
    }
    
  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"
    }
    

控制台

前往 Google Cloud 控制台的「Dataproc Clusters」(Dataproc 叢集) 頁面,然後按一下叢集名稱左側的方塊,開啟「Permissions/Labels」(權限/標籤) 面板 (如果沒有顯示此面板,請按一下頁面右上方的「SHOW INFO PANEL」(顯示資訊面板))。在「權限」分頁下方,選取 Dataproc 角色,在「Add principals」(新增主體) 方塊中新增一或多個帳戶地址,然後按一下「新增」

精細的身分與存取權管理提供的 SDK 指令

本節說明每個精細的身分與存取權管理角色,對 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

使用精細的身分與存取權管理提交工作

如要允許主體 (使用者、群組或服務帳戶) 使用 Dataproc 精細的身分與存取權管理提交工作給指定叢集,除了將叢集的編輯者角色授予使用者外,還必須在專案層級設定額外的權限。請採取下列步驟,允許主體在指定的 Dataproc 叢集上提交工作:

  1. 建立 Cloud Storage bucket,叢集可使用此 bucket 連線至 Cloud Storage。
  2. 在值區層級政策中新增主體,為主體選取包含下列權限的 Storage 物件檢視者角色 (請參閱 roles/storage.objectViewer):
    1. storage.objects.get
    2. storage.objects.list
  3. 建立叢集時,請使用 --bucket 參數,將您剛剛建立的值區名稱傳送至叢集 (請參閱 gcloud dataproc clusters create --bucket)。
  4. 建立叢集後,請在叢集設定政策,將編輯者或擁有者角色授予主體 (請參閱使用 Dataproc 精細的身分與存取權管理)。
  5. 建立 IAM 自訂角色,並授予下列權限:
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. 在 Google Cloud 控制台的「IAM」IAM頁面中選取或新增主體,然後選取自訂角色並套用到主體。