이 문서에서는 Eventarc를 사용하여 Google Cloud 및 기타 소스의 이벤트를 라우팅하기 위해 Identity and Access Management(IAM) 역할과 권한을 부여하는 방법을 보여줍니다.
Eventarc API를 호출하는 주 구성원에 프로젝트 전체 권한 부여(예: Eventarc 트리거 생성자):
- Eventarc 관리자 역할이 있으면 트리거를 만들 때 트리거의 서비스 계정 지정을 포함하여 모든 Eventarc 리소스를 완전히 제어할 수 있습니다.
- 서비스 계정 사용자 역할이 있으면 주 구성원이 서비스 계정을 가장하고 사용할 수 있습니다. 서비스 계정은 Eventarc 트리거와 연결되며 트리거의 ID를 나타냅니다.
트리거 서비스 계정에 Eventarc 트리거 권한을 부여합니다.
- Eventarc 이벤트 수신자 역할이 있으면 Eventarc 트리거가 이벤트 제공자로부터 이벤트를 수신할 수 있습니다. Cloud Pub/Sub에서 직접 이벤트를 라우팅하는 경우 이 역할을 부여할 필요가 없습니다.
- Workflows 호출자 역할이 있으면 Eventarc 트리거에서 워크플로 실행을 시작할 수 있습니다.
-
- Cloud Storage에서 직접 이벤트의 트리거를 만드는 경우 Pub/Sub 게시자 역할을 부여합니다.
- 2021년 4월 8일 또는 그 전에 Cloud Pub/Sub 서비스 에이전트를 사용 설정한 경우 서비스 계정 토큰 생성자 역할을 부여합니다.
IAM 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요. 커스텀 역할이나 다른 사전 정의된 역할을 통해 필요한 권한을 얻을 수도 있습니다.
프로젝트 전체 권한 부여
프로젝트 생성자에게는 기본 소유자 역할(roles/owner
)이 부여됩니다. 기본적으로 이 역할에는 대부분의 Google Cloud 리소스에 대한 전체 액세스에 필요한 권한이 포함됩니다. 그렇지 않으면 관리자가 적절한 주 구성원(구성원이라고도 부름)에게 적절한 리소스에 대해 필요한 역할을 부여해야 합니다.
예를 들어 주 구성원은 Google 계정(최종 사용자)이거나 서비스 계정(애플리케이션 및 컴퓨팅 워크로드)일 수 있습니다. 주 구성원마다 고유 식별자(일반적으로 이메일 주소)가 있습니다.
Eventarc 관리자 역할(
roles/eventarc.admin
)이 있으면 모든 Eventarc 리소스를 완전히 제어할 수 있습니다.프로젝트 수준의 역할을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/eventarc.admin
다음을 바꿉니다.
PROJECT_ID
: Google Cloud 프로젝트 ID입니다.PRINCIPAL
: 일반적으로PRINCIPAL_TYPE:ID
형식의 트리거 생성자의 식별자입니다. 예를 들면user:my-user@example.com
입니다. 가능한PRINCIPAL_TYPE
값의 전체 목록은 정책 바인딩 참조를 확인하세요.
서비스 계정 사용자 역할(
roles/iam.serviceAccountUser
)이 있으면 주 구성원이 서비스 계정으로 작업을 실행할 수 있습니다.Eventarc 트리거를 만들거나 워크플로를 배포할 때 사용자 관리 서비스 계정을 트리거 또는 워크플로와 연결할 수 있으며 이 ID를 나타내는 역할이 필요합니다. 자세한 내용은 서비스 계정 인증 역할을 참조하세요.
주 구성원이 여러 서비스 계정을 가장할 수 있도록 프로젝트에 역할을 부여하거나 주 구성원이 특정 서비스 계정만 가장할 수 있도록 서비스 계정에 역할을 부여할 수 있습니다.
프로젝트 수준의 역할을 부여합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
또는 서비스 계정 수준의 역할을 부여합니다.
gcloud iam service-accounts add-iam-policy-binding \ projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_NAME@SERVICE_ACCOUNT_PROJECT_ID.iam.gserviceaccount.com \ --member=PRINCIPAL \ --role=roles/iam.serviceAccountUser
다음을 바꿉니다.
SERVICE_ACCOUNT_PROJECT_ID
: 서비스 계정이 포함된 Google Cloud 프로젝트 ID입니다.SERVICE_ACCOUNT_NAME
: 서비스 계정의 이름입니다.
Eventarc 트리거 권한 부여
모든 Eventarc 트리거는 트리거가 생성될 때 IAM 서비스 계정과 연결됩니다. 트리거가 기본 ID로 사용하는 사용자 관리 서비스 계정을 지정할 수 있습니다. 트리거를 만들 때 서비스 계정을 지정하지 않으면 트리거에 Compute Engine 기본 서비스 계정이 해당 ID로 사용됩니다.
트리거를 관리할 때 제어 기능과 및 유연성을 높이기 위해서는 고유한 사용자 관리 서비스 계정을 만드는 것이 좋습니다.
서비스 계정을 만들고 이름을 기록해 둡니다.
gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \ --description="DESCRIPTION" \ --display-name="DISPLAY_NAME"
다음을 바꿉니다.
SERVICE_ACCOUNT_NAME
: 서비스 계정의 이름. 이 이름은 서비스 계정을 식별하는 이메일 주소에 표시됩니다.DESCRIPTION
: 서비스 계정에 대한 선택적인 설명DISPLAY_NAME
: Google Cloud 콘솔에 표시할 서비스 계정 이름
트리거가 이벤트 제공업체에서 이벤트를 수신할 수 있도록 프로젝트에 Eventarc 트리거와 연결된 서비스 계정에 대해 Eventarc 이벤트 수신자 역할(
roles/eventarc.eventReceiver
)을 부여합니다.Cloud Pub/Sub에서 직접 이벤트를 라우팅하는 경우에는 Eventarc 이벤트 수신자 역할을 부여할 필요가 없습니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/eventarc.eventReceiver
SERVICE_ACCOUNT_NAME
을 이전 단계에서 확인한 서비스 계정의 이름으로 바꿉니다.워크플로 실행을 시작할 수 있도록 프로젝트의 Workflows 호출자 역할(
roles/workflows.invoker
)을 Eventarc 트리거와 연결된 서비스 계정에 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \ --role=roles/workflows.invoker
SERVICE_ACCOUNT_NAME
을 앞에서 확인한 서비스 계정 이름으로 바꿉니다.
Google 서비스 에이전트에 권한 부여
일부 Google Cloud 서비스에는 서비스가 리소스에 액세스하도록 허용하는 Google 관리 서비스 계정이 있습니다. 이러한 서비스 계정을 서비스 에이전트라고도 합니다. API에 서비스 에이전트가 필요한 경우 API를 활성화하고 사용한 후 Google이 서비스 에이전트를 만듭니다.
Cloud Storage에서 직접 이벤트에 대한 트리거를 만드는 경우 주제에 메시지 게시를 지원하기 위해 프로젝트에서 Google Storage 서비스 에이전트에 대해 Pub/Sub 게시자 역할(
roles/pubsub.publisher
)을 부여합니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com \ --role=roles/pubsub.publisher
PROJECT_NUMBER
를 Google Cloud 프로젝트 번호로 바꿉니다. Google Cloud 콘솔의 시작 페이지에서 또는 다음 명령어를 실행하여 프로젝트 번호를 찾을 수 있습니다.gcloud projects describe PROJECT_ID --format='value(projectNumber)'
2021년 4월 8일 또는 이전에 Cloud Pub/Sub 서비스 에이전트를 사용 설정한 경우 인증된 Pub/Sub 푸시 요청을 지원하려면 프로젝트에서 Pub/Sub 서비스 에이전트에 대해 서비스 계정 토큰 생성자 역할(
roles/iam.serviceAccountTokenCreator
)을 부여합니다. 그렇지 않으면 기본적으로 이 역할이 부여됩니다.gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com \ --role=roles/iam.serviceAccountTokenCreator
다음 단계
Eventarc의 액세스 제어 옵션 알아보기
워크플로에 Google Cloud 리소스 액세스 권한 부여하기에 대해 알아보기
서비스 계정 사용 권장사항 알아보기
트리거 설명 및 연결된 서비스 계정 확인 방법 알아보기