GCP

[GCP] IAM, VPC Networks 기초 실습

Jaden Park 2021. 8. 25. 02:27

들어가며: 목표

 

Compute Engine와 VPC

네트워크 관리자와 보안 관리자 설정

 


들어가며: 목표

  • GCP 관리 콘솔에 칙숙해지기
  • GCP 네트워크 서비스 VPC 이해와 생성
  • GCP 인스턴스 서비스 이해와 생성

 

실습 해볼 내용

1. 인스턴스 생성시 http 정책허용태그를 통해 http 정책허용

2. cloud shell 에서 인스턴스 생성

3. default, 네트워크 관리자, 보안 관리자 방화벽 규칙 확인 및 삭제

 

 


Compute Engine

GCP 클라우드에서 확장 가능한 컴퓨팅 용량을 제공

 

인스턴스 생명 주기

  • PROVISIONING: 리소스가 VM에 할당됩니다. VM은 아직 실행 중이 아닙니다.
  • STAGING: 리소스가 확보되고 VM이 첫 번째 부팅을 준비하는 중입니다.
  • RUNNING: VM이 부팅 또는 실행되는 중입니다.
  • STOPPING: VM이 중지되는 중입니다. 중지를 요청했거나 오류가 발생했습니다. VM이 TERMINATED 상태로 전환된 후의 임시 상태입니다.
  • REPAIRING: VM을 복구하는 중입니다. VM에 내부 오류가 발생하거나 유지보수로 인해 기본 머신을 사용할 수 없을 때 복구가 수행됩니다. 이 시간 동안에는 VM을 사용할 수 없습니다. 복구가 성공하면 VM이 위 상태 중 하나로 돌아갑니다.
  • TERMINATED: VM이 중지되었습니다. VM을 중지했거나 VM에 오류가 발생했습니다. VM을 다시 시작하거나 삭제할 수 있습니다.
  • SUSPENDING: VM 일시정지를 처리하는 중입니다. VM이 일시정지되었습니다.
  • SUSPENDED: VM이 일시정지된 상태입니다. VM을 재개하거나 삭제할 수 있습니다.

 

GCP 머신 유형

 

 

Step 01. 인스턴스 만들기

GCP 탐색 메뉴에서 Compute Engine 선택 -> 인스턴스 만들기 클릭

 

 

 

Step 01. 인스턴스 만들기 instance-1 생성

이름: instance-1

리전: asia-northeast3(서울) asia-northeast3-a

 

부팅 디스크: Debian GNU/Linux 10 (buster)

방화벽:  HTTP 트래픽 허용 (체크)

위와 같이 속성 설정 뒤 만들기 클릭

 

 

 

Step 01. 인스턴스 만들기 instance-1 생성

인스턴스 생성까지 30초 정도 소요된 후 정상 생성된 것을 확인

 

 

Step 01. 인스턴스 만들기 instance-2 생성

instance-2 도 같은 방법으로 생성

이름: instance-1

리전: asia-northeast3(서울) asia-northeast3-a

부팅 디스크: Debian GNU/Linux 10 (buster)

http 트래픽 허용 체크하지 않음

관리,보안, 디스크, 네트워킹, 단독 임대 자세히 보기 클릭

 

 

네트워킹 클릭

네트워크 태그: webserver

만들기 클릭

인스턴스 생성까지 30초 정도 소요된 후 정상 생성된 것을 확인

 

 

 

Step 02. 웹서버 구축 (instance-1, 2 공통)

인스턴스 1,2 공통이므로 같은 방법으로 인스턴스 2개 모두 설정하면 됩니다.

 

생성된 인스턴스에서 SSH 연결 버튼 클릭

 

 

쉘이 열렸다면 2개 인스턴스 각각 아래 명령어 수행

인스턴스1
$ sudo su -
$ apt install -y nginx-light

$ cat /var/www/html/index.nginx-debian.html 
this is an instance-1
<ctrl+d>

$ curl ifconfig.me
$ curl <자신의 외부 IP값>

this is an instance-1



# 인스턴스2
$ sudo su -
$ apt install -y nginx-light

$ cat /var/www/html/index.nginx-debian.html
this is an instance-2
<ctrl+d>

$ curl ifconfig.me
$ curl <자신의 외부 IP값>

 

 

instance-1 은 생성 시 tcp 80 을 허용했지만

instance-2 는 생성 시 허용을 하지 않았기 때문에

웹서버 instance-1 만 외부에서 접근이 가능한 것 입니다.

 

 

VPC 네트워크

Virtual Private Cloud(VPC) 네트워크는 Andromeda를 사용하여 Google의 프로덕션 네트워크 내에서 구현되는 물리적 네트워크의 가상 버전

(aws vpc 와 가상네트워크 단위를 만든다는 개념이 크게 다르지 않습니다.)

 

Step 3. 인스턴스 네트워크 태그 방화벽 규칙 생성

instance-2 에서 설정했던 네트워크 태그를 사용해 방화벽 규칙을 만들어 http 포트를 허용할 작업을 수행하기 위해

VPC 네트워크 -> 방화벽 클릭합니다.

 

방화벽 규칙 만들기 를 클릭합니다.

 

 

 

이름: webserver-allow-http

대상: 지정된 대상 태그

대상 태그: webserver

소스IP 범위: 0.0.0.0/0 or 자신이 instance-2 에 접속할 <IP주소/24>

지정된 프로토콜 및 포트 체크

tcp: 80

만들기 클릭

 

생성이 되어 있는 것을 확인할 수 있습니다.

 

 

 

 

Step 4. instance-2 및 방화벽 확인

$ curl <instance-2 ip>

 

네트워크 태그 방화벽 규칙으로 외부 접근이 가능해진 것을 확인할 수 있습니다.

 

 

 

 

$ gcloud compute firewall-rules list

방화벽 규칙을 조회하려 시도하지만 권한이 없다는 메시지가 돌아옵니다.

Compute Engine default service account 는 방화벽 조회에 대한 접근이 없기 때문입니다.

이후 실습에서 보도록 하겠습니다.

 


네트워크 관리자와 보안 관리자 설정

대시보드에서 IAM 및 관리자 -> 서비스 계정 을 클릭합니다.

 

 

Step1.  네트워크 관리자 생성

Compute Engine default service account 가 있는 것을 확인할 수 있습니다.

해당 서비스 계정은 방화벽 권한이 없기 때문에 서비스 계정을 새로 생성하겠습니다.

 

 

 

Step1.  네트워크 관리자 생성

서비스 계정 이름: networkmanager

가입 완료 및 계속

 

역할 선택: Compute 네트워크 관리자

완료 클릭하여 생성하기.

 

 

 

방금 생성한 networkmanger 계정에서 작업 -> 키 관리 클릭

 

 

키 추가 -> 새 키 만들기 클릭

 

 

 

키 유형: JSON 

만들기 클릭

 

 

 

Step2.  네트워크 관리자 로그인 후 확인

다운로드 폴더에 가서 json 키-값 복사.

 

instance-2 ssh 에서 networkmanager.json 이름으로 키-값 붙혀넣기.

$ cat > networkmanager.json
<your key-value>

<ctrl + d>

 

혹은 scp 를 사용하거나, 톱니바퀴 -> 파일 업로드 클릭해서 .json 옮겨도 무관함. 자신에게 편한 방법 사용.

 

 

 

 

$ gcloud auth activate-service-account --key-file networkmanager.json
Acitvated...


$ gcloud auth list
...

networkmanager activate 되어 있는 것을 확인할 수 있습니다.

 

 

$ gcloud compute firewall-rules list

네트워크 관리자 권한은 조회가 가능합니다.

이전에 우리가 생성한 webserver-allow-http 규칙이 있는 것을 확인할 수 있습니다.

 

 

$ gcloud compute firewall-rules delete webserver-allow-http

삭제 시도를 하지만 권한이 없다는 말이 나옵니다.

네트워크 관리자의 권한은 조회까지만 있습니다.

 

그럼 이제 보안 관리자를 생성 후 로그인하여 삭제하는 실습을 해보겠습니다.

 

 

Step3.  보안 관리자 생성

네트워크 관리자를 생성했을 때와 동일합니다.

서비스 계정 만들기를 들어간 뒤 아래와 같이 기입합니다.

 

서비스 계정 이름: securitymanager

역할 선택: compute 보안 관리자

완료 클릭

 

Step4.  보안 관리자 로그인 및 확인

$ cat > security.json
<your key-val>

<ctrl + d>

위에 설명한 방법으로 네트워크 보안 관리자 키 생성 후 copy&paste

 

 

$ gcloud auth activate-service-account --key-file securitymanager.json
Acitvated...


$ gcloud auth list
...

securitymanager 로 activate 되어 있는 것을 확인할 수 있습니다.

 

 

$ gcloud compute firewall-rules list

$ gcloud compute firewall-rules delete webserver-allow-http

 

네트워크 관리자와는 다르게 보안 관리자 권한

방화벽 규칙 조회 권한에도 문제 없고

삭제에도 문제가 없는 것을 알 수 있습니다.

삭제 후, instance-2 의 http 규칙이 없어짐에 따라 외부에서 접근이 불가능한 것을 알 수 있습니다.

 

 

추가. 서비스 활성 계정 전환

$ gcloud config configurations activate [CONFIGURATION]

자세한 내용은 google cloud SDK 공식 문서 참고