액세스 제어

GCP 프로젝트 수준에서 역할을 사용하여 액세스 제어를 설정할 수 있습니다. GCP 프로젝트 구성원 또는 서비스 계정에 역할을 할당하여 Google Cloud Platform 프로젝트 및 해당 리소스에 대한 액세스 수준을 결정합니다.

복잡한 요구가 적은 소규모 프로젝트를 진행할 때는 기본 역할을 사용할 수 있습니다. 보다 세분화된 액세스 제어가 필요하다면 App Engine의 사전 정의된 역할을 포함하는 IAM(ID 및 액세스 관리) 역할을 사용하면 됩니다. IAM에 대한 자세한 내용은 IAM 문서를 참조하세요.

역할을 할당하는 방법에 대한 자세한 내용은 프로젝트 액세스 권한 부여를 참조하세요.

사전 정의된 IAM 역할에 부여되는 권한부터 메서드 호출 수준까지 자세한 내용은 Admin API 문서의 역할을 참조하세요.

기본 역할

App Engine 애플리케이션의 경우 GCP 프로젝트 구성원의 역할은 애플리케이션 배포 및 관리에 사용되는 명령줄 도구에서 허용되는 작업도 제어합니다.

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

사전 정의된 App Engine 역할

App Engine의 사전 정의된 역할을 통해 보다 세밀하게 액세스를 제어할 수 있습니다. 다음 테이블에 각 역할과 대상 사용자가 나와 있습니다. 비교 테이블에서 모든 역할 기능을 확인할 수 있습니다.

역할 기능 대상 사용자
App Engine 관리자 모든 애플리케이션 구성 및 설정에 대한 읽기/쓰기/수정 액세스
  • 애플리케이션 소유자/관리자
  • 긴급 대기 엔지니어
  • 시스템 관리자
App Engine 서비스 관리자
  • 모든 애플리케이션 구성과 설정에 대한 읽기 전용 액세스
  • 트래픽 구성을 포함한 서비스 수준 및 버전 수준 설정에 대한 쓰기 액세스입니다.
  • 앱 버전 배포는 불가능. 자세한 내용은 아래의 업무 분리를 참조하세요.
  • 출시 엔지니어
  • DevOps
  • 긴급 대기 엔지니어
  • 시스템 관리자
App Engine 배포자
  • 모든 애플리케이션 구성과 설정에 대한 읽기 전용 액세스
  • 새 버전의 배포 및 생성만을 위한 쓰기 액세스입니다.
  • 트래픽을 제공하지 않는 이전 버전을 삭제합니다.
  • 기존 버전을 수정하거나 트래픽 구성을 변경할 수 없음

필요한 역할에 대한 자세한 내용은 아래의 배포 섹션을 참조하세요.

  • 배포 계정
  • 출시 엔지니어
App Engine 뷰어 모든 애플리케이션 구성과 설정에 대한 읽기 전용 액세스
  • 애플리케이션을 확인해야 하지만 수정할 필요는 없는 사용자
  • App Engine 구성의 정책 준수를 확인하는 감사 직책
App Engine 코드 뷰어 모든 애플리케이션 구성, 설정, 배포된 소스 코드에 대한 읽기 전용 액세스입니다.
  • 애플리케이션 및 소스 코드를 확인해야 하지만 수정할 필요는 없는 사용자
  • 프로덕션 문제를 진단해야 하는 DevOps 사용자

사전 정의된 역할 비교 테이블

다음 테이블에서 사전 정의된 각 App Engine 역할의 기능을 모두 비교할 수 있습니다.

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

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

사전 정의된 역할을 사용한 배포

앱의 새 버전 배포만 담당하는 사용자 계정에는 App Engine 배포자 역할이 권장됩니다. App Engine 관리자 역할을 대신 지정할 수 있으며, 이 역할에는 여러 버전을 배포하는 기능을 비롯하여 추가적인 관리자 권한이 포함됩니다.

사용자 계정에 두 역할 중 하나를 지정하면 Admin API로 앱을 배포하는 데 충분한 권한이 부여됩니다. gcloud 명령어 또는 기타 App Engine 도구를 사용할 수 있는 권한을 부여하려면 사용자 계정에 스토리지 관리자 역할 및 Cloud Build 편집자 역할도 부여해야 합니다.

필요한 권한을 부여하는 방법에 대한 자세한 내용은 IAM 역할을 사용한 배포를 참조하세요.

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

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

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

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

사전 정의된 역할로 부여되지 않는 권한

위에 나열된 사전 정의된 역할 중 어느 것도 다음과 같은 액세스 권한을 부여하지 않습니다.

  • App Engine 애플리케이션 만들기
  • 애플리케이션 로그를 보고 다운로드
  • GCP Console에서 Monitoring 차트 확인
  • 결제 사용 설정 및 사용 중지
  • App Engine의 일일 지출 한도(이전의 예산) 설정 및 지출 금액(달러) 확인
  • Cloud Security Scanner에서 보안 스캔 실행
  • Datastore, 태스크 큐, Memcache, Cloud Search, 기타 Cloud Platform 스토리지 제품에 저장된 구성 또는 데이터에 액세스

App Engine의 서비스 계정

App Engine 애플리케이션을 만들면 App Engine 기본 서비스 계정이 생성되어 App Engine 서비스의 ID로 사용됩니다. App Engine 기본 서비스 계정은 GCP 프로젝트에 연결되어 App Engine에서 실행되는 앱 대신 태스크를 실행합니다.

기본적으로 App Engine 기본 서비스 계정은 프로젝트에서 편집자 역할을 갖습니다. 즉, GCP 프로젝트의 변경사항을 배포하기에 충분한 권한을 보유한 사용자 계정에서 해당 프로젝트 내 모든 리소스에 대한 읽기/쓰기 액세스 권한으로 코드를 실행할 수도 있습니다.

가변형 환경의 서비스 계정

App Engine 가변형 환경에는 앱 대신 가변형 환경 관련 태스크를 실행하는 Google 관리형 서비스 계정도 있습니다. 이 서비스 계정에 대한 자세한 내용은 App Engine 가변형 환경의 서비스 계정을 참조하세요.

서비스 계정 권한 변경

GCP Console에서 서비스 계정 권한을 변경할 수 있습니다. 예를 들어 편집자 역할을 App Engine 애플리케이션의 액세스 권한 요구에 가장 부합하는 역할로 변경하면 App Engine 기본 서비스 계정에서 사용되는 권한을 다운그레이드할 수 있습니다.

서비스 계정의 권한을 변경하려면 다음 안내를 따르세요.

  1. GCP Console을 엽니다.

    권한 페이지로 이동

  2. 구성원 목록에서 App Engine 기본 서비스 계정의 ID를 찾습니다.

    App Engine 기본 서비스 계정은 다음과 같은 구성원 ID를 사용합니다.
    YOUR_PROJECT_ID@appspot.gserviceaccount.com

  3. 그런 다음 드롭다운 메뉴를 사용하여 서비스 계정에 할당된 역할을 수정할 수 있습니다.

서비스 계정 사용

  • App Engine 앱 기본 서비스 계정을 비롯한 서비스 계정의 키 이름을 바꾸거나 키를 만들려면 GCP Console의 서비스 계정 페이지에서 서비스 계정을 확인하고 수정합니다.

    서비스 계정 페이지로 이동

  • 서비스 계정을 사용하여 Cloud SDK 개발 도구를 비롯한 Cloud SDK 명령어를 실행하려면 먼저 Google Cloud Platform 프로젝트에서 Google App Engine Admin API를 사용 설정해야 합니다. GCP Console에서 API 라이브러리를 사용하여 GCP 프로젝트의 모든 API 및 서비스를 관리할 수 있습니다.

    API 라이브러리 페이지로 이동

삭제된 기본 서비스 계정 복원

App Engine 기본 서비스 계정을 삭제하면 App Engine 애플리케이션이 정상적으로 작동하지 않고 Cloud Datastore를 비롯한 다른 GCP 서비스에 대한 액세스 권한을 잃게 될 수도 있습니다.

다음과 같이 gcloud beta app repair 명령어를 사용하여 삭제된 App Engine 기본 서비스 계정을 복원할 수 있습니다.

# Set your gcloud project
gcloud config set project <project-id>

# Restore your default service account
gcloud beta app repair
이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

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

Java 문서용 App Engine 가변형 환경