본문 바로가기
Cloud/Google Cloud Platform

GCP Fundamentals #2 - Getting Started with GCP

by HaningYa 2020. 4. 29.
728x90

 

[코스정보]

 

 

Cloud Engineering with Google Cloud 전문 자격증 | Coursera

Learn Cloud Engineering with Google Cloud 전문 자격증 from Google 클라우드. This program provides the skills you need to advance your career as a cloud engineer and recommends training to support your preparation for the industry-recognized Google Cloud ...

www.coursera.org


Module Introduction

  • GCP 리소스를 project로 정리하여 관리한다.
  • IAM 으로 누가 뭘 할 수 있는지 정한다.
  • least privilege : 작업할 수 있는 최소한의 권한만 주어 실수를 방지한다.
  • GCP 관리는 4가지 방법이 있다.
    1. 웹콘솔
    2. SDK - command line tools
    3. APIs
    4. 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 역할

  • 회사의 모든 프로젝트들을 한눈에 보고싶다구? 
  • 정책을 중앙집중적으로 관리하고싶다구?
  • organization node를 사용해봐~
  • 여러 다양한 역할을 배정할 수 있다(정책 바꾸는 역할, 프로젝트 파는 역할 등)
  • 오가니제이션 노드를 쓰려면 G Suite가 있거나 Google Cloud Identitiy를 쓰면 된다.
  • 아래는 예시

Organization 예시

  • 리소스는 부모 리소스로 부터 정책을 상속받는다
  • 예를들어 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)

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 


  • 이런 Primitive role은 각각 범위가 크고 단순해서 좀더 정교하게 프로젝트를 관리하려면 predefined roles 를 사용하면 된다.
  • 이것에 관해선 다음장에 다룬다.

role 종류

  • 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

 

4가지 방법으로 GCP를 사용할 수 있다.

 

  • GCP를 4가지 방법으로 사용할 수 있다.
  • Console : 콘솔은 웹 기반 관리자 인터페이스이다. 모든 프로젝트 리소스를 보고 관리할 수 있고 GCP 가 제공하는 각종 API들을 찾아보고 disable 할 수도 있다. 그리고 두번째 방법인 cloud shell을 사용 할 수 있게 한다.
  • Cloud shell : CLI기반 인터페이스로써 브라우저로 쉽게 사용이 가능하다. 클라우드 쉘을 통하여 구글 클라우드 SDK를 설치 없이 아무데서나 사용할 수 있다. 
    클라우드 쉘을 사용하는 제일 쉬운 방법은 GCP 콘솔에서 클라우드 쉘을 실행하는 거다.

구글 클라우드 SDK

  • 참고로 구글 클라우드 SDK는 gcloud tool(GCP 제품과 서비스들의 주요 CLI) . gsutil(구글클라우드 스토리지와 빅쿼리)
    SDK는 도커 이미지로도 제공받을 수 있다.

RESTful APIs 를 사용한 접근

  • RESTful API 를 통해 코드단에서 GCP를 관리할 수 있다. json 형태로 API로 파라미터를 전달하면 access control 이후 리소스에 대한 관리가 가능하다. 대부분 API들은 기본적으로 할당된 제한이 있다. 원한다면 제한을 풀 수 도 있다.
    API Explorler를 통해 어떤 API가 있는지 찾아볼 수 있다.

[Api explorer]

 

Google APIs Explorer  |  Google Developers

The Google APIs Explorer is is a tool that helps you explore various Google APIs interactively.

developers.google.com

 


구글 클라우드 라이브러리

  • 만약에 너가 쓰고 싶은 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 를 만들어 보자

  • 클라우드 런처(현 마켓플레이스) 로 LAMP 환경을 뚝딱 해보자
  • 실습 후딱 조지자

할일 1 : GCP 콘솔에 로그인 하기

퀵랩 실습 스타트 한다
시크릿 모드 연다

 

 

생성된 임시 아이디로 로그인 한다.
기본 프로젝트 화면이다.

할일 2 : 마켓 플레이스에서 LAMP 깔기

찾았다 요놈

 

인증 받으려면 얘로 깔아야 한다.

묻지도 따지지도 말고 아무것도 건들이지 말고 deploy 한다.

lampstack-1 is being deployed 에서  lampstack-1 has been deployed 로 바뀌면 재빠르게

진행사항 누르시오 완료되면 체크로 바뀜

 

할일3 : 제대로 deploy 되었는지 확인해보기

SSH 요놈 클릭
이 SSH 창이 뜬다.

//비트나미 디렉토리로 이동
cd /opt/bitnami
//phpinfo.php 파일을 웹 서버 루트로 복사
sudo cp docs/phpinfo.php apache2/htdocs
//창 끄기
exit

자기 주소는+phpinfo.info

 

실습끝


  • policies는 두개의 정책이 겹치면 둘 중 좀더 권한이 많은(generous)한 쪽의 policy 가 적용된다.
  • 모든 구글의 리소스들은 프로젝트에 속해있다.
  • 서비스 계정은 계정 퍼미션과 다른 리소스의 권한 제약, GCP 서비스 사이의 인증용도로 사용된다.
  • GCP 에서 구글은 클라우드 로우 레벨의 보안을 책임지고 윗쪽은 사용자가 책임져야 한다.
  • 프로젝트 아이디는 유니크 하면서도 동시에 사용자가 정한 이름을 사용한다.
  • folder는 organization node가 있어야만 만들 수 있고 organization node는 하나만 만들 수 있다.
  • primitive 와 predefined의 차이는 primitive 는 프로젝트 전체이지만 predefined 는 리소스 서비스 (예를 들어 compute engine)처럼 특정 리소스에 대한 미리 정의된 role을 말한다.
  • 클라우드 마켓플레이스는 상용 소프트웨어 사용시 돈 더내야된다.
728x90

댓글