1. GCP 리소스 계층 구조
리소스 계층 구조는 네 가지 level로 이루어져 있으며, 순서대로 Resource
, Project
, Folder
, Organization Node
로 구성된다.
리소스 계층 구조를 이해하는 것이 중요한 이유는 Google Cloud를 사용할 때 정책을 관리하고 적용하는 방법과 직접적으로 관련되어 있기 때문이다.
리소스 (Resource)
- 가상 머신, Cloud Storage 버킷, BigQuery의 테이블 등 Google Cloud의 다양한 항목들이 해당된다.
프로젝트 (Project)
- GCP 설정을 하는 단계
- API 관리, 결제 사용 설정, 공동작업자 추가 및 제거 등
- 프로젝트
ID
, Name
, Number
의 식별자를 가지며, 각 프로젝트와 리소스는 1:1 관계를 가진다.
ID
: GCP 내에서 전역적으로 고유하며, 변경 불가능
- (추가) 프로젝트를 생성하는 동안 사용자가 직접 지정할 수 있다. 생성된 후에는 변경할 수 없지만 생성 중에는 수정이 가능
Name
: 사용자가 언제든 변경 가능
Number
: 리소스를 추적하기 위해 내부적으로만 사용. 사용자는 몰라도 된다.
폴더 (Folder)
- 폴더는 세 번째 수준으로, 프로젝트를 그룹화하고 리소스에 정책을 할당하는데 사용된다.
- 예를 들면, 부서마다 자체 Google Cloud 리소스가 있을 수 있는데, 폴더를 사용하면 이러한 리소스를 부서별로 그룹화할 수 있다.
- 또한 폴더를 사용하면 팀에 관리 권한을 위임하여 독립적으로 작업하도록 할 수 있다.
- 공통 폴더:
- 다른 폴더도 폴더에 포함 가능하다.
- 폴더의 리소스는 해당 폴더의 정책 및 권한을 상속하기 때문에 한 팀에서 관리하는 2개의 서로 다른 다른 프로젝트가 있는 경우 정책을 공통 폴더에 넣어 프로젝트에 동일한 권한을 갖도록 할 수 있다.
- 팀의 권한이나 정책이 바뀌었을 때, 각 프로젝트별로 일일히 변경하지 않아도 된다.
조직 노드 (Organization Node)
- 최상위 수준으로, 모든 프로젝트, 폴더, 리소스를 포함한다.
2. IAM 정책 (Identity and Access Management)
IAM은 Google Cloud의 접근 및 권한 관리를 위한 도구로, 누가 어느 리소스에서 무엇을 할 수 있는지를 정의한다.
사실 구글 클라우드 뿐만 아니라, 다른 모든 클라우드 인프라에서도 중요한 개념이다.
IAM 정책 구성
- Principle: '누구' 부분에 해당하며, Principle마다 고유 식별자가 있고 보통 이메일 주소이다. 즉, Principle은 Google 계정, Google 그룹, 서비스 계정, 또는 Cloud ID 도메인으로 정의된다.
- Role: '무엇을' 부분에 해당하며, Role은 특정 작업을 수행할 수 있는 권한의 집합이다. Role을 사용하여 사용자 또는 그룹에게 권한을 할당할 수 있다.
IAM 역할
권한을 정확하게 할당하기 위해 커스텀 롤을 사용하는 것이 제일 좋음
- Basic Role: 소유자, 편집자, 뷰어, 결제 관리자 같은 일반적인 권한
- Predefined Role: 특정 Google Cloud 서비스에서 제공되는 사전 정의된 권한
- 예를 들어, Compute Engine의 인스턴스 관리자
- Custom Role: Project 또는 Organization Node 수준에서 사용자가 직접 정의한 권한
- 예를 들어, 특정 프로젝트에서만 사용 가능하도록 역할을 줄 수 있음
- 폴더 수준에서는 적용 불가능
3. Service account
사람이 아닌, VM에 권한을 부여할 때는 Service account
를 만들어 사용한다.
예를 들면, Cloud Storage에 데이터를 저장할 때 특정 VM 위에서 실행 중인 애플리케이션만 액세스하길 원한다면 서비스 계정을 만들어 특정 가상머신을 클라우드 스토리지에 인증시키는 것이다.
- 이메일 주소로 만들 수 있고, 비밀번호 대신 암호화 키를 통해 리소스에 액세스 한다.
- 서비스 계정 자체도 GCP 내에서 리소스이기 때문에, IAM 정책을 가질 수 있다. 즉, 서비스 계정에 대한 권한을 분리해서 유지할 수 있는 것이다.
4. 구글 클라우드를 사용하는 4가지 방법
- Google Cloud 콘솔: GUI를 통해 제공되는 사용자 관리 도구. 브라우저에서 SSH를 통해 인스턴스에 연결할 수 있다.
- Cloud SDK와 Cloud Shell: 리소스 및 애플리케이션을 관리하기 위한 CLI
- 브라우저 기반 CLI
- 클라우드 리소스에 대한 CLI 는 Cloud Shell에서 제공된다.
- APIs: Google API 탐색기를 통해 사용 가능한 API와 버전을 확인할 수 있다.
- Google Cloud 앱: Compute Engine 인스턴스에 SSH로 연결하고 로그를 확인하며, Cloud SQL 인스턴스를 관리할 수 있는 앱을 제공한다. 또한 프로젝트의 결제 정보와 예산을 확인하고 알림을 받을 수 있다.