Dataproc 세분화된 IAM

Dataproc 상세 IAM은 클러스터, 작업, 워크플로 템플릿 또는 자동 확장 정책 수준에서 권한을 부여할 수 있는 기능입니다.

예를 들어 한 명의 사용자에게는 프로젝트 내에서 클러스터를 볼 수 있는 클러스터 뷰어 역할을 부여하고 다른 사용자에게는 작업을 업데이트하고 취소하며 볼 수 있는 작업 편집자 역할을 부여할 수 있습니다. 각 Dataproc 상세 IAM 역할을 통해 사용 설정된 특정 Google Cloud CLI 명령어를 확인하려면 상세 IAM을 통해 사용 설정된 SDK 명령어를 참조하세요.

Dataproc 상세 IAM 역할 및 권한

Dataproc 상세 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 상세 IAM 사용

이 섹션에서는 Dataproc 상세 IAM을 사용하여 기존 Dataproc 리소스에서 사용자에게 역할을 할당하는 방법을 설명합니다. Identity and Access Management(IAM) 역할 업데이트 및 삭제에 대한 자세한 내용은 액세스 권한 부여, 변경, 취소를 참조하세요.

gcloud 명령어

  1. 리소스의 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
    
  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. 텍스트 편집기를 사용해 사용자와 해당 사용자의 리소스 액세스 역할을 정의하는 바인딩 배열에 새로운 바인딩 객체를 추가합니다. 예를 들어 사용자 sean@example.com에게 뷰어 역할(roles/viewer)을 부여하려면 위의 예시를 변경하여 새 binding 객체(아래 굵게 표시됨)를 추가합니다. 참고: 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. 다음 명령어를 실행하여 클러스터의 정책을 새 binding 배열로 업데이트합니다. 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 요청을 실행하여 리소스의 IAM 정책을 가져옵니다.

    클러스터 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 서비스에서 받은 binding 배열을 포함시킵니다. getIamPolicy 응답에서 받은 'etag' 값을 반환해야 합니다(etag 문서 참조). 이제 사용자와 해당 사용자의 클러스터 액세스 역할을 정의하는 binding 배열에 새로운 binding 객체를 추가합니다. 예를 들어 사용자 sean@example.com에게 뷰어 역할(roles/viewer)을 부여하려면 위의 예를 변경하여 새 binding 객체(아래 굵게 표시됨)를 추가합니다.
    {
      "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 클러스터 페이지로 이동한 후 클러스터 이름 왼쪽에 있는 상자를 클릭하여 권한/라벨 패널을 엽니다(이 패널이 표시되지 않으면 페이지 오른쪽 상단에 있는 정보 패널 표시 클릭). 권한 탭에서 Dataproc 역할을 선택하고 주 구성원 추가 상자에서 하나 이상의 계정 주소를 추가한 후 추가를 클릭합니다.

상세 IAM을 통해 사용 설정된 SDK 명령

아래 표에는 각 상세 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

상세 IAM을 통해 작업 제출

사용자에게 클러스터에 대한 편집자 역할을 부여하는 것 외에 주 구성원(사용자, 그룹, 서비스 계정)이 Dataproc 상세 IAM을 사용하여 지정된 클러스터에 작업을 제출할 수 있도록 하려면 프로젝트 수준에서 추가 권한을 설정해야 합니다. 다음은 주 구성원이 지정된 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 상세 IAM 사용 참조).
  5. 다음 권한으로 IAM 커스텀 역할을 만듭니다.
    1. dataproc.jobs.create
    2. dataproc.jobs.get
  6. Google Cloud 콘솔 IAM 페이지에서 주 구성원을 선택하거나 추가한 후 커스텀 역할을 선택하여 주 구성원에 적용합니다.