Note_

0825/0826 수업메모 본문

혁신성장 프로젝트

0825/0826 수업메모

yewon 2021. 8. 26. 19:34

GCP

 

 

오늘 수업 내용

 

 Network 보안 구축

IAM(Identity and Access Management),

IAP(Identity-Aware Proxy), VPC Networks Controlling Access,

 

 

 

 

 

 

구글 공유 폴더

https://c11.kr/cccrsungsu

IAM

https://cloud.google.com/iam/docs/overview

 

 

 

 

 

 

IAM 환경에서 권한은 service.resource.verb 형식으로 표시

 

Compute Engine 에서 인스턴스 목록 확인 : compute.instance.list

 

인스턴스 중지 ; compute.instance.stop

 

사용자 지정 역할을 생성하려면 iam.roles.create권한이 있어야 함

 

 

조직 역할 관리자 :roles/iam.organizationRoleAdmin

 

IAM 역할 관리자 : roles/iam/roleAdmin

IAM 보안 검토자 : roles/iam/SecurityReviewer

 

 

IAM2가지 역할

 

- 사전 정의된 역할

Google에서 만들고 유지 관리

cloud에 새로운 기능이나 서비스가 추가되는 경우와 같이 필요에 따라 권한이 자동으로 업데이트

 

- 사용자 지정 역할

사용자가 정의하며 특정 요구 사항을 충족하기 위해 하나 이상의 지원되는 권한을 묶을 수 있음

Google에서 유지 관리 해주지 않음

사용자가 따로 업데이트를 진행

 

 

*프로젝트 리소스에 대한 기본 roles

 

roles/viewer

상태에 영향을 주지 않는 읽기 전용 작업에 대한 권한이 있습니다. 예를 들면 기존 리소스 또는 데이터의 조회(수정 제외)가 여기에 해당합니다.

2. roles/editor

모든 뷰어 권한에 더해 기존 리소스 변경과 같이 상태를 변경하는 작업에 대한 권한까지 포함됩니다.

3. roles/owner

모든 편집자 권한 및 다음 작업에 대한 권한:

프로젝트 및 프로젝트 내의 모든 리소스에 대한 역할 및 관리

프로젝트에 대한 결제 설정

 

 

roles/탐색

폴더, 조직, Cloud IAM 정책을 포함한 프로젝트 계층 구조를 탐색할 수 있는 읽기 액세스 권한입니다. 프로젝트의 리소스를 볼 수 있는 권한은 포함되어 있지 않습니다.

 

 

각자 자신의 프로젝트 : 자신이 소유자

다른 교육생 : role (뷰어 역할을 배당)

 

 

cloud storage : 버킷 생성 - 파일 업로드 -> 해당 파일만 접근

기존 프로젝트 ID에 뷰어 권한을 제거.

역할 추가 : cloud storage > 저장소 개체 뷰어 storage object viewer

 

 

 

 

 

만든 프로젝트의 이름과 아이디

한번 생성된것은 수정이 불가능하다.

 

 

 

리소스추가후

구성원을 추가

권한은 뷰어로 주어서 2명을 추가

 

 

 

 

버킷추가

 

버킷 자체적으로 권한추가삭제가 가능

다른 방법으로는 IAM에 따로 권한을 부여한 구성원을 추가 할 수도 있음

 

IAM목록을 확인하면 구성원이 잘 추가된 것을 확인 할 수 있음

 

 

 

사용자권한과 방화벽

 

키를 등록하지 않은 instance에 들어가서 방화벽 규칙 확인

키 값주고 비밀키를 복사

커널로 들어가서 버킷의 파일 리스트를 확인하고 비밀키를 인스턴스에 복사

옮긴 키 파일을 등록

 

 

 

network-manager 권한이 부족해서 방화벽 룰을 삭제x

so 새로운 서비스 계정을 생성 ( compute security manager)

 

1. 서비스 계정 추가 : 이름:security manager 역할:compute security manager

2. 생성한 서비스 계정에 key추가 (json 파일 다운로드)

3. 테스트할 VM 인스턴스에 key json을 업로드 (cloud storage 버킷 이용)

4. instance 2에서 json 키 다운로드

5. key json 파일로 사용자 인증

 

버킷에 생성한 키를 넣어주고 instan2에 옮겨서 권한 부여.

 

 

 

 

 

APP Engine

 

PHP 어플리케이션 다운로드

테스트

애플리케이션 배포 (app engine )

 

GCP 계정 로그인 > console 접속 > gcloud shell

 

$ gcloud auth list    계정 정보

$ gcloud config list project   프로젝트ID 확인

app engine을 위한 API 활성화 : 탐색 메뉴 > API 및 서비스 > 라이브러리 >  app engine 검색  : App Engine Admin API 선택> 사용 클릭 (활성화)

 

배포

(gcloud shell에서 계정과 프로젝트 ID확인)

 

 

 

 

링크를 타고 들어가면 다음과 값이 index에 설정된 내용이 나온다.

app Engine 대시보드로 전체적인 상황을 확인 할 수 있다

 

 

 

---------------------------------------------------------------------------------

 

 

 

 

 

 

IAP(Identity-Aware Proxy)

network performance

 

사용자 인증: IAP(Identity-Aware Proxy)

https://cloud.google.com/iap/docs/concepts-overview?hl=ko

 

 

 

 

 

 

 

로그인을 위해 브라우저 쿠키에 토큰을 저장하는 OAuth 2.0 Google 계정 로그인 과정으로 사용자가 리디렉션

 

요청 사용자 인증 정보가 유효하면,

인증 서버가 해당 사용자 인증 정보를 사용하여 사용자의 ID(이메일 주소 및 사용자 ID)를 가져옴.

그런 다음 인증 서버가 ID를 사용하여 사용자의 IAM 역할을 확인하고 사용자에게 리소스에 액세스할 권한이 있는지 확인

 

 

 

개발자 책임

https://cloud.google.com/iap/docs/concepts-overview?hl=ko#your_responsibilities

OAuth 2.0

https://datatracker.ietf.org/doc/html/rfc6749

https://developers.google.com/identity/protocols/oauth2?hl=ko

 

 

 

 

 

 

IAP 실습

소스 : github https://github.com/googlecodelabs/user-authentication-with-iap

 

 

 

 

 

 

소스 다운로드

$ git clone https://github.com/googlecodelabs/user-authentication-with-iap.git

그냥 html 파일

인증없이 deploy 페이지 확인1번 소스 :

IAP 활성화 -> 사용자 등록되어 있지 않으면 페이지 안보임.

사용자 계정 등록 -> 등록한 사람만 페이지가 보임.

 

2번 소스 : 인증된 사용자의 ID, email 전송 -> 웹페이지에 보임.

 

3번 소스 : email, id정보를 확인하여 화면에 출력

 

 

 

 

 

 

 

 

IAP 구성

탐색 메뉴 > 보안 > Identity-Aware Proxy > 활성화(enable API) > IAP로 이동

 

 

IAP문서

https://cloud.google.com/iap/docs?_ga=2.262243595.-602123755.1629764672

 

 

 

IAP 페이지 > https 리소스 > App engine 앱 체크박스 > 우측 화면 > add member 구성원 추가 ( 자신의 email, 짝꿍 email 추가)

역할 : Cloud IAP > IAP secured web app user

 

 

 

-------------------------------------------------------------------------------------------------------------

 

 

 

 

 

network performance testing

 

 

deployment manager

https://cloud.google.com/deployment-manager/docs

 

 

 

 

networking-lab.yaml

imports:

- path: vm-template.jinja

- path: network-template.jinja

- path: subnetwork-template.jinja

- path: compute-engine-template.jinja

- path: firewall-template.jinja

 

 

compute engine 서비스 중에 VM instance 삭제

 

 

app engine URL : imports:

- path: vm-template.jinja

- path: network-template.jinja

- path: subnetwork-template.jinja

- path: compute-engine-template.jinja

- path: firewall-template.jinja

 

 

 

타이완 (asia-east1)

벨기에 (europe-west1)

오리건 (us-west1)

사우스캐롤라이나 (us-east1)

 

대륙간의 delay 지연 시간 파악 : ping

미국 VM(오리건)-------------------------유럽 VM (벨기에) 89

e1-vm eu1-vm

미국 VM(오리건) -------------------------아시아 VM (타이완) -> 181

e1-vm asia1-vm

 

 

intance SSH 접속 $ ping [external IP address]

[Internal IP address]

[FQDN]

hostname.

 

내부 DNS

FQDN(정규화된 도메인 이름) : hostName.[zone].c.[projectID].internal

 

미국 동부 지역에서 유럽 서부 지역까지 대기시간

e1-vm$ ping eu1-vm.europe-west1-d (또는 internal IP)

 

 

 

 

 

https://cloud.google.com/solutions/best-practices-compute-engine-region-selection/?hl=ko#region-latency

 

서브마린

https://www.submarinenetworks.com/en/insights/complete-list-of-google-s-subsea-cable-investments

 

 

EU와 아시아 위치 간의 지연 시간이 매우 김.

현재 Compute Engine에는 유럽과 아시아 간의 사용할 수 있는 직접 링크가 없음.

네트워크 관점에서 하나의 글로벌 위치만 사용하여 서비스를 실행하는 경우, 해당 위치를 미국 중부에 두는 것이 좋음.

 

 

 

 

 

MTR 유틸을 이용해서 네트워크 진단 : ping + traceroute

 

 

iperf (server/client) 성능 테스트

 

 

 

 

 

 

 

Host : 목적지까지 거쳐가는 게이트웨이어 IP

Loss : 손실율

Snt : ping을 보낸 수(누적)

Last : ping 최근 응답시간

Avg : ping 평균 응답시간

Best : ping 중 제일 빠른 응답시간

Wrst : ping 중 최악 응답시간

StDev : 표준편차

H : 설명, D:디스플레이모드, R: 통계 재시작, O:정렬 필드 선택, q:종료

 

 

 

성능 테스트 iperf

server / client

 

system1 system2

eu1-vm e1-vm

iperf -s 서버

대기 iperf -c [eu1-vm정보]

tcp 세션 맺어 데이터 전송

 

 

 

\* 주의사항 : 기가 바이트로 전송을함. 이에 따른 인터넷 요금 부가 가능성이 있음.

 

us - asia

eu - asia

 

 

instance 머신 유형

 

 

 

tcp 윈도우 사이즈 변경

Server : iperf -s -w 사이즈

 

UDP 성능 테스트

server : iperf -s -u

client : iperf -c -u [servre정보]

 

 

eu1-vm : iperf -s -u

e1-vm : iperf -c eu1-vm.europe-west1-d -u -b 2G

 

미국 - EU 사이에 다 빠른 속도

 

멀티 쓰레드로 전송하기 (-P 숫자)

 

eu1-vm : iperf -s

e1-vm : iperf -c eu1-vm.europe-west1-d -P 10

 

 

패킷 캡쳐 하는 툴 : CLI -> tcpdump

메뉴얼 페이지

https://www.tcpdump.org/manpages/tcpdump.1.html

 

유럽 : 패킷 캡쳐 시작

sudo tcpdump -c 1000 -i eth0 host 10.20.0.2

not tcp port 22

미국 : 데이터 전송

ping -c 100 시스템IP

 

유럽 ; 패킷 캡쳐 중지 ctrl+c

 

 

 

유럽 ; 웹접속 데이터 캡쳐

sudo apt-get install -y apaceh2

 

유럽 : 패킷캡쳐 시작-저장

sudo tcpdump -i eth0 -c 1000 -s 1460 -w webserver.pcap tcp tcp 80

 

미국 : curl eu1-vm.europe-west1-d

 

유럽 : 캡쳐 중지 ctrl + c

 

본인 pc로 다운로드 하여 wireshark(무료) 분석

 

 

wireshark :GUI 유틸리티.

tcpdump 캡쳐한 파일을 저장해서 다운로드 해서 본인 pc에서 확인.

 

 

cloudshark (회원가입) - 보안 이슈가 없는 파일만 볼것.

https://www.cloudshark.org/captures/1a9c284c49b0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

GCP 삭제 

 

스냅샵, disk, 이미지 삭제

app engine : 인스턴스, app 구버전

 

고정 IP 해제

 

app engine 애플리케이션 서비스 중지. 기존 버전, 인스턴스 삭제

compute eingie 중지 - 삭제

스토리지 : 버킷 내에 파일이나 디렉토리 먼저 삭제, 버킷 삭제

deployment manager 중지되어있는지 확인

 

네트워크 : nw-testing, 방화벽 정책

IAP 사용중지

API 사용중지

프로젝스 삭제

결제 - 결제 중지

 

 

 

'혁신성장 프로젝트' 카테고리의 다른 글

09.02 Android App API (LOGIN)  (0) 2021.09.02
0826 멘토링 메모  (0) 2021.08.26
[08.26] 주피터 매개변수/음성인식/음성변환...등등  (0) 2021.08.26
다음 할것  (0) 2021.08.19
[12회차] 참조 사이트  (0) 2021.08.19
Comments