App Engine에 대한 액세스 권한을 부여하는 역할

사용자 계정 또는 서비스 계정에서 사용할 수 있는 서비스와 작업은 역할에 따라 결정됩니다. App Engine에 대한 액세스 권한을 부여하는 역할 유형은 다음과 같습니다.

  • 기본 역할 - 프로젝트의 모든 서비스와 리소스에 적용되며 여기에는 App Engine이 포함되나 이에 국한되지 않습니다. 예를 들어 편집자 역할이 있는 계정은 App Engine 설정과 Cloud Storage 설정을 변경할 수 있습니다.

  • 사전 정의된 App Engine 역할 - App Engine에 대한 세분화된 액세스 권한을 제공합니다. Cloud 프로젝트의 각 서비스는 자체적인 사전 정의된 역할을 제공합니다. 예를 들어 App Engine 배포자 역할만 있는 계정은 App Engine 앱을 배포할 수 있지만 Cloud Storage에서 객체를 보거나 만들 수 없습니다. 이러한 계정이 Cloud Storage에서 객체를 만들거나 보려면 Cloud Storage의 사전 정의된 특정 역할이 필요합니다.

  • 커스텀 역할 - 지정한 권한 목록에 따라 세분화된 액세스 권한을 제공합니다.

복잡한 요구사항이 적은 소규모 프로젝트를 진행할 때는 기본 역할을 사용할 수 있습니다. 보다 세분화된 액세스 제어가 필요한 경우에는 사전 정의된 역할을 사용합니다.

기본 역할

기본 역할은 프로젝트의 모든 서비스와 리소스에 적용됩니다. 예를 들어 편집자 역할이 있는 계정은 App Engine 설정과 Cloud Storage 설정을 변경할 수 있습니다.

역할 Cloud Console 권한 도구 권한
Owner App Engine 애플리케이션을 만드는 데 필요합니다. 모든 뷰어 및 편집자 권한을 가지며 이외에도 배포된 소스 코드를 확인하고, 사용자를 초대하고, 사용자 역할을 변경하고, 애플리케이션을 삭제할 수 있습니다. 프로젝트의 모든 리소스에 대한 관리 권한을 갖습니다. App Engine 애플리케이션을 만드는 데 필요합니다. 애플리케이션 코드를 배포하고 모든 구성을 업데이트할 수도 있습니다.
Editor 애플리케이션 정보를 확인하고 애플리케이션 설정을 수정합니다. 프로젝트의 모든 리소스에 대한 관리 권한을 갖습니다. 애플리케이션 코드를 배포하고 색인/큐/크론을 업데이트합니다.
Viewer 애플리케이션 정보를 확인합니다. 프로젝트의 모든 리소스에 대한 관리 권한을 갖습니다. 로그를 요청합니다.

사전 정의된 App Engine 역할

역할 이름 설명 권한 최하위 리소스
roles/appengine.appAdmin App Engine 관리자

모든 애플리케이션 구성 및 설정에 대한 읽기/쓰기/수정 액세스

새 버전을 배포하려면 서비스 계정 사용자(roles/iam.serviceAccountUser) 역할도 부여해야 합니다.

gcloud 도구를 사용하여 배포하려면 스토리지 관리자(roles/compute.storageAdmin) 및 Cloud Build 편집자(roles/cloudbuild.builds.editor) 역할을 추가해야 합니다.

  • appengine.applications.get
  • appengine.applications.update
  • appengine.instances.*
  • appengine.operations.*
  • appengine.runtimes.*
  • appengine.services.*
  • appengine.versions.create
  • appengine.versions.delete
  • appengine.versions.get
  • appengine.versions.list
  • appengine.versions.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list
프로젝트
roles/appengine.appCreator App Engine 생성자 프로젝트의 App Engine 리소스를 만들 수 있습니다.
  • appengine.applications.create
  • resourcemanager.projects.get
  • resourcemanager.projects.list
프로젝트
roles/appengine.appViewer App Engine 뷰어 모든 애플리케이션 구성과 설정에 대한 읽기 전용 액세스입니다.
  • appengine.applications.get
  • appengine.instances.get
  • appengine.instances.list
  • appengine.operations.*
  • appengine.services.get
  • appengine.services.list
  • appengine.versions.get
  • appengine.versions.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
프로젝트
roles/appengine.codeViewer App Engine 코드 뷰어 모든 애플리케이션 구성, 설정, 배포된 소스 코드에 대한 읽기 전용 액세스 권한입니다.
  • appengine.applications.get
  • appengine.instances.get
  • appengine.instances.list
  • appengine.operations.*
  • appengine.services.get
  • appengine.services.list
  • appengine.versions.get
  • appengine.versions.getFileContents
  • appengine.versions.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
프로젝트
roles/appengine.deployer App Engine 배포자

모든 애플리케이션 구성과 설정에 대한 읽기 전용 액세스입니다.

새 버전을 배포하려면 서비스 계정 사용자(roles/iam.serviceAccountUser) 역할도 부여해야 합니다.

gcloud 도구를 사용하여 배포하려면 스토리지 관리자(roles/compute.storageAdmin) 및 Cloud Build 편집자(roles/cloudbuild.builds.editor) 역할을 추가해야 합니다.

트래픽을 수신하지 않는 버전을 삭제하는 경우를 제외하고 기존 버전을 수정할 수 없습니다.

  • appengine.applications.get
  • appengine.instances.get
  • appengine.instances.list
  • appengine.operations.*
  • appengine.services.get
  • appengine.services.list
  • appengine.versions.create
  • appengine.versions.delete
  • appengine.versions.get
  • appengine.versions.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list
프로젝트
roles/appengine.serviceAdmin App Engine 서비스 관리자

모든 애플리케이션 구성과 설정에 대한 읽기 전용 액세스입니다.

모듈 수준 및 버전 수준 설정에 대한 쓰기 액세스 권한이 있습니다. 새로운 버전을 배포할 수 없습니다.

  • appengine.applications.get
  • appengine.instances.*
  • appengine.operations.*
  • appengine.services.*
  • appengine.versions.delete
  • appengine.versions.get
  • appengine.versions.list
  • appengine.versions.update
  • resourcemanager.projects.get
  • resourcemanager.projects.list
프로젝트

App Engine의 사전 정의된 역할을 통해 보다 세밀하게 액세스 권한을 제어할 수 있습니다.

이 역할은 App Engine에 대한 액세스 권한만 제공합니다. 프로젝트에 Cloud Storage, Cloud SQL과 같은 다른 서비스가 포함된 경우 다른 서비스에 액세스할 수 있도록 추가 역할을 할당해야 합니다.

사전 정의된 App Engine 역할 비교

다음 표를 통해 사전 정의된 각 App Engine 역할의 기능을 종합적으로 비교할 수 있습니다.

기능 App Engine 관리자 App Engine 서비스 관리자 App Engine 배포자 App Engine 뷰어 App Engine 코드 뷰어
모든 서비스, 버전, 인스턴스 나열 있음 있음 있음 있음 있음
모든 애플리케이션, 서비스, 버전, 인스턴스 설정 보기 있음 있음 있음 있음 있음
리소스 사용량, 부하 정보, 오류 정보 등 런타임 측정항목 보기 있음 있음 있음 있음 있음
앱 소스 코드 보기 없음 없음 없음 없음 있음
앱의 새 버전 배포 있음 없음 예(서비스 계정 사용자 역할도 부여하는 경우) 없음 없음
트래픽 분할 또는 마이그레이션 있음 있음 없음 없음 없음
버전 시작 및 중지 있음 있음 없음 없음 없음
버전 삭제 있음 있음 있음 없음 없음
전체 서비스 삭제 있음 있음 없음 없음 없음
SSH로 가변형 환경의 VM 인스턴스에 연결 있음 없음 없음 없음 없음
인스턴스 종료 있음 없음 없음 없음 없음
App Engine 애플리케이션 사용 중지 및 다시 사용 설정 있음 없음 없음 없음 없음
login:admin 제한이 있는 핸들러 액세스(1세대 런타임만) 있음 없음 없음 없음 없음
디스패치 규칙 업데이트 있음 없음 없음 없음 없음
DoS 설정 업데이트 있음 없음 없음 없음 없음
크론 일정 업데이트 없음 없음 없음 없음 없음
기본 쿠키 만료 업데이트 있음 없음 없음 없음 없음
리퍼러 업데이트 있음 없음 없음 없음 없음
Email API 승인된 발신자 업데이트 있음 없음 없음 없음 없음

역할별로 부여되는 특정 IAM 권한에 대한 자세한 내용은 Admin API의 역할 섹션을 참조하세요.

앱의 새 버전 배포만 담당하는 계정의 경우 다음 역할을 부여하는 것이 좋습니다.

  • App Engine 배포자 역할(roles/appengine.deployer)
  • 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)
    서비스 계정 사용자 역할을 사용하면 배포 과정 중에 계정에서 기본 App Engine 서비스 계정을 가장할 수 있습니다.
  • 계정이 배포에 gcloud 명령어를 사용하는 경우 다음 역할도 추가합니다.

    • 스토리지 관리자(roles/compute.storageAdmin)
    • Cloud Build 편집자(roles/cloudbuild.builds.editor)

App Engine 관리자 역할도 버전을 배포할 수 있지만 추가 관리자 권한이 포함됩니다. 버전을 배포하려면 서비스 계정 사용자 역할도 필요하며 gcloud 명령어를 사용하여 배포하려면 스토리지 관리자 역할과 Cloud Build 편집자 역할도 필요합니다.

필요한 권한을 부여하는 방법에 대한 자세한 내용은 사용자 계정 만들기를 참조하세요.

배포 업무와 트래픽 라우팅 업무 분리

많은 조직에서 애플리케이션 버전을 배포하는 작업과 새로 만든 버전에 유입되는 트래픽을 늘리는 작업을 분리하여 서로 다른 직무에 이러한 작업을 할당하려고 합니다. App Engine 배포자 역할과 App Engine 서비스 관리자 역할을 통해 다음과 같이 업무를 분리할 수 있습니다.

  • App Engine 배포자 및 서비스 계정 사용자 역할 - 계정은 새 버전 배포 및 트래픽을 제공하지 않는 이전 버전 삭제만 수행할 수 있습니다. 이러한 역할이 있는 계정은 원하는 버전으로 트래픽을 구성할 수 없으며 디스패치 규칙 또는 인증 도메인과 같은 애플리케이션 수준 설정도 변경할 수 없습니다.

  • App Engine 서비스 관리자 역할 - 계정은 새 버전의 앱을 배포하거나 애플리케이션 수준 설정을 변경할 수 없습니다. 하지만 이러한 계정에는 트래픽을 제공할 수 있는 버전 변경을 비롯한 기존 서비스와 버전의 속성을 변경할 수 있는 권한이 있습니다. App Engine 서비스 관리자 역할은 새로 배포한 버전으로 유입되는 트래픽을 늘리는 업무를 담당하는 운영/IT 부서에 적합합니다.

사전 정의된 역할 제한사항

사전 정의된 App Engine 역할은 다음 작업에 대한 액세스 권한을 부여하지 않습니다.

  • App Engine 애플리케이션 만들기
  • 애플리케이션 로그를 보고 다운로드
  • Cloud Console에서 Monitoring 차트를 봅니다.
  • 결제 사용 설정 및 사용 중지
  • Cloud Security Scanner에서 보안 스캔 실행
  • Datastore, 태스크 큐, Memcache, Cloud Search, 기타 Cloud Platform 스토리지 제품에 저장된 구성 또는 데이터에 액세스