Dataflow 권한 문제 해결

이 페이지에서는 Dataflow 권한의 문제를 조사하고 해결하는 방법을 설명합니다.

Dataflow 작업을 성공적으로 실행하려면 사용자 계정과 Dataflow 서비스 계정에 리소스에 액세스하는 데 필요한 권한이 있어야 합니다. 필요한 역할 목록과 이러한 역할을 부여하는 방법은 Dataflow 보안 및 권한 페이지의 Google Cloud 파이프라인의 보안 및 권한을 참조하세요.

또한 Apache Beam 파이프라인에서 Google Cloud 리소스에 액세스하면 Dataflow 프로젝트의 작업자 서비스 계정이 리소스에 액세스해야 합니다. 작업자 서비스 계정에 필요할 수 있는 역할 목록은 역할 할당 예시를 참조하세요.

작업을 실행하는 데 필요한 역할이 하나 이상 누락되면 작업 로그나 작업자 로그에 오류가 표시될 수 있습니다. 작업이 실패할 때 오류를 찾는 방법은 파이프라인 실패에 대한 정보 찾기를 참조하세요.

권한 문제를 해결하려면 누락된 권한과 해당 권한이 필요한 계정을 파악해야 합니다. 누락된 권한을 파악하려면 오류 메시지에 나열된 권한을 살펴보고 해당 권한이 포함된 역할을 찾습니다. 항상 그런 것은 아니지만 Dataflow 작업자 서비스 계정에 관련 역할을 할당해야 하는 경우가 많습니다.

권한을 추가하려면 사용자 계정에서 액세스를 관리할 수 있어야 합니다. 자세한 내용은 서비스 계정에 대한 액세스 관리다른 리소스에 대한 액세스 관리를 참조하세요.

사용자에게 프로젝트에 대한 쓰기 액세스 권한 없음

Dataflow 작업을 실행하려고 하면 작업이 실패하고 다음과 비슷한 오류가 표시됩니다.

PERMISSION_DENIED: (Could not create workflow; user does not have write access to project: $PROJECT_ID Causes: (...): Permission 'dataflow.jobs.create' denied on project: '$PROJECT_ID'

이 오류는 사용자 계정에 roles/dataflow.developer 역할이 없으면 발생합니다.

이 문제를 해결하려면 사용자 계정에 roles/dataflow.developer 역할을 부여합니다. 또한 사용자 계정에 roles/iam.serviceAccountUser 역할이 있는지 확인합니다. 자세한 내용은 Identity and Access Management 문서의 단일 역할 부여를 참조하세요.

사용자에게 프로젝트에 대한 충분한 권한 없음

Dataflow 작업을 취소하려고 하면 다음과 비슷한 오류가 표시됩니다.

Could not cancel workflow; user does not have sufficient permissions on project:PROJECT_ID, or the job does not exist in the project. Causes: (...): Permission 'dataflow.jobs.cancel' denied on project: 'PROJECT_ID' Please ensure you have permission to access the job

작업을 드레이닝하거나 업데이트하려고 할 때에도 유사한 오류가 발생할 수 있습니다.

이 오류는 다음 이유 중 하나로 발생합니다.

  • 사용자 계정에 roles/dataflow.developer 역할이 없습니다. 이 문제를 해결하려면 사용자 계정에 roles/dataflow.developer 역할을 부여합니다. 또한 사용자 계정에 roles/iam.serviceAccountUser 역할이 있는지 확인합니다. 자세한 내용은 Identity and Access Management 문서의 단일 역할 부여를 참조하세요.
  • 작업 ID가 잘못되었습니다. 오타가 있거나 작업 이름을 사용하여 작업 ID 대신 작업을 취소할 수 있습니다.

작업자 서비스 계정의 권한을 확인할 수 없음

Dataflow 작업을 실행하려고 하면 다음과 비슷한 오류가 표시됩니다.

Workflow failed. Causes: Permissions verification for controller service account failed. All permissions in IAM role roles/dataflow.worker should be granted to controller service account PROJECT_NUMBER-compute@developer.gserviceaccount.com.

이 오류는 작업자 서비스 계정에 roles/dataflow.worker 역할이 없으면 발생합니다.

이 문제를 해결하려면 작업자 서비스 계정에 roles/dataflow.worker 역할을 부여합니다. 자세한 내용은 Identity and Access Management 문서의 단일 역할 부여를 참조하세요.

파이프라인 검증 실패

새 Dataflow 작업이 시작되기 전에 Dataflow는 파이프라인에서 유효성 검사를 수행합니다. 유효성 검사에서 파이프라인 문제를 발견하면 시간과 컴퓨팅 리소스를 절약하기 위해 Dataflow는 조기에 작업 제출에 실패합니다. 작업 로그의 Dataflow에는 유효성 검사에서 발견한 항목과 문제 해결 안내가 포함된 로그 메시지가 있습니다.

파이프라인 유효성 검사에서 권한 문제를 발견하면 작업 로그에 다음 오류가 표시될 수 있습니다.

[The preflight pipeline validation failed for job JOB_ID.] Missing permissions
PERMISSION when accessing RESOURCE_PATH as Dataflow worker service account WORKER_SERVICE_ACCOUNT.

둘 이상의 리소스에 대한 권한이 누락된 경우 작업 로그에 여러 권한 오류 메시지가 포함됩니다.

Dataflow 작업을 다시 제출하기 전에 권한 문제를 해결합니다. 다음 리소스는 역할 및 권한 수정에 대한 정보를 제공합니다.

파이프라인 유효성 검사를 재정의하고 유효성 검사 오류가 있는 작업을 시작하려면 다음 파이프라인 옵션을 사용합니다.

--experiment=enable_ppv_effect=false

사용자 인증 정보를 새로고침하는 중에 문제 발생

Dataflow 작업을 실행하려고 하면 다음과 비슷한 오류가 표시됩니다.

Workflow failed. Causes: There was a problem refreshing your credentials.
Please check: 1. The Dataflow API is enabled for your project.
2. Make sure both the Dataflow service account and the controller service account have sufficient permissions.
If you are not specifying a controller service account, ensure the default Compute Engine service account PROJECT_NUMBER-compute@developer.gserviceaccount.com exists and has sufficient permissions.
If you have deleted the default Compute Engine service account, you must specify a controller service account

이 오류는 작업자 서비스 계정에 roles/dataflow.worker 역할이 없거나 Dataflow API가 사용 설정되지 않은 경우에 발생합니다.

먼저 작업자 서비스 계정에 roles/dataflow.worker 역할이 있는지 확인합니다. 필요한 경우 작업자 서비스 계정에 roles/dataflow.worker를 부여합니다. 자세한 내용은 Identity and Access Management 문서의 단일 역할 부여를 참조하세요.

Dataflow API를 사용 설정하려면 Google Cloud 프로젝트에서 API 사용 설정을 참조하세요.

'compute.subnetworks.get' 권한이 필요함

공유 VPC 네트워크에서 Dataflow 작업을 실행하려 하면 다음 중 하나와 유사한 오류가 표시됩니다.

Required 'compute.subnetworks.get' permission for 'projects/project-id/regions/region/subnetworks/subnet-name' HTTP Code: 403
Required 'compute.subnetworks.use' permission for 'projects/project-id/regions/region/subnetworks/subnet-name' HTTP Code: 403

공유 VPC를 사용하면 호스트 프로젝트VPC 네트워크에서 동일한 조직의 다른 서비스 프로젝트로 서브넷을 내보낼 수 있습니다. 서비스 프로젝트의 인스턴스는 호스트 프로젝트의 공유 서브넷에서 네트워크 연결을 수행할 수 있습니다. 자세한 내용은 공유 VPC 개요를 참조하세요.

이 문제를 해결하려면 먼저 서비스 프로젝트가 호스트 프로젝트에 연결되어 있는지 확인합니다. 자세한 내용은 공유 VPC 프로비저닝 페이지의 서비스 프로젝트 연결을 참조하세요.

그런 후 호스트 프로젝트의 Compute Engine 서비스 계정, 서비스 프로젝트의 Dataflow 작업자 서비스 계정, 작업 제출에 사용되는 서비스 계정에 다음 역할을 부여합니다.

자세한 내용은 Identity and Access Management 문서의 공유 VPC의 서브네트워크 매개변수 지정 가이드라인단일 역할 부여를 참조하세요.

Dataflow 러너에서 버킷에 액세스할 수 없음

Cloud Storage 버킷의 객체를 나열하려고 하면 Dataflow 작업이 실패하고 다음과 비슷한 오류가 표시됩니다.

"dataflow-runner@project-id.iam.gserviceaccount.com" does not have `storage.objects.list` access to the Google Cloud Storage Bucket

이 오류는 작업자 서비스 계정에 roles/storage.objectViewer 역할이 없으면 발생합니다.

이 문제를 해결하려면 사용자 계정에 roles/storage.objectViewer 역할을 부여합니다. 자세한 내용은 Identity and Access Management 문서의 단일 역할 부여를 참조하세요.

리소스에서 Cloud KMS 키 권한이 거부됨

고객 관리 암호화 키를 사용하고 있고 Dataflow 작업을 만들려고 하면 작업이 실패하고 다음과 비슷한 오류가 표시됩니다.

Cloud KMS key permission 'cloudkms.cryptoKeyVersions.useToEncrypt' denied on resource
'projects/project-id/locations/location/keyRings/keyRingName/cryptoKeys/keyname' (or it may not exist). cannot be validated.
Please confirm the full key path is used (starts with projects) and that there are no typos.

이 오류는 작업자 서비스 계정과 Dataflow 서비스 계정에 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 없으면 발생합니다.

이 문제를 해결하려면 작업자 서비스 계정과 Dataflow 서비스 계정에 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여합니다. 자세한 내용은 고객 관리 암호화 키 사용 페이지의 암호화/복호화 권한 부여를 참조하세요.

리소스에 대한 권한이 거부됨

파이프라인을 만들려고 하면 파이프라인이 실패하고 다음 오류가 발생합니다.

Permission 'datapipelines.pipelines.create' denied on resource '//datapipelines.googleapis.com/projects/PROJECT_ID/locations/REGION' (or it may not exist).

이 오류는 프로젝트의 작업자 서비스 계정에 파이프라인과 관련된 파일 및 기타 리소스에 대한 액세스 권한이 없는 경우에 발생합니다.

이 문제를 해결하려면 작업자 서비스 계정에 다음 역할을 할당합니다.

  • roles/dataflow.admin
  • roles/dataflow.worker

자세한 내용은 'Dataflow 보안 및 권한'의 작업자 서비스 계정을 참조하세요.

워크플로 실패

고객 관리 암호화 키를 사용하고 있고 Dataflow 작업을 만들려고 하면 다음 오류가 표시되면서 작업이 실패합니다.

Workflow failed

이 문제는 다음과 같은 경우에 발생할 수 있습니다. 

  • 키와 Dataflow 작업이 같은 리전에 없거나 멀티 리전 키가 사용됩니다. 전역 키와 멀티 리전 키는 지원되지 않습니다. CMEK 리전과 Dataflow 작업의 리전이 동일해야 합니다.
  • 키 이름이 올바르게 지정되지 않았습니다. 키가 존재하지 않거나 이름에 오타가 있을 수 있습니다.

Cloud KMS 키에서 이 작업의 리소스를 보호할 수 없음

Dataflow 작업을 실행하고 있고 고객 관리 암호화 키를 사용 설정하려고 하면 작업이 실패하고 다음과 비슷한 오류가 표시됩니다.

Cloud KMS key can't protect resources for this job. Please make sure the KMS key's region matches the Dataflow region

이 문제는 다음과 같은 경우에 발생할 수 있습니다. 

  • 키와 Dataflow 작업이 같은 리전에 없거나 멀티 리전 키가 사용됩니다. 전역 키와 멀티 리전 키는 지원되지 않습니다. CMEK 리전과 Dataflow 작업의 리전이 동일해야 합니다.
  • dataflowKMSKey 매개변수가 올바르게 지정되지 않았습니다.

수직 자동 확장이 작동하지 않음

수직 자동 확장을 사용할 때 작업이 수직으로 자동 확장되지 않으며 작업 로그에 다음 오류가 표시됩니다.

{"level":"error","ts":1708815877.1246133,"caller":"exporter/exporter.go:232","msg":"failed to get response from UAS: %v","error":"rpc error: code = PermissionDenied desc = The caller does not have permission","stacktrace":"google3/autoscaler/vitor/external/go/exporter/exporter.receiver\n\tautoscaler/vitor/external/go/exporter/exporter.go:232"}

이 오류는 작업자 서비스 계정에 Dataflow 작업자(roles/dataflow.worker) 역할이 없으면 발생합니다.

이 문제를 해결하려면 작업자 서비스 계정에 roles/dataflow.worker 역할을 부여합니다. 자세한 내용은 Identity and Access Management 문서의 단일 역할 부여를 참조하세요.

작업자 서비스 계정에 커스텀 역할을 사용 중이면 다음 권한을 커스텀 역할에 추가합니다.

  • autoscaling.sites.readRecommendations
  • autoscaling.sites.writeMetrics
  • autoscaling.sites.writeState