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

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

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

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

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

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

기본 역할

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

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

사전 정의된 App Engine 역할

Role Permissions

(roles/appengine.appAdmin)

Read/Write/Modify access to all application configuration and settings.

To deploy new versions, a principal must have the Service Account User (roles/iam.serviceAccountUser) role on the assigned App Engine service account, and the Cloud Build Editor (roles/cloudbuild.builds.editor), and Cloud Storage Object Admin (roles/storage.objectAdmin) roles on the project.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.applications.update

appengine.instances.*

  • appengine.instances.delete
  • appengine.instances.enableDebug
  • appengine.instances.get
  • appengine.instances.list

appengine.memcache.addKey

appengine.memcache.flush

appengine.memcache.get

appengine.memcache.update

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.runtimes.actAsAdmin

appengine.services.*

  • appengine.services.delete
  • appengine.services.get
  • appengine.services.list
  • appengine.services.update

appengine.versions.create

appengine.versions.delete

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.projectsettings.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.appCreator)

Ability to create the App Engine resource for the project.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.create

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.appViewer)

Read-only access to all application configuration and settings.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.list

artifactregistry.projectsettings.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.codeViewer)

Read-only access to all application configuration, settings, and deployed source code.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.getFileContents

appengine.versions.list

artifactregistry.projectsettings.get

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.debugger)

Ability to read or manage v2 instances.

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.*

  • appengine.instances.delete
  • appengine.instances.enableDebug
  • appengine.instances.get
  • appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.get

appengine.versions.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.deployer)

Read-only access to all application configuration and settings.

To deploy new versions, you must also have the Service Account User (roles/iam.serviceAccountUser) role on the assigned App Engine service account, and the Cloud Build Editor (roles/cloudbuild.builds.editor), and Cloud Storage Object Admin (roles/storage.objectAdmin) roles on the project.

Cannot modify existing versions other than deleting versions that are not receiving traffic.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.get

appengine.services.list

appengine.versions.create

appengine.versions.delete

appengine.versions.get

appengine.versions.list

artifactregistry.projectsettings.get

artifactregistry.repositories.deleteArtifacts

artifactregistry.repositories.downloadArtifacts

artifactregistry.repositories.uploadArtifacts

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.memcacheDataAdmin)

Can get, set, delete, and flush App Engine Memcache items.

appengine.applications.get

appengine.memcache.addKey

appengine.memcache.flush

appengine.memcache.get

appengine.memcache.update

resourcemanager.projects.get

resourcemanager.projects.list

(roles/appengine.serviceAdmin)

Read-only access to all application configuration and settings.

Write access to module-level and version-level settings. Cannot deploy a new version.

Lowest-level resources where you can grant this role:

  • Project

appengine.applications.get

appengine.applications.listRuntimes

appengine.instances.delete

appengine.instances.get

appengine.instances.list

appengine.operations.*

  • appengine.operations.get
  • appengine.operations.list

appengine.services.*

  • appengine.services.delete
  • appengine.services.get
  • appengine.services.list
  • appengine.services.update

appengine.versions.delete

appengine.versions.get

appengine.versions.list

appengine.versions.update

artifactregistry.projectsettings.get

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/storage.objectAdmin)
    • Cloud Build 편집자(roles/cloudbuild.builds.editor)

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

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

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

  • App Engine 배포자 및 서비스 계정 사용자 역할 - 계정은 새 버전 배포 및 트래픽을 제공하지 않는 이전 버전 삭제만 수행할 수 있습니다. 이러한 역할이 있는 계정은 원하는 버전으로 트래픽을 구성할 수 없으며 디스패치 규칙 또는 인증 도메인과 같은 애플리케이션 수준 설정도 변경할 수 없습니다.
  • App Engine 서비스 관리자 역할 - 계정은 새 버전의 앱을 배포하거나 애플리케이션 수준 설정을 변경할 수 없습니다. 하지만 이러한 계정에는 트래픽을 제공할 수 있는 버전 변경을 비롯한 기존 서비스와 버전의 속성을 변경할 수 있는 권한이 있습니다. App Engine 서비스 관리자 역할은 새로 배포한 버전으로 유입되는 트래픽을 늘리는 업무를 담당하는 운영/IT 부서에 적합합니다.

사전 정의된 역할 제한사항

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

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