리소스에 서비스 계정을 연결할 수 있는 권한 필요

특정 Google Cloud 리소스를 만들 때 서비스 계정을 연결할 수 있습니다. 연결된 서비스 계정은 리소스에서 실행되는 모든 작업의 ID 역할을 하므로 Google Cloud API에 작업을 인증할 수 있습니다.

대부분의 Google Cloud 서비스에서 사용자가 서비스 계정을 리소스에 연결하려면 서비스 계정을 가장할 수 있는 권한이 필요합니다. 즉, 사용자에게는 서비스 계정에 대한 iam.serviceAccounts.actAs 권한이 필요합니다.

하지만 이전에는 사용자에게 서비스 계정을 가장할 수 있는 권한이 없더라도 사용자가 특정 서비스를 사용하여 서비스 계정을 리소스에 연결할 수 있었습니다. 이러한 구성으로 인해 이러한 서비스의 사용자가 명확하지 않은 승격된 권한을 얻을 수 있었습니다.

아래 표에는 이러한 구성의 서비스와 각 서비스의 기존 동작이 나와 있습니다.

서비스 기존 동작
Cloud Composer 사용자는 프로젝트의 서비스 계정을 가장할 수 있는 권한이 없더라도 프로젝트의 서비스 계정을 Cloud Composer 환경에 연결할 수 있었습니다.
Cloud Data Fusion 사용자는 Compute Engine 기본 서비스 계정을 가장할 수 있는 권한이 없더라도 이 서비스 계정을 리소스에 연결할 수 있었습니다.
Dataflow
Dataproc

이제는 사용자가 서비스 계정을 리소스에 연결할 때 서비스에서 사용자에게 서비스 계정을 가장할 수 있는 권한이 있는지 확인해야 합니다. 하지만 다음 유형의 조직에는 기존 동작이 여전히 존재합니다.

  • Cloud Data Fusion, Dataflow 또는 Dataproc 리소스를 배포할 수 있는 권한은 있지만 Compute Engine 기본 서비스 계정을 가장할 수 있는 권한이 없는 사용자의 조직입니다.
  • Cloud Composer 환경을 배포할 수 있는 권한은 있지만 서비스 계정을 가장할 수 있는 권한이 없는 사용자의 조직입니다.

조직이 여전히 기존 동작에 영향을 받는 경우 수동으로 이를 중지하는 방법이 설명된 이메일을 받게 됩니다. 자세한 안내는 아래 섹션을 참조하세요.

Cloud Composer 보안

Cloud Composer의 기존 동작을 수동으로 중지하려면 먼저 사용자에게 새 리소스에 연결할 서비스 계정을 가장할 수 있는 권한이 있는지 확인합니다. 그런 다음 서비스 계정을 리소스에 연결할 때 권한을 요구하도록 조직 정책 제약조건을 사용 설정합니다.

  1. Cloud Composer 환경에 binding된 모든 서비스 계정을 파악합니다.

    1. Cloud Console에서 Composer 환경 페이지로 이동합니다.

      Composer 환경 페이지로 이동

    2. 환경 이름을 클릭합니다.

    3. 환경 구성 탭에서 서비스 계정 필드를 찾고 서비스 계정 이름을 기록합니다.

    4. 프로젝트의 모든 Cloud Composer 환경에 앞의 단계를 반복합니다.

  2. 이러한 서비스 계정이 최소 권한 원칙을 따르는지 확인합니다.

  3. Cloud Composer 환경을 배포하거나 관리하는 모든 사용자가 환경에서 사용하는 서비스 계정을 가장할 수 있는지 확인합니다.

    이 기능을 제공하려면 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)과 같이 iam.serviceAccounts.actAs 권한이 있는 역할을 사용자에게 부여합니다. 이 역할을 프로젝트 또는 개별 서비스 계정에 부여할 수 있습니다. 자세한 안내는 서비스 계정 가장 관리를 참조하세요.

  4. 리소스를 서비스 계정에 binding할 때 iam.serviceAccounts.actAs 권한을 요구하려면 다음 조직 정책 제약조건을 사용 설정합니다.

    • constraints/composer.enforceServiceAccountActAsCheck
  5. (선택사항) 부울 조직 정책 시행자를 사용하여 이전의 조직 정책 제약조건이 모든 프로젝트에 적용되는지 확인합니다.

Dataproc, Dataflow, Cloud Data Fusion 보안

Dataproc, Dataflow, Cloud Data Fusion의 기존 동작을 수동으로 중지하려면 먼저 사용자에게 새 리소스에 연결할 서비스 계정을 가장할 수 있는 권한이 있는지 확인합니다. 그런 다음 서비스 계정을 리소스에 연결할 때 권한을 요구하도록 조직 정책 제약조건을 사용 설정합니다.

새 리소스에 연결하려는 서비스 계정 유형의 안내를 따릅니다.

  • Compute Engine 기본 서비스 계정을 새 리소스에 연결하지 않으려면 다음 단계를 따르세요.

    1. 새 서비스 계정을 만들고 리소스에서 작업을 실행하는 데 필요한 역할을 서비스 계정에 부여합니다. 최소 권한의 원칙을 따라야 합니다.

      서비스 계정이 Dataproc, Dataflow, Cloud Data Fusion 리소스에서 작업을 실행하는 데 필요한 역할은 다음을 참조하세요.

    2. 이러한 리소스를 배포하는 모든 사용자가 새 서비스 계정을 가장하도록 허용합니다.

      이 기능을 제공하려면 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)과 같이 iam.serviceAccounts.actAs 권한이 있는 역할을 사용자에게 부여합니다. 이 역할을 프로젝트 또는 서비스 계정에 부여할 수 있습니다. 자세한 안내는 서비스 계정 가장 관리를 참조하세요.

    3. 리소스를 서비스 계정에 binding할 때 iam.serviceAccounts.actAs 권한을 요구하려면 다음 조직 정책 제약조건을 사용 설정합니다.

      • constraints/dataflow.enforceComputeDefaultServiceAccountCheck
      • constraints/dataproc.enforceComputeDefaultServiceAccountCheck
    4. (선택사항) 부울 조직 정책 시행자를 사용하여 이전의 조직 정책 제약조건이 모든 프로젝트에 적용되는지 확인합니다.

    5. 새 리소스를 배포할 때 Compute Engine 기본 서비스 계정 대신 새 서비스 계정을 사용합니다.

  • Compute Engine 기본 서비스 계정을 새 리소스에 연결하려면 다음 단계를 따르세요.

    1. IAM 추천자를 사용하여 Compute Engine 기본 서비스 계정의 권한 범위를 안전하게 줄입니다.

      Compute Engine 기본 서비스 계정에 자동으로 높은 권한이 있는 편집자 역할이 부여됩니다. 하지만 프로덕션 구성에서는 이러한 높은 권한이 있는 역할을 사용하지 않는 것이 좋습니다.

    2. 이러한 리소스를 배포하는 모든 사용자가 Compute Engine 기본 서비스 계정을 가장할 수 있는지 확인합니다.

      이 기능을 제공하려면 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)과 같이 iam.serviceAccounts.actAs 권한이 있는 역할을 사용자에게 부여합니다. 이 역할을 프로젝트 또는 Compute Engine 기본 서비스 계정에 부여할 수 있습니다. 자세한 안내는 서비스 계정 가장 관리를 참조하세요.

    3. 리소스를 서비스 계정에 binding할 때 iam.serviceAccounts.actAs 권한을 요구하려면 다음 조직 정책 제약조건을 사용 설정합니다.

      • constraints/dataflow.enforceComputeDefaultServiceAccountCheck
      • constraints/dataproc.enforceComputeDefaultServiceAccountCheck
    4. (선택사항) 부울 조직 정책 시행자를 사용하여 이전의 조직 정책 제약조건이 모든 프로젝트에 적용되는지 확인합니다.