App Engine 서비스 계정 구성

App Engine 애플리케이션이 다른 Google Cloud 서비스에 액세스하고 태스크를 실행하려면 서비스 계정이 필요합니다.

App Engine에는 두 가지 유형의 서비스 계정이 있고 클라우드 프로젝트의 서비스 계정을 앱 수준 기본값 또는 버전별 서비스 계정으로 작동하도록 할당할 수 있습니다.

  • 앱 수준 기본 서비스 계정 - 이 서비스 계정은 '버전별 서비스 계정'을 구성하지 않을 때 모든 배포된 서비스에 사용됩니다. 만든 서비스 계정을 할당하거나 클라우드 프로젝트에 서비스를 처음 배포할 때 생성되는 자동 생성되는 기본 서비스 계정을 사용하도록 선택할 수 있습니다. 예를 들어 App Engine 기본 서비스 계정(PROJECT_ID@appspot.gserviceaccount.com)이 있습니다.

  • 버전별 서비스 계정: 배포된 서비스의 특정 버전에 대한 ID로 구성된 서비스 계정입니다. 기존 버전 또는 새 버전을 배포할 때 해당 버전의 ID로 작동할 서비스 계정을 지정할 수 있습니다. 예를 들어 앱 수준 기본 서비스 계정과 다른 권한이 버전에 필요하면 해당 버전과 관련된 서비스 계정을 할당할 수 있습니다.

구성된 서비스 계정 보기

현재 앱 수준 기본 서비스 계정을 보려면 gcloud app describe 명령어를 실행합니다.

배포된 버전에 사용되는 서비스 계정을 보려면 다음 안내를 따르세요.

gcloud

gcloud app versions describe 명령어를 실행합니다.

  gcloud app versions describe VERSION_ID --service=SERVICE_NAME

다음과 같이 바꿉니다.

  • VERSION_ID를 버전의 ID로 바꿉니다.
  • SERVICE_NAME를 만든 서비스 이름으로 바꿉니다.

콘솔

  1. 콘솔에서 App Engine 버전 탭으로 이동합니다. 버전으로 이동
  2. App Engine 버전별 서비스 계정의 이메일 주소를 찾습니다. 예: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

앱 수준 기본 서비스 계정 할당

기본적으로 앱 수준 기본 서비스 계정은 자동 생성된 PROJECT_ID@appspot.gserviceaccount.com 서비스 계정입니다. Google Cloud CLI, Google Cloud 콘솔, Admin API를 사용하여 앱 수준 기본 서비스 계정으로 작동하도록 다른 서비스 계정을 할당할 수 있습니다.

앱 생성 중 앱 수준 기본 서비스 계정 지정

초기 App Engine 애플리케이션 만들기 프로세스 중에 만든 서비스 계정을 할당하거나 기본값으로 작동할 자동 생성되는 PROJECT_ID@appspot.gserviceaccount.com 서비스 계정을 사용하도록 선택할 수 있습니다.

App Engine 애플리케이션을 만들고 앱 수준 기본 서비스 계정을 할당하려면 다음 중 하나를 사용할 수 있습니다.

gcloud

gcloud app create 명령어를 실행합니다.

gcloud app create --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

다음과 같이 바꿉니다.

  • SERVICE_ACCOUNT_NAME을 만든 서비스 계정의 이름으로 바꿉니다.
  • PROJECT_ID를 서비스 계정을 할당하려는 Google Cloud 프로젝트의 ID로 바꿉니다.

콘솔

  1. App Engine 페이지로 이동합니다.

    App Engine으로 이동

  2. Google Cloud 프로젝트를 만듭니다.

  3. 앱 만들기 섹션에서 ID 및 API 액세스에서 서비스 계정을 선택합니다.

앱의 앱 수준 기본 서비스 계정 업데이트

애플리케이션의 앱 수준 기본 서비스 계정을 업데이트하려면 다음 중 하나를 사용하여 새 서비스 계정을 할당할 수 있습니다.

gcloud

gcloud app update 명령어를 실행합니다.

    gcloud app update --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

다음과 같이 바꿉니다.

  • SERVICE_ACCOUNT_NAME을 만든 서비스 계정의 이름으로 바꿉니다.
  • PROJECT_ID를 서비스 계정을 할당하려는 Google Cloud 프로젝트의 ID로 바꿉니다.

이후에 배포하는 각 새 버전에는 버전별 서비스 계정을 명시적으로 할당하지 않는 한 새로운 앱 수준 기본 서비스 계정이 사용됩니다.

콘솔

  1. 콘솔에서 App Engine 애플리케이션 설정 탭으로 이동하고 애플리케이션 설정 수정을 클릭합니다.

    애플리케이션 설정으로 이동

  2. 서비스 계정 선택에서 앱 수준 기본 서비스 계정을 선택하고 저장을 클릭합니다.

    업데이트된 앱 수준 기본 서비스 계정의 이메일 주소를 볼 수 있는 애플리케이션 설정 탭으로 리디렉션됩니다. 예를 들면 SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com입니다.

    이후에 배포하는 각 새 버전에는 버전별 서비스 계정을 명시적으로 할당하지 않는 한 새로운 앱 수준 기본 서비스 계정이 사용됩니다.

버전별 서비스 계정으로 배포

새 버전을 배포하는 중에만 버전별 서비스 계정을 설정할 수 있습니다. 버전별 서비스 계정을 사용하면 수행되는 특정 태스크를 기반으로 각 애플리케이션 버전에 다른 권한을 부여하고, 필요한 것 이상의 권한을 부여하지 않도록 할 수 있습니다.

애플리케이션을 배포하려면 먼저 기존 서비스 계정이 있어야 합니다. 버전별 서비스 계정은 애플리케이션을 배포하는 프로젝트와 동일한 프로젝트에 있어야 합니다.

버전별 서비스 계정 설정

gcloud

gcloud app deploy 명령어를 실행합니다.

  gcloud app deploy --service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

다음과 같이 바꿉니다.

  • SERVICE_ACCOUNT_NAME을 만든 서비스 계정의 이름으로 바꿉니다.
  • PROJECT_ID를 서비스 계정을 할당하려는 Google Cloud 프로젝트의 ID로 바꿉니다. 버전별 서비스 계정은 애플리케이션을 배포하는 프로젝트와 동일한 프로젝트에 있어야 합니다.

app.yaml

app.yaml 파일에서 service_account 요소를 추가하여 서비스 계정을 지정합니다.

service_account: SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com

다음과 같이 바꿉니다.

  • SERVICE_ACCOUNT_NAME을 만든 서비스 계정의 이름으로 바꿉니다.
  • PROJECT_ID를 서비스 계정을 할당하려는 Google Cloud 프로젝트의 ID로 바꿉니다. 버전별 서비스 계정은 애플리케이션을 배포하는 프로젝트와 동일한 프로젝트에 있어야 합니다.

App Engine 기본 서비스 계정

App Engine을 사용하면 기본 App Engine 서비스 계정이 자동으로 생성됩니다.

조직 정책 구성에 따라 프로젝트에 대한 편집자 역할이 기본 서비스 계정에 자동으로 부여될 수 있습니다. iam.automaticIamGrantsForDefaultServiceAccounts 조직 정책 제약조건을 적용하여 자동 역할 부여를 중지하는 것이 좋습니다. 2024년 5월 3일 이후에 조직을 만든 경우 기본적으로 이 제약조건이 적용됩니다.

자동 역할 부여를 중지한 경우 기본 서비스 계정에 부여할 역할을 결정한 후 직접 이러한 역할을 부여해야 합니다.

기본 서비스 계정에 이미 편집자 역할이 있으면 편집자 역할을 권한이 더 낮은 역할로 바꾸는 것이 좋습니다. 서비스 계정 역할을 안전하게 수정하려면 정책 시뮬레이터를 사용하여 변경사항의 영향을 확인한 후 적절한 역할을 부여하고 취소합니다.

서비스 계정 및 기타 주 구성원에게 역할을 부여하는 방법을 알아보려면 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

권한 수정, 서비스 계정 삭제 및 복원에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.