교차 프로젝트 서비스 계정 지원

모든 Eventarc 트리거는 트리거가 생성될 때 Identity and Access Management(IAM) 서비스 계정과 연결됩니다. 트리거는 서비스 계정을 기본 ID로 사용합니다.

기본적으로 한 Google Cloud 프로젝트에서 IAM 서비스 계정을 만들어 다른 프로젝트의 리소스에 연결할 수 없습니다. 하지만 별도의 프로젝트에 사용되는 조직용 서비스 계정을 중앙 집중화하면 서비스 계정을 더 쉽게 관리할 수 있습니다. 이 문서에서는 한 프로젝트의 서비스 계정을 다른 프로젝트의 Eventarc 트리거에 연결하는 데 필요한 단계를 설명합니다.

이 단계를 수행할 권한이 없으면 관리자에게 완료해 달라고 요청합니다.

교차 프로젝트 서비스 계정 사용 설정

서비스 계정 프로젝트에서 다음 단계를 완료합니다.

  1. Google Cloud 콘솔에서 조직 정책 페이지로 이동합니다.

    조직 정책으로 이동

  2. 교차 프로젝트 서비스 계정 사용 중지 정책이 시행되는 경우 사용 중지해야 합니다.

    자세한 내용은 프로젝트 간 서비스 계정 연결 사용 설정을 참조하세요.

  3. 서비스 계정을 만들고 이름을 메모하세요.

서비스 계정 인증에 대한 권한 부여

주 구성원은 서비스 계정을 사용하여 몇 가지 방법으로 인증할 수 있습니다. 각 인증 유형을 사용하려면 주 구성원에게 서비스 계정에 대한 특정 IAM 권한이 있어야 합니다. 자세한 내용은 서비스 계정 인증 역할을 참조하세요.

  1. 트리거가 포함된 Google Cloud 프로젝트의 Eventarc 서비스 에이전트에 서비스 계정 토큰 생성자(roles/iam.serviceAccountTokenCreator) IAM 역할을 부여합니다. 그러면 서비스 에이전트가 교차 프로젝트 서비스 계정 액세스를 관리할 수 있습니다. 서비스 에이전트는 특정 프로젝트에 대해 지정된 Google Cloud 서비스의 ID입니다. 자세한 내용은 서비스 에이전트를 참조하세요.

    Console

    1. Google Cloud 콘솔에서 서비스 계정 페이지로 이동합니다.

      서비스 계정으로 이동

    2. Eventarc 트리거에 연결할 서비스 계정을 소유한 프로젝트를 선택합니다.

    3. 이전에 만든 서비스 계정의 이메일 주소를 클릭합니다.

    4. 권한 탭을 클릭합니다.

    5. 이 서비스 계정에 대한 액세스 권한이 있는 주 구성원 섹션에서 액세스 권한 부여를 클릭합니다.

    6. 새 주 구성원 필드에 Eventarc 서비스 에이전트의 이메일 주소를 입력합니다.

      service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com

      EVENTARC_PROJECT_NUMBER를 트리거가 포함된 프로젝트의 Google Cloud 프로젝트 번호로 바꿉니다.

    7. 다른 역할 추가를 클릭합니다.

    8. 역할 선택 목록에서 서비스 계정 토큰 생성자를 필터링한 후 역할을 선택합니다.

    9. 저장을 클릭합니다.

    gcloud

    gcloud iam service-accounts add-iam-policy-binding 명령어를 실행합니다.

    gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \
        --member='serviceAccount:service-EVENTARC_PROJECT_NUMBER@gcp-sa-eventarc.iam.gserviceaccount.com' \
        --role='roles/iam.serviceAccountTokenCreator'

    다음을 바꿉니다.

    • SERVICE_ACCOUNT_NAME: 서비스 계정의 이름
    • SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정을 소유하는 프로젝트의 Google Cloud 프로젝트 ID
    • EVENTARC_PROJECT_NUMBER: 트리거가 포함된 프로젝트의 Google Cloud 프로젝트 번호
  2. 트리거가 포함된 Google Cloud 프로젝트의 Eventarc 서비스 에이전트와 같이 트리거를 만드는 모든 주 구성원에 서비스 계정 사용자(roles/iam.serviceAccountUser) IAM 역할을 부여합니다. 이 사전 정의된 역할에는 서비스 계정을 리소스에 연결하는 데 필요한 iam.serviceAccounts.actAs 권한이 포함되어 있습니다.

    Console

    주 구성원이 여러 서비스 계정을 가장할 수 있도록 프로젝트에 대한 역할을 부여합니다.

    1. Google Cloud 콘솔에서 IAM 페이지로 이동합니다.

      IAM으로 이동

    2. 서비스 계정을 소유하는 프로젝트를 선택합니다.

    3. 액세스 권한 부여를 클릭합니다.

    4. 새 주 구성원 필드에 주 구성원의 이메일 주소를 입력합니다.

    5. 역할 선택 목록에서 서비스 계정 사용자로 필터링한 후 역할을 선택합니다.

    6. 저장을 클릭합니다.

    또는 주 구성원이 특정 서비스 계정만 가장할 수 있도록 서비스 계정에 역할을 부여합니다.

    1. Google Cloud 콘솔에서 서비스 계정 페이지로 이동합니다.

      서비스 계정으로 이동

    2. 서비스 계정을 소유하는 프로젝트를 선택합니다.

    3. 이전에 만든 서비스 계정의 이메일 주소를 클릭합니다.

    4. 권한 탭을 클릭합니다.

    5. 이 서비스 계정에 대한 액세스 권한이 있는 주 구성원 섹션에서 액세스 권한 부여를 클릭합니다.

    6. 새 주 구성원 필드에 주 구성원의 이메일 주소를 입력합니다.

    7. 다른 역할 추가를 클릭합니다.

    8. 역할 선택 목록에서 서비스 계정 사용자로 필터링한 후 역할을 선택합니다.

    9. 저장을 클릭합니다.

    gcloud

    gcloud projects add-iam-policy-binding 명령어를 실행하고 주 구성원이 여러 서비스 계정을 가장할 수 있도록 프로젝트에 대한 역할을 부여합니다.

    gcloud projects add-iam-policy-binding SERVICE_ACCOUNT_PROJECT_ID \
        --member=PRINCIPAL \
        --role='roles/iam.serviceAccountUser'

    또는 gcloud iam service-accounts add-iam-policy-binding 명령어를 실행하고 주 구성원이 특정 서비스 계정만 가장할 수 있도록 서비스 계정에 역할을 부여합니다.

    gcloud iam service-accounts add-iam-policy-binding SERVICE_ACCOUNT_RESOURCE_NAME \
        --member=PRINCIPAL \
        --role='roles/iam.serviceAccountUser'

    다음을 바꿉니다.

    • SERVICE_ACCOUNT_PROJECT_ID: 서비스 계정을 소유하는 프로젝트의 Google Cloud 프로젝트 ID
    • PRINCIPAL: user|group|serviceAccount:email 또는 domain:domain 형식의 트리거 생성자의 식별자. 예를 들면 다음과 같습니다.
      • user:test-user@gmail.com
      • group:admins@example.com
      • serviceAccount:test123@example.domain.com
      • domain:example.domain.comm
    • SERVICE_ACCOUNT_RESOURCE_NAME: 서비스 계정의 전체 리소스 이름 예를 들면 다음과 같습니다.

      projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com

      각 항목의 의미는 다음과 같습니다.

      • SERVICE_ACCOUNT_PROJECT_ID는 서비스 계정을 소유하는 Google Cloud 프로젝트 ID입니다.
      • SERVICE_ACCOUNT_NAME은 서비스 계정의 이름입니다.

이벤트 라우팅 지원을 위한 권한 부여

Eventarc 트리거를 만들기 전에 Eventarc를 사용하여 이벤트 라우팅을 지원하도록 다른 IAM 권한을 부여해야 합니다.

  1. Eventarc 트리거가 작업을 수행하기 위해 액세스해야 하는 리소스와 이벤트 제공자 및 대상을 기반으로 적절한 권한을 부여합니다. 자세한 내용은 모든 역할 및 권한을 참조하세요.

  2. 교차 프로젝트 서비스 계정을 사용하여 트리거를 만듭니다.

다음 단계