728x90
Module Introduction
- GCP 리소스를 project로 정리하여 관리한다.
- IAM 으로 누가 뭘 할 수 있는지 정한다.
- least privilege : 작업할 수 있는 최소한의 권한만 주어 실수를 방지한다.
- GCP 관리는 4가지 방법이 있다.
- 웹콘솔
- SDK - command line tools
- APIs
- mobile apps
- 직접 인프라를 구성하면 보안에 모든 부분을 담당해야 한다.
- GCP로 오면 구글이 다 해드립니다. (상단 레이어는 고객이 책임져야함)
- 고객이 책임질 수 있게 IAM같은 정책을 정할 수 있는 툴을 제공해 준다.
The Google Cloud Platform resource hierachy
- 밑에서 부터 살펴보자.
- 모든 GCP 리소스들은 프로젝트 단위로 정리된다.
- 선택적으로 프로젝트들은 폴더로 정리될 수 있다.
- 모든 폴더와 프로젝트들은 Organication 노드에 속해진다.
- 프로젝트, 폴더, 오가니제이션 노드들은 모두 정책이 정의될 수 있다.
- 어떤 GCP 리소스는 리소스 단위로 정책을 정할 수 있다.
- 정책은 아래 방향으로 상속된다.
- 모든 GCP 리소스는 프로젝트에 귀속된다.
- 프로젝트는 GCP 서비스의 기본단위이다.
- 프로젝트들은 개별적으로 생성 관리되고 각각 다른 owner과 user를 가질 수 있다.
- GCP 프로젝트는 name 과 ID를 가진다
- 프로젝트 ID는 바꿀 수 없고 유일해야 한다.
- 프로젝트 ID는 GCP에 어느 작업을 하는지 말해준다.
- name은 알아서 할 수 있다.
- ID는 사람이 읽을 수 있는 형태로 나온다
- 프로젝트 정리는 알아서 해도 된다
- 폴더를 부서별, 앱별 등등 으로 나눌 수 있다.
- 폴더의 리소스들은 IAM 정책을 폴더로 부터 상속받는다. 그래서 예를들어 프로젝트3과 프로젝트4가 같은 팀에 의해 관리된다면 IAM 정책을 폴더B에 대신 설정해줄 수 있다.(각 프로젝트마다 설정하지않고)
- 프로젝트3과 프로젝트4에 개별적으로 중복되는 IAM 정책을 난무하면 프로젝트는 개판될 것이다.
- 아참 그리고 폴더를 사용하려면 최 상단에 organization 노드가 있어야 한다.
- 회사의 모든 프로젝트들을 한눈에 보고싶다구?
- 정책을 중앙집중적으로 관리하고싶다구?
- organization node를 사용해봐~
- 여러 다양한 역할을 배정할 수 있다(정책 바꾸는 역할, 프로젝트 파는 역할 등)
- 오가니제이션 노드를 쓰려면 G Suite가 있거나 Google Cloud Identitiy를 쓰면 된다.
- 아래는 예시
- 리소스는 부모 리소스로 부터 정책을 상속받는다
- 예를들어 organization 레벨에서 정책을 정하면 자동으로 속한 프로젝트들에게도 상속이 된다.
- 상위 레벨에서 적용된 정책은 하위 레벨에서 허용된 접근권한을 뺏을 수 없다.
- 예를들어 Pat에게 write 권한을 줬는데 organization 레벨의 정책이 Pat은 read만 가능하다고 해도 Pat은 여전히 write 할 수 있다.
- 더 관용적인(generous)한 정책이 적용된다.
- Services and APIs are enabled on a per-project basis.
- Google don't manage all sercurity
- if you want to share policy with different projects make folder to less error prone way to set up.
Identity and Access Management (IAM)
- 관리자가 특정 리소스에 대한 행동의 제약을 줄 수 있다.
- 누구에게, 어떤 행동을, 어떤 리소스에 할 것인지 정한다.
- Who : 구글계정이거나 구글 그룹, 서비스 계정, G suite를 포함한다.
- what can do : IAM role(역할)을 뜻한다. IAM role 은 퍼미션의 집합이다.
- role에는 크게 3가지 역할이 있다.
- primitive role에 3가지가 있다
- viewer : 보기만 하고 변경할 순 없다.
- editor : 변경도 가능하다
- owner : 모든걸 변경 가능하고 role 과 permission도 수정 가능하다.
또한 billing 에도 관여한다.
*billing administrator role을 따로 지정해 줄 수 있다.
- 이런 Primitive role은 각각 범위가 크고 단순해서 좀더 정교하게 프로젝트를 관리하려면 predefined roles 를 사용하면 된다.
- 이것에 관해선 다음장에 다룬다.
- predefined role의 경우 서비스 단위별로 미리 정의된 역할을 사용할 수 있다.
- 더 좁게 미니멈하게 퍼미션을 주려면 Custom role을 사용하면 된다.
- cutom role을 쓸 때는 프로젝트 레벨이나 organization level 에서만 사용할 수있다(folder 지원안함)
- service account 는 또한 리소스로 취급되어 IAM policies 를 가질 수 있다.
- If you want to create folders or apply organization-wide policies centrally, you have to make organization node
- Primitive roles -> predefined roles -> custom roles = braodest -> finest
- IAM policies that implemeted hight in the resource hierachy can't take away access grandted in lower level.
Interacting with Google Cloud Platform
- GCP를 4가지 방법으로 사용할 수 있다.
- Console : 콘솔은 웹 기반 관리자 인터페이스이다. 모든 프로젝트 리소스를 보고 관리할 수 있고 GCP 가 제공하는 각종 API들을 찾아보고 disable 할 수도 있다. 그리고 두번째 방법인 cloud shell을 사용 할 수 있게 한다.
- Cloud shell : CLI기반 인터페이스로써 브라우저로 쉽게 사용이 가능하다. 클라우드 쉘을 통하여 구글 클라우드 SDK를 설치 없이 아무데서나 사용할 수 있다.
클라우드 쉘을 사용하는 제일 쉬운 방법은 GCP 콘솔에서 클라우드 쉘을 실행하는 거다.
- 참고로 구글 클라우드 SDK는 gcloud tool(GCP 제품과 서비스들의 주요 CLI) . gsutil(구글클라우드 스토리지와 빅쿼리)
SDK는 도커 이미지로도 제공받을 수 있다.
- RESTful API 를 통해 코드단에서 GCP를 관리할 수 있다. json 형태로 API로 파라미터를 전달하면 access control 이후 리소스에 대한 관리가 가능하다. 대부분 API들은 기본적으로 할당된 제한이 있다. 원한다면 제한을 풀 수 도 있다.
API Explorler를 통해 어떤 API가 있는지 찾아볼 수 있다.
- 만약에 너가 쓰고 싶은 API를 찾았고 이제 막 쓰려고 하는데 처음부터 몽땅 만들지 않아도 된다.
구글은 client library들도 제공하기 때문이다. 갇다써라 - 라이브러리에는 두가지 종류가 있는데
1) Cloud client library : 최신의 권장되는 라이브러리들이다. 각각의 언어에 맞는 스타일로 제공된다.
2) Google API client library : 좀더 제너럴 하고 완성도가 있다. client library에 없는 경우 여기서 찾아봐라 - 비개발직군도 편하게 쓸 수 있는 모바일 앱이 있다.
Cloud Marketplace (formerly Cloud Launcher)
- 최소한의 노력으로 재빠르게 GCP 에 소프트웨어를 배포하고 싶으면 요놈을 쓰는거시다.
- 일일이 software에 대한 configure을 할 필요 없이 바로 deploy 가 가능하다.
- 일반적으로 클라우드 런처로 배포한다고 extra fee 가 드는건 아니지만 상용 라이센스가 있는 프로그램을 쓸 경우 비용이 발생 할 수도 있다.
- 그치만 달달이 얼마 나올지 알려주긴 할껀데 우리도 예상하는거니까 100퍼센트 믿으면 안된다.
- 또 한가지 주의할 점은 GCP는 critical issue 나 취약성에 대한 base images를 업데이트 하는데 너가 이미 deploy 한 소프트웨어의 취약점이나 critical issue 는 너가 직접 관리해야된다.
Demonstration, lab activity, and quiz
- 클라우드 런처(현 마켓플레이스) 로 LAMP 환경을 뚝딱 해보자
- 실습 후딱 조지자
할일 1 : GCP 콘솔에 로그인 하기
할일 2 : 마켓 플레이스에서 LAMP 깔기
묻지도 따지지도 말고 아무것도 건들이지 말고 deploy 한다.
lampstack-1 is being deployed 에서 lampstack-1 has been deployed 로 바뀌면 재빠르게
할일3 : 제대로 deploy 되었는지 확인해보기
//비트나미 디렉토리로 이동
cd /opt/bitnami
//phpinfo.php 파일을 웹 서버 루트로 복사
sudo cp docs/phpinfo.php apache2/htdocs
//창 끄기
exit
실습끝
- policies는 두개의 정책이 겹치면 둘 중 좀더 권한이 많은(generous)한 쪽의 policy 가 적용된다.
- 모든 구글의 리소스들은 프로젝트에 속해있다.
- 서비스 계정은 계정 퍼미션과 다른 리소스의 권한 제약, GCP 서비스 사이의 인증용도로 사용된다.
- GCP 에서 구글은 클라우드 로우 레벨의 보안을 책임지고 윗쪽은 사용자가 책임져야 한다.
- 프로젝트 아이디는 유니크 하면서도 동시에 사용자가 정한 이름을 사용한다.
- folder는 organization node가 있어야만 만들 수 있고 organization node는 하나만 만들 수 있다.
- primitive 와 predefined의 차이는 primitive 는 프로젝트 전체이지만 predefined 는 리소스 서비스 (예를 들어 compute engine)처럼 특정 리소스에 대한 미리 정의된 role을 말한다.
- 클라우드 마켓플레이스는 상용 소프트웨어 사용시 돈 더내야된다.
728x90
'Cloud > Google Cloud Platform' 카테고리의 다른 글
GCP Fundamentals #6 - Storage in the Cloud (0) | 2020.05.21 |
---|---|
GCP Fundamentals #5 - Containers in the Cloud (0) | 2020.05.21 |
GCP Fundamentals #4 - Storage in the Cloud (0) | 2020.05.12 |
GCP Fundamentals #3 - Virtual Machines in the Cloud (0) | 2020.05.01 |
GCP Fundamentals #1 - Introducing GCP (0) | 2020.04.24 |
댓글