서비스 계정은 다음 카테고리로 분류할 수 있습니다.
- 사용자가 직접 만들고 관리하는 사용자 관리 서비스 계정
- Google Cloud에서 만들고 관리하는 서비스 에이전트
이 페이지에서는 각 서비스 계정 유형이 생성되고 사용되는 방식을 설명합니다.
사용자 관리형 서비스 계정
사용자 관리형 서비스 계정은 프로젝트에서 만드는 서비스 계정입니다. 이러한 서비스 계정은 원하는 대로 업데이트, 사용 중지, 사용 설정, 삭제할 수 있습니다. 이러한 서비스 계정에 대한 다른 주 구성원의 액세스 권한도 관리할 수 있습니다.
IAM API, Google Cloud 콘솔, Google Cloud CLI를 사용하여 프로젝트에서 사용자 관리형 서비스 계정을 만들 수 있습니다.
기본적으로 프로젝트에서 최대 100개의 사용자 관리형 서비스 계정을 만들 수 있습니다. 이 할당량이 요구사항을 충족하지 않으면 Google Cloud 콘솔을 사용하여 할당량 증가를 요청할 수 있습니다. 사용자가 만든 서비스 계정만 이 할당량에 반영됩니다. 기본 서비스 계정과 서비스 에이전트는 할당량에 반영되지 않습니다.
프로젝트에서 사용자 관리 서비스 계정을 만들 때 서비스 계정의 이름을 선택합니다. 이 이름은 서비스 계정을 식별하는 이메일 주소에 표시되며 다음 형식을 사용합니다.
service-account-name@project-id.iam.gserviceaccount.com
서비스 계정을 만드는 방법을 알아보려면 서비스 계정 만들기를 참조하세요.
기본 서비스 계정
기본 서비스 계정은 특정 Google Cloud 서비스를 사용 설정하거나 사용할 때 자동으로 생성되는 사용자 관리형 서비스 계정입니다. 이러한 서비스 계정을 사용하면 서비스가 다른 Google Cloud 리소스에 액세스하는 작업을 배포할 수 있습니다. 기본 서비스 계정이 생성된 후에는 이를 관리해야 합니다.
애플리케이션이 기본 서비스 계정이 있는 Google Cloud 환경에서 실행되는 경우 애플리케이션은 기본 서비스 계정의 사용자 인증 정보를 사용하여 Google Cloud API를 호출할 수 있습니다. 또는 자체 사용자 관리형 서비스 계정을 만들어 인증에 사용할 수 있습니다. 자세한 내용은 애플리케이션 기본 사용자 인증 정보 설정을 참고하세요.
조직 정책 구성에 따라 프로젝트에 대한 편집자 역할이 기본 서비스 계정에 자동으로 부여될 수 있습니다. iam.automaticIamGrantsForDefaultServiceAccounts
조직 정책 제약조건을 적용하여 자동 역할 부여를 중지하는 것이 좋습니다. 2024년 5월 3일 이후에 조직을 만든 경우 기본적으로 이 제약조건이 적용됩니다.
자동 역할 부여를 중지한 경우 기본 서비스 계정에 부여할 역할을 결정한 후 직접 이러한 역할을 부여해야 합니다.
기본 서비스 계정에 이미 편집자 역할이 있으면 편집자 역할을 권한이 더 낮은 역할로 바꾸는 것이 좋습니다. 서비스 계정 역할을 안전하게 수정하려면 정책 시뮬레이터를 사용하여 변경사항의 영향을 확인한 후 적절한 역할을 부여하고 취소합니다.
다음 표에는 기본 서비스 계정을 만드는 서비스가 나와 있습니다.
서비스 | 서비스 계정 이름 | 이메일 주소 |
---|---|---|
App Engine 및 App Engine을 사용하는 모든 Google Cloud 서비스 | App Engine 기본 서비스 계정 | project-id@appspot.gserviceaccount.com |
Compute Engine 및 Compute Engine을 사용하는 모든 Google Cloud 서비스 | Compute Engine 기본 서비스 계정 |
project-number-compute@developer.gserviceaccount.com
|
서비스 에이전트
일부 Google Cloud 서비스는 사용자를 대신하여 작업을 실행할 수 있도록 리소스에 대한 액세스 권한이 필요합니다. 예를 들어 Cloud Run을 사용하여 컨테이너를 실행할 때 서비스는 컨테이너를 트리거할 수 있는 모든 Pub/Sub 주제에 액세스할 수 있어야 합니다.
이러한 요구사항을 충족하기 위해 Google Cloud는 많은 Google Cloud 서비스의 서비스 계정을 만들고 관리합니다. 이러한 서비스 계정을 서비스 에이전트라고 합니다. 프로젝트의 허용 정책, 감사 로그, Google Cloud 콘솔의 IAM 페이지에 서비스 에이전트가 표시될 수 있습니다.
서비스 에이전트는 프로젝트에 생성되지 않으므로 프로젝트의 서비스 계정을 볼 때 표시되지 않습니다. 직접 액세스할 수는 없습니다.
기본적으로 서비스 에이전트는 프로젝트에 대한 역할을 부여받았더라도 Google Cloud 콘솔의 IAM 페이지에 나열되지 않습니다. 서비스 에이전트의 역할 부여를 보려면 Google 제공 역할 부여 포함 체크박스를 선택합니다.
Google Cloud에는 다음과 같은 유형의 서비스 에이전트가 있습니다.
서비스별 서비스 에이전트
대부분의 서비스 에이전트는 개별 서비스를 대신하는 서비스별 에이전트입니다. 대부분의 경우 서비스가 제대로 작동하려면 이러한 서비스 에이전트가 필요합니다. 예를 들어 서비스 에이전트는 Cloud Logging 싱크가 Cloud Storage 버킷에 로그를 쓸 수 있도록 허용합니다.
각 서비스 에이전트는 리소스와 연결됩니다. 이 리소스는 일반적으로 프로젝트, 폴더 또는 조직이지만 서비스별 리소스(예: Cloud SQL 인스턴스)일 수도 있습니다. 이 리소스는 서비스 에이전트 작업의 범위를 정의합니다. 예를 들어 서비스 에이전트가 프로젝트와 연결된 경우 프로젝트 및 하위 리소스의 서비스를 대신합니다.
서비스 에이전트의 이메일 주소를 확인하여 서비스 에이전트가 연결된 리소스 유형을 확인할 수 있습니다.
- 서비스 에이전트가 프로젝트, 폴더 또는 조직과 연결된 경우 이메일 주소에 해당 프로젝트, 폴더 또는 조직의 숫자 ID가 포함됩니다.
- 서비스 에이전트가 서비스별 리소스와 연결된 경우 이메일 주소에 숫자 프로젝트 ID와 고유 식별자가 포함됩니다. 숫자 프로젝트 ID는 서비스 에이전트가 연결된 리소스를 소유한 프로젝트를 나타냅니다. 고유 식별자는 서비스 에이전트를 동일한 프로젝트의 다른 유사한 서비스 에이전트와 구별합니다.
Google API 서비스 에이전트
프로젝트의 허용 정책은 project-number@cloudservices.gserviceaccount.com
형식을 사용하는 이메일 주소와 함께 Google API 서비스 에이전트라는 서비스 계정을 참조할 가능성이 높습니다.
이 서비스 계정은 사용자 대신 내부 Google Cloud 프로세스를 실행합니다.
여기에는 프로젝트에 대한 편집자 역할(roles/editor
)이 자동으로 부여됩니다.
서비스 에이전트의 역할 관리자
IAM의 감사 로그는 서비스 계정 service-agent-manager@system.gserviceaccount.com
을 참조할 수 있습니다.
이 서비스 계정은 다른 서비스 에이전트에 부여된 역할을 관리합니다. 감사 로그에서만 볼 수 있습니다.
예를 들어 새 API를 사용하는 경우 Google Cloud에서 자동으로 새 서비스 에이전트를 만들고 프로젝트에 대한 역할을 부여할 수 있습니다. 이러한 역할을 부여하면 service-agent-manager@system.gserviceaccount.com
이 프로젝트의 허용 정책을 설정했음을 나타내는 감사 로그 항목이 생성됩니다.
서비스 에이전트 만들기
서비스 에이전트가 생성되는 정확한 시간은 연결된 리소스 유형에 따라 다릅니다.
서비스별 리소스와 연결된 서비스 에이전트는 리소스를 만들 때 생성됩니다. 이러한 서비스 에이전트를 식별하고 구성하는 방법에 관한 자세한 내용은 관련 리소스에 대한 문서를 참조하세요.
프로젝트, 폴더, 조직과 연결된 서비스 에이전트는 필요에 따라(일반적으로 서비스를 처음 사용할 때) 생성됩니다. 필요한 경우 서비스를 사용하기 전에 Google Cloud에 서비스에 대한 서비스 에이전트를 만들도록 요청할 수도 있습니다. 자세한 내용은 서비스 에이전트 만들기 및 역할 부여를 참고하세요.
서비스 에이전트 역할
Google Cloud에는 서비스 에이전트가 사용자를 대신하여 리소스를 만들고 액세스해야 하는 작업이 있습니다. 예를 들어 Dataproc 클러스터를 만들 때 Dataproc 서비스 에이전트가 클러스터를 만들려면 프로젝트에서 Compute Engine 인스턴스를 만들 권한이 필요합니다.
이 액세스 권한을 얻으려면 서비스 에이전트에게 특정 IAM 역할이 필요합니다. 많은 프로젝트 수준 서비스 에이전트에는 필요한 역할이 자동으로 부여됩니다.
자동으로 부여되는 역할의 이름은 일반적으로 serviceAgent
또는 ServiceAgent
로 끝납니다. 다른 서비스 에이전트의 경우 서비스가 올바르게 작동하도록 역할을 부여해야 합니다. 자동으로 역할이 부여되는 서비스 에이전트를 확인하려면 서비스 에이전트 참조를 참고하세요.
서비스를 사용하기 전에 Google Cloud에 서비스 에이전트를 만들도록 요청하는 경우 일반적으로 자동으로 부여되는 역할을 서비스 에이전트에 부여해야 합니다. 사용자 요청으로 생성된 서비스 에이전트에 권한이 자동으로 부여되지 않기 때문입니다. 서비스 에이전트에 이러한 역할을 부여하지 않으면 일부 서비스가 제대로 작동하지 않을 수 있습니다. 서비스 에이전트에 이러한 역할을 부여하는 방법을 알아보려면 서비스 에이전트 만들기 및 역할 부여를 참고하세요.
기본 서비스 에이전트
서비스 에이전트 참조에서 일부 서비스 에이전트는 기본 서비스 에이전트로 식별됩니다. 기본 서비스 에이전트는 사용자가 서비스에 대해 서비스 에이전트 만들기를 트리거할 때 이메일 주소가 반환되는 서비스 에이전트입니다.
감사 로깅
주 구성원이 작업을 시작하면 서비스 에이전트가 주 구성원을 대신하여 작업을 실행하는 경우가 있습니다. 하지만 서비스 에이전트의 감사 로그를 검토할 때는 서비스 에이전트가 누구를 대신하여 어떤 이유로 작업을 실행했는지 파악하기 어려울 수 있습니다.
서비스 에이전트 작업 컨텍스트를 이해하는 데 도움이 되도록 일부 서비스 에이전트는 감사 로그에 작업과 연결된 작업 및 작업을 만든 주 구성원과 같은 추가 세부정보를 포함합니다.다음 서비스 에이전트는 감사 로그에 다음과 같은 추가 세부정보를 포함합니다.
이러한 추가 세부정보는 authenticationInfo
필드에 중첩된 감사 로그의 serviceDelegationHistory
필드에 있습니다. 이 필드에는 다음과 같은 정보가 포함됩니다.
- 작업을 만든 원래 주 구성원
- 작업을 실행한 서비스 에이전트
- 서비스 에이전트가 속한 서비스
- 작업 ID
예를 들어 example-user@example.com
에서 BigQuery Connection API를 사용하여 작업을 만든다고 가정해 보겠습니다.
이 작업을 실행하려면 BigQuery Connection API의 서비스 에이전트 중 하나가 필요합니다. 이 경우 서비스 에이전트 작업에 대한 감사 로그에 다음과 유사한 serviceDelegationHistory
필드가 포함됩니다.
{ "protoPayload": { "@type": "type.googleapis.com/google.cloud.audit.AuditLog", "authenticationInfo": { "principalEmail": "bqcx-442188550395-jujw@gcp-sa-bigquery-condel.iam.gserviceaccount.com", "serviceDelegationHistory": { "originalPrincipal": "user:my-user@example.com", "serviceMetadata": [ { "principalSubject": "serviceAccount:bqcx-442188550395-jujw@gcp-sa-bigquery-condel.iam.gserviceaccount.com", "serviceDomain": "bigquery.googleapis.com", } ] } } } }
다음 단계
- 서비스 계정 만들기 및 관리 방법 알아보기
- 서비스 계정 키 만들기 및 관리 방법 알아보기
- 서비스 계정 작업 권장사항 알아보기
- 서비스 계정 키 관리 권장사항 검토
직접 사용해 보기
Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
무료로 시작하기