Eventarc 역할 및 권한

이 문서에서는 Identity and Access Management(IAM) 역할, 권한, 플래그를 설정하여 Google Cloud 및 타사 소스에서 Eventarc 이벤트를 수신하고 이벤트를 인증 또는 인증되지 않은 Cloud Run 대상 서비스로 전달하는 방법을 보여줍니다.

이 문서에서는 다음을 수행하는 방법을 보여줍니다.

  • 사용자에게 특정 IAM 역할을 부여합니다.
  • 트리거의 서비스 계정에 특정 역할 및 권한을 부여합니다. Eventarc는 고객이 제공한 서비스 계정을 트리거의 ID로 사용합니다.
  • 2021년 4월 8일 이전에 Pub/Sub 서비스 계정을 사용 설정한 경우 Pub/Sub 서비스 계정에 iam.serviceAccountTokenCreator 역할을 부여합니다.
  • gcloud 명령줄 도구를 사용하는 경우 소스 저장소의 컨테이너 이미지 또는 버전을 Cloud Run으로 배포할 때 Cloud Run 플래그를 적절하게 설정합니다.

Eventarc의 액세스 제어 옵션에 대한 자세한 내용은 액세스 제어를 참조하세요.

Eventarc 트리거 유형 및 역할

Eventarc에서는 다음 트리거 유형을 지원합니다.

  • Cloud 감사 로그 트리거: Google Cloud 소스에서 이벤트를 수신하기 위해 Eventarc는 Cloud 감사 로그를 사용합니다.
  • Cloud Pub/Sub 트리거: Eventarc는 타사 소스에서 이벤트를 수신하기 위해 Pub/Sub 알림을 사용합니다.
Cloud 감사 로그 Pub/Sub
Cloud Run의 인증된 호출 사용자:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
사용자:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
트리거 서비스 계정:
  • roles/run.invoker
  • roles/eventarc.eventReceiver
트리거 서비스 계정:
  • roles/run.invoker
Pub/Sub 서비스 계정:
  • roles/iam.serviceAccountTokenCreator
Pub/Sub 서비스 계정:
  • roles/iam.serviceAccountTokenCreator
Cloud Run 플래그:
  • 해당 없음
Cloud Run 플래그:
  • N/A
Cloud 감사 로그 Pub/Sub
인증되지 않은 Cloud Run 호출 사용자:
  • roles/eventarc.admin
  • roles/iam.serviceAccountUser
사용자:
  • roles/eventarc.admin
트리거 서비스 계정:
  • roles/eventarc.eventReceiver
트리거 서비스 계정:
  • N/A
Pub/Sub 서비스 계정:
  • roles/iam.serviceAccountTokenCreator
Pub/Sub 서비스 계정:
  • roles/iam.serviceAccountTokenCreator
Cloud Run 플래그:
  • --allow-unauthenticated
Cloud Run 플래그:
  • --allow-unauthenticated

Cloud Run의 인증된 호출

Cloud 감사 로그

Google Cloud 소스에서 이벤트를 수신하고 인증된 Cloud Run 대상으로 전달하려면 다음 안내를 따르세요.

사용자 역할

eventarc.admin

사용자에게 다음 IAM 역할을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

다음 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • USER_EMAIL: 사용자의 이메일 주소입니다.

    예시: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com 또는 domain:example.domain.com

iam.serviceAccountUser

사용자에게 다음 IAM 역할을 부여합니다.

gcloud iam service-accounts add-iam-policy-binding \
 SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
   --member="user:USER_EMAIL" \
   --role="roles/iam.serviceAccountUser"

다음 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • SERVICE_ACCOUNT_ID: 서비스 계정 ID입니다.
  • USER_EMAIL: 사용자의 이메일 주소입니다.

    예시: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com 또는 domain:example.domain.com

트리거 서비스 계정 역할

run.invoker

다음 IAM 역할을 트리거의 서비스 계정에 부여합니다.

gcloud run services add-iam-policy-binding SERVICE_ACCOUNT_NAME \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/run.invoker'

다음 값을 바꿉니다.

  • SERVICE_ACCOUNT_NAME: 트리거의 서비스 계정 이름입니다.
  • SERVICE_ACCOUNT_USER_EMAIL: 서비스 계정의 이메일 주소입니다.
eventarc.eventReceiver

다음 IAM 역할을 트리거의 서비스 계정에 부여합니다.

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/eventarc.eventReceiver'

SERVICE_ACCOUNT_USER_EMAIL서비스 계정의 이메일 주소로 바꿉니다.

Pub/Sub 서비스 계정 역할

iam.serviceAccountTokenCreator

이 역할은 기본적으로 Pub/Sub 서비스 계정에 부여됩니다.

중요: 2021년 4월 8일 이전에 Pub/Sub 서비스 계정을 사용 설정한 경우 프로젝트별로 Pub/Sub 서비스 계정에 다음 역할을 부여합니다.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run 플래그

다음 코드를 사용하여 이벤트 수신자 서비스를 인증된 Cloud Run 대상에 배포합니다.

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events

SERVICE_ACCOUNT_ID를 서비스 계정 ID로 바꿉니다.

Pub/Sub

타사 소스에서 이벤트를 수신하고 인증된 Cloud Run 대상으로 전달하려면 다음 안내를 따르세요.

사용자 역할

eventarc.admin

사용자에게 다음 IAM 역할을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

다음 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • USER_EMAIL: 사용자의 이메일 주소입니다.

    예시: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com 또는 domain:example.domain.com

iam.serviceAccountUser

사용자에게 다음 IAM 역할을 부여합니다.

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
     --member="user:USER_EMAIL" \
     --role="roles/iam.serviceAccountUser"

다음 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • SERVICE_ACCOUNT_ID: 서비스 계정 ID입니다.
  • USER_EMAIL: 사용자의 이메일 주소입니다.

    예시: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com 또는 domain:example.domain.com

트리거 서비스 계정 역할

run.invoker

다음 IAM 역할을 트리거의 서비스 계정에 부여합니다.

gcloud run services add-iam-policy-binding SERVICE_ACCOUNT_NAME \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/run.invoker'

다음 값을 바꿉니다.

  • SERVICE_ACCOUNT_NAME: 서비스 계정의 이름입니다.
  • SERVICE_ACCOUNT_USER_EMAIL: 서비스 계정의 이메일 주소입니다.

Pub/Sub 서비스 계정 역할

iam.serviceAccountTokenCreator

이 역할은 기본적으로 Pub/Sub 서비스 계정에 부여됩니다.

중요: 2021년 4월 8일 이전에 Pub/Sub 서비스 계정을 사용 설정한 경우 프로젝트별로 Pub/Sub 서비스 계정에 다음 역할을 부여합니다.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run 플래그

다음 코드를 사용하여 이벤트 수신자 서비스를 인증된 Cloud Run 대상에 배포합니다.

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events

SERVICE_ACCOUNT_ID를 서비스 계정 ID로 바꿉니다.

인증되지 않은 Cloud Run 호출

Cloud 감사 로그

Google Cloud 소스에서 이벤트를 수신하고 인증되지 않은 Cloud Run 대상으로 전달하려면 다음 안내를 따르세요.

사용자 역할

eventarc.admin

사용자에게 다음 IAM 역할을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

다음 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • USER_EMAIL: 사용자의 이메일 주소입니다.

    예시: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com 또는 domain:example.domain.com

iam.serviceAccountUser

사용자에게 다음 IAM 역할을 부여합니다.

gcloud iam service-accounts add-iam-policy-binding \
  SERVICE_ACCOUNT_ID@PROJECT_ID.iam.gserviceaccount.com \
    --member="user:USER_EMAIL" \
    --role="roles/iam.serviceAccountUser"

다음 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • SERVICE_ACCOUNT_ID: 서비스 계정 ID입니다.
  • USER_EMAIL: 사용자의 이메일 주소입니다.

    예시: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com 또는 domain:example.domain.com

트리거 서비스 계정 역할

eventarc.eventReceiver

다음 IAM 역할을 트리거의 서비스 계정에 부여합니다.

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
  --member='serviceAccount:SERVICE_ACCOUNT_USER_EMAIL' \
  --role='roles/eventarc.eventReceiver'

SERVICE_ACCOUNT_USER_EMAIL서비스 계정의 이메일 주소로 바꿉니다.

Pub/Sub 서비스 계정 역할

iam.serviceAccountTokenCreator

이 역할은 기본적으로 Pub/Sub 서비스 계정에 부여됩니다.

중요: 2021년 4월 8일 이전에 Pub/Sub 서비스 계정을 사용 설정한 경우 프로젝트별로 Pub/Sub 서비스 계정에 다음 역할을 부여합니다.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run 플래그

다음 코드를 사용하여 이벤트 수신자 서비스를 인증되지 않은 Cloud Run 대상에 배포합니다.

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events \
  --allow-unauthenticated

SERVICE_ACCOUNT_ID를 서비스 계정 ID로 바꿉니다.

Pub/Sub

타사 소스에서 이벤트를 수신하고 인증되지 않은 Cloud Run 대상으로 전달하려면 다음 안내를 따르세요.

사용자 역할

eventarc.admin

사용자에게 다음 IAM 역할을 부여합니다.

gcloud projects add-iam-policy-binding PROJECT_ID \
  --member="user:USER_EMAIL" \
  --role='roles/eventarc.admin'

다음 값을 바꿉니다.

  • PROJECT_ID: Google Cloud 프로젝트 ID입니다.
  • USER_EMAIL: 사용자의 이메일 주소입니다.

    예시: user:test-user@gmail.com, group:admins@example.com, serviceAccount:test123@example.domain.com 또는 domain:example.domain.com

트리거 서비스 계정 역할

N/A

Pub/Sub 서비스 계정 역할

iam.serviceAccountTokenCreator

이 역할은 기본적으로 Pub/Sub 서비스 계정에 부여됩니다.

중요: 2021년 4월 8일 이전에 Pub/Sub 서비스 계정을 사용 설정한 경우 프로젝트별로 Pub/Sub 서비스 계정에 다음 역할을 부여합니다.

export PROJECT_NUMBER="$(gcloud projects describe $(gcloud config get-value project) --format='value(projectNumber)')"

gcloud projects add-iam-policy-binding $(gcloud config get-value project) \
    --member="serviceAccount:service-${PROJECT_NUMBER}@gcp-sa-pubsub.iam.gserviceaccount.com" \
    --role='roles/iam.serviceAccountTokenCreator'

Cloud Run 플래그

다음 코드를 사용하여 이벤트 수신자 서비스를 인증되지 않은 Cloud Run 대상에 배포합니다.

gcloud run deploy SERVICE_ACCOUNT_ID \
  --image gcr.io/$(gcloud config get-value project)/helloworld-events \
  --allow-unauthenticated

SERVICE_ACCOUNT_ID를 서비스 계정 ID로 바꿉니다.