워크플로에 Google Cloud 리소스에 대한 액세스 권한 부여

Workflows는 서비스 계정을 사용하여 워크플로에 Google Cloud 리소스에 대한 액세스 권한을 부여합니다. 서비스 계정은 함수, 애플리케이션, VM과 같이 사람이 아닌 사용자의 ID로 사용되는 특수 계정입니다. 사람이 아닌 사용자를 인증하는 방법을 제공합니다. 서비스 계정 또는 주 구성원은 ID와 리소스라고 생각할 수 있습니다.

  • 서비스 계정을 ID로 간주하면 서비스 계정에 역할을 부여하여 워크플로와 같은 리소스에 액세스할 수 있습니다.

  • 서비스 계정을 리소스로 간주하면 다른 사용자에게 해당 서비스 계정에 액세스하거나 관리할 역할을 부여할 수 있습니다.

서비스 계정은 계정 고유의 이메일 주소로 식별됩니다.

프로덕션 애플리케이션에서의 인증 설정에 대한 자세한 내용은 서비스 계정으로 인증을 참조하세요.

기본 서비스 계정

모든 워크플로는 워크플로 생성 시 Identity and Access Management(IAM) 서비스 계정과 연결됩니다. 워크플로 생성 중 서비스 계정을 지정하지 않으면 해당 ID에 대해 기본 Compute Engine 서비스 계정이 워크플로에 사용됩니다. 워크플로의 연결된 서비스 계정을 확인할 수 있습니다. 이 문서에서 워크플로의 연결된 서비스 계정 확인을 참조하세요.

기본 서비스 계정은 테스트 및 개발 용도로만 사용하는 것이 좋습니다.

서비스 계정 권한

서비스 계정은 ID이므로 다른 주 구성원에게 역할을 부여했던 것과 마찬가지로 서비스 계정에 역할을 부여하여 프로젝트의 리소스에 액세스하도록 할 수 있습니다. 예를 들어 워크플로에서 Cloud Logging으로 로그를 전송하도록 하려면 워크플로를 실행하는 서비스 계정에 logging.logEntries.create 권한이 포함된 역할(예: Logs Writer 역할)이 부여되었는지 확인합니다.

워크플로가 자체적으로 호출하거나 다른 워크플로를 호출하지 않는 한(즉, 새 워크플로 실행을 생성) 워크플로 서비스 계정에 workflows.invoker 역할이 필요하지 않습니다. 자세한 내용은 Workflows 호출을 참조하세요.

서비스 계정을 포함하여 주 구성원에게 역할을 부여하는 방법에 대한 자세한 내용은 액세스 권한 부여, 변경, 취소를 참조하세요.

리소스에 서비스 계정 연결

리소스를 만들고 서비스 계정을 연결하려면 리소스를 만들 수 있는 권한과 리소스에 연결할 서비스 계정을 가장할 수 있는 권한이 필요합니다. 서비스 계정을 가장하고 서비스 계정이 액세스할 수 있는 모든 리소스에 간접적으로 액세스할 수 있는 권한은 iam.serviceAccounts.actAs 권한이 있는 모든 역할에서 제공됩니다.

자세한 내용은 서비스 계정 명의 도용 관리를 참조하세요.

Cloud Functions(2세대) 호출

Cloud Functions(2세대)에서 기본 Cloud Run 서비스를 관리하여 호출 권한을 사용할 수 있습니다. 워크플로가 Cloud Functions(2세대) 서비스를 호출하는 경우 호출자의 서비스 계정에 Cloud Functions 호출자(roles/cloudfunctions.invoker) 역할을 부여할 필요가 없습니다. 대신 Cloud Run 호출자(roles/run.invoker) 역할을 부여해야 합니다.

자세한 내용은 Cloud Functions(2세대)의 차이점을 참조하세요.

워크플로의 연결된 서비스 계정 확인

특정 워크플로에 연결된 서비스 계정을 확인할 수 있습니다.

콘솔

  1. Google Cloud Console에서 Workflows 페이지로 이동합니다.
    Workflows로 이동

  2. Workflows 페이지에서 워크플로 이름을 클릭합니다.

  3. 워크플로 세부정보 페이지에서 세부정보 탭을 클릭합니다.

    워크플로의 연결된 서비스 계정이 표시됩니다.

gcloud

  1. 터미널을 엽니다.

  2. 다음 명령어를 입력합니다.

    gcloud workflows describe MY_WORKFLOW
    

    MY_WORKFLOW를 워크플로의 이름으로 바꿉니다.

    연결된 서비스 계정을 포함한 전체 워크플로 설명이 반환됩니다. 예를 들면 다음과 같습니다.

    createTime: '2020-06-05T23:45:34.154213774Z'
    name: projects/myProject/locations/us-central1/workflows/myWorkflow
    serviceAccount: projects/my-project/serviceAccounts/012345678901-compute@developer.gserviceaccount.com
    sourceContents: [...]

다음 단계