서비스 계정

이 페이지에서는 서비스 계정, 서비스 계정 유형, 서비스 계정에서 사용할 수 있는 IAM 역할을 설명합니다.

시작하기 전에

서비스 계정이란 무엇인가요?

서비스 계정은 개별 최종 사용자가 아닌 애플리케이션 또는 가상 머신에 속한 특별한 Google 계정입니다. 애플리케이션은 서비스 계정을 사용하여 서비스의 Google API를 호출하므로 사용자가 직접 관여하지 않습니다.

예를 들어 Compute Engine 가상 머신을 서비스 계정으로 실행할 수 있으며 해당 계정에 필요한 리소스에 대한 액세스 권한을 부여할 수 있습니다. 이렇게 하면 서비스 계정은 서비스의 ID가 되며 서비스 계정의 권한은 서비스가 액세스할 수 있는 리소스를 제어합니다.

서비스 계정은 계정 고유의 이메일 주소로 식별됩니다.

서비스 계정 키

각 서비스 계정은 Google Cloud Platform(GCP)에서 관리하는 키 쌍과 연결됩니다. 이는 GCP에서 서비스 간 인증에 사용됩니다. Google의 키 순환 주기는 대략 1주일입니다.

필요한 경우 GCP 외부에서 사용할 외부 키 쌍을 한 개 이상 만들 수 있습니다(예: 애플리케이션 기본 사용자 인증 정보에 사용). 새로운 키 쌍을 만들면 비공개 키(Google에서 보관하지 않음)를 다운로드하게 됩니다. 외부 키의 경우, 비공개 키의 보안 및 키 순환과 같은 다른 관리 작업의 책임은 사용자에게 있습니다. 외부 키는 IAM API, gcloud 명령줄 도구, Google Cloud Platform 콘솔의 서비스 계정 페이지에서 관리할 수 있습니다. 원활한 키 순환을 위해 서비스 계정당 최대 10개의 서비스 계정 키를 만들 수 있습니다.

서비스 계정 유형

사용자 관리 서비스 계정

GCP 콘솔을 사용하여 새로운 Cloud 프로젝트를 만들 때 프로젝트에 Compute Engine API가 사용 설정된 경우 Compute Engine 서비스 계정이 기본적으로 생성됩니다. 이는 다음 이메일을 사용하여 식별할 수 있습니다.

PROJECT_NUMBER-compute@developer.gserviceaccount.com

프로젝트에 App Engine 애플리케이션이 포함되어 있으면 프로젝트에 기본 App Engine 서비스 계정이 기본적으로 생성됩니다. 이는 다음 이메일을 사용하여 식별할 수 있습니다.

PROJECT_ID@appspot.gserviceaccount.com

프로젝트에서 서비스 계정을 만드는 경우 서비스 계정의 이름을 지정하면 다음과 같은 형식의 이메일이 할당됩니다.

SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

IAM API, GCP 콘솔, gcloud 명령줄 도구를 사용하여 프로젝트당 최대 100개의 서비스 계정(기본 Compute Engine 서비스 계정 및 App Engine 서비스 계정 포함)을 만들 수 있습니다. 이러한 기본 서비스 계정 및 명시적으로 만든 서비스 계정은 사용자 관리 서비스 계정입니다.

Google 관리 서비스 계정

사용자 관리 서비스 계정 외에도 프로젝트의 IAM 정책 또는 GCP 콘솔에 몇 가지 추가 서비스 계정이 나타날 수 있습니다. 이러한 서비스 계정은 Google에서 만들고 소유합니다. 해당 계정은 다른 Google 서비스를 나타내며 각 계정에는 GCP 프로젝트에 액세스할 수 있는 IAM 역할이 자동으로 부여됩니다.

Google API 서비스 계정

Google 관리 서비스 계정의 예는 다음 이메일을 사용하여 확인할 수 있는 Google API 서비스 계정입니다.

PROJECT_NUMBER@cloudservices.gserviceaccount.com

이 서비스 계정은 사용자 대신 내부 Google 프로세스를 실행하도록 특별히 설계된 것으로 GCP 콘솔의 서비스 계정 섹션에는 나타나지 않습니다. 기본적으로 이 계정에는 프로젝트에 대한 프로젝트 편집자 역할이 자동으로 부여되며 계정은 GCP 콘솔의 IAM 섹션에 표시됩니다. 이 서비스 계정은 프로젝트가 삭제될 때만 삭제됩니다. Google 서비스는 프로젝트에 액세스할 수 있는 계정을 사용하므로 프로젝트에 대한 서비스 계정의 역할을 삭제하거나 변경해서는 안 됩니다.

서비스 계정 권한

서비스 계정은 ID일 뿐만 아니라 IAM 정책이 연결된 리소스입니다. 이러한 정책은 서비스 계정 사용 권한을 가진 사용자를 결정합니다.

예를 들어 Alice는 서비스 계정에 대해 편집자 역할을 가질 수 있고 Bob은 서비스 계정에 대해 뷰어 역할을 가질 수 있습니다. 이는 마치 다른 GCP 리소스에 대한 역할을 부여하는 것과 같습니다.

기본 Compute Engine 및 App Engine 서비스 계정이 생성될 때 해당 계정은 프로젝트에 대한 편집자 역할을 부여받으므로 애플리케이션 또는 가상 머신 인스턴스에서 실행되는 코드에는 필요한 권한이 포함되어 있습니다. 이 경우 서비스 계정은 리소스(프로젝트)에 대해 편집자 권한이 부여되는 ID입니다.

자동화가 Cloud Storage 버킷에 액세스할 수 있게 하려면 자동화가 사용하는 서비스 계정에 Cloud Storage 버킷을 읽을 수 있는 권한을 부여합니다. 이 경우 서비스 계정은 다른 리소스(Cloud Storage 버킷)에 대한 권한을 부여받는 ID입니다.

서비스 계정 사용자 역할

프로젝트 수준 또는 서비스 계정 수준에서 프로젝트의 모든 서비스 계정에 대해 iam.serviceAccountUser 역할을 부여할 수 있습니다.

  • 프로젝트에서 iam.serviceAccountUser 역할이 부여된 사용자는 향후 생성될 수 있는 서비스 계정을 비롯한 프로젝트의 모든 서비스 계정에 액세스할 수 있습니다.

  • 특정 서비스 계정에서 iam.serviceAccountUser 역할이 부여된 사용자는 해당 서비스 계정에 액세스할 수 있습니다.

사용자에게 iam.serviceAccountUser 역할과 함께 compute.instanceAdmin 역할을 부여하면 서비스 계정을 사용하는 Compute Engine 인스턴스를 생성하고 관리할 수 있습니다.

서비스 계정에 IAM 역할을 부여하면 하나 이상의 가상 머신 인스턴스에 서비스 계정을 할당할 수 있습니다. 이를 수행하는 자세한 방법은 새로운 인스턴스를 설정하여 서비스 계정으로 실행을 참조하세요.

serviceAccountUsers 역할이 부여된 사용자는 서비스 계정을 사용하여 서비스 계정이 액세스할 수 있는 모든 리소스에 간접적으로 액세스할 수 있습니다. 예를 들어 serviceAccountUser 역할이 부여된 사용자는 서비스 계정을 사용하여 인스턴스를 시작할 수 있습니다. 그런 다음 인스턴스를 사용하여 서비스 계정 ID가 액세스할 수 있는 모든 항목에 액세스할 수 있습니다. 그러나 serviceAccountUser 역할을 통해 서비스 계정의 역할을 직접 사용할 수는 없습니다. 따라서 사용자에게 iam.serviceAccountUser 역할을 부여할 때는 주의하시기 바랍니다.

서비스 계정은 서비스 수준의 보안을 나타냅니다. 서비스의 보안을 결정하는 요인은 서비스 계정을 관리하고 사용하는 IAM 역할이 부여된 사람과 해당 서비스 계정에 대한 비공개 외부 키를 보유한 사람입니다. 보안을 위한 권장사항은 다음과 같습니다.

  • IAM API를 사용하여 서비스 계정, 키, 해당 서비스 계정의 정책을 감사합니다.
  • 서비스 계정에서 필요로 하지 않는 외부 키는 삭제합니다.
  • 사용자에게 서비스 계정을 관리하거나 사용할 권한이 필요하지 않은 경우 IAM 정책에서 해당 권한을 삭제합니다.

권장사항에 대한 자세한 내용은 서비스 계정 이해를 참조하세요.

서비스 계정 토큰 생성자 역할

이 역할은 서비스 계정 명의로 OAuth2 액세스 토큰, blob 서명, JWT 서명을 만듭니다.

서비스 계정 행위자 역할

이 역할은 지원 중단되었습니다. 서비스 계정으로 작업을 실행해야 하는 경우 서비스 계정 사용자 역할을 사용하세요. 서비스 계정 행위자와 동일한 권한을 효과적으로 제공하려면 서비스 계정 토큰 생성자 권한도 부여해야 합니다.

액세스 범위

액세스 범위는 가상 머신에 대한 권한을 지정하는 기존의 방법입니다. 액세스 범위는 IAM 역할이 존재하기 전 서비스 계정에 권한을 부여하는 유일한 메커니즘이었습니다. 이는 현재 권한을 부여하는 주된 방법은 아니지만 서비스 계정으로 인스턴스를 실행하도록 구성하려면 여전히 액세스 범위를 설정해야 합니다. 액세스 범위에 대한 자세한 내용은 Google Compute Engine 문서를 참조하세요.

애플리케이션 기본 사용자 인증 정보

애플리케이션 기본 사용자 인증 정보는 GCP 내부 및 외부와 여러 GCP 프로젝트에 걸쳐 작업을 실행할 때 서비스 계정을 쉽게 사용할 수 있도록 해주는 메커니즘입니다. 가장 일반적인 사용 사례는 로컬 머신에서 코드를 테스트한 후 이를 GCP의 개발 프로젝트로 옮긴 후 다시 프로덕션 프로젝트로 옮기는 것입니다. 애플리케이션 기본 사용자 인증 정보를 사용하면 서비스 계정이 원활히 작동합니다. 즉 로컬 머신에서 테스트할 때는 로컬에 저장된 서비스 계정 키를 사용하지만 Compute Engine에서 실행할 때는 프로젝트의 기본 Compute Engine 서비스 계정을 사용합니다. 자세한 내용은 애플리케이션 기본 사용자 인증 정보를 참조하세요.

다음 단계

서비스 계정 사용에 관한 권장사항은 서비스 계정 이해를 참조하세요.

다음 방법을 알아보려면 해당 가이드를 참조하세요.

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Cloud ID 및 액세스 관리 문서