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
를 만든 서비스 이름으로 바꿉니다.
콘솔
- 콘솔에서 App Engine 버전 탭으로 이동합니다. 버전으로 이동
- 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로 바꿉니다.
콘솔
App Engine 페이지로 이동합니다.
Google Cloud 프로젝트를 만듭니다.
앱 만들기 섹션에서 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로 바꿉니다.
이후에 배포하는 각 새 버전에는 버전별 서비스 계정을 명시적으로 할당하지 않는 한 새로운 앱 수준 기본 서비스 계정이 사용됩니다.
콘솔
콘솔에서 App Engine 애플리케이션 설정 탭으로 이동하고 애플리케이션 설정 수정을 클릭합니다.
서비스 계정 선택에서 앱 수준 기본 서비스 계정을 선택하고 저장을 클릭합니다.
업데이트된 앱 수준 기본 서비스 계정의 이메일 주소를 볼 수 있는 애플리케이션 설정 탭으로 리디렉션됩니다. 예를 들면
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로 바꿉니다.
appengine-web.xml
자바 런타임을 사용하고 App Engine 기존 번들 서비스를 포함하는 경우 appengine-web.xml
파일의 <service-account>
요소를 추가하여 서비스 계정을 지정합니다.
<service-account>SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com</service-account>
다음과 같이 바꿉니다.
SERVICE_ACCOUNT_NAME
을 만든 서비스 계정의 이름으로 바꿉니다.PROJECT_ID
를 서비스 계정을 할당하려는 Google Cloud 프로젝트의 ID로 바꿉니다.
App Engine 기본 서비스 계정
기본적으로 자동 생성된 PROJECT_ID@appspot.gserviceaccount.com
서비스 계정에는 해당 프로젝트의 편집자 역할이 부여됩니다.
자동 생성되는 PROJECT_ID@appspot.gserviceaccount.com
서비스 계정을 사용하여 App Engine 앱을 배포할 경우 앱이 해당 프로젝트의 모든 리소스에 액세스할 수 있습니다.
자동 생성되는 PROJECT_ID@appspot.gserviceaccount.com
서비스 계정의 경우 기본 편집자 역할이 자동으로 부여되지 않도록 방지하기 위해 조직 정책 제약조건을 사용할 경우에는 역할을 수동으로 업데이트해야 합니다. App Engine 기본 서비스 계정에 부여하는 역할은 앱이 필요한 리소스에 액세스할 수 있도록 해야 합니다. 서비스 계정 및 기타 주 구성원에 역할을 부여하는 방법을 알아보려면 서비스 계정 액세스 관리를 참조하세요.
권한 수정, 서비스 계정 삭제 및 복원에 대한 자세한 내용은 서비스 계정 만들기 및 관리를 참조하세요.