체크포인트
Create a Cloud Storage bucket
/ 15
Make file publicly readable
/ 15
Customer-supplied encryption keys (CSEK)
/ 15
Enable lifecycle management
/ 15
Enable versioning
/ 15
Create the resources in the second project
/ 15
Create and verify the resources in the first project
/ 10
Cloud Storage
개요
Cloud Storage는 다양한 고급 기능을 갖춘 Google Cloud의 기본 리소스입니다. 이 실습에서는 디자인에 유용한 여러 가지 Cloud Storage 기능을 연습합니다. 콘솔과 gsutil 도구를 모두 사용하여 Cloud Storage를 살펴보겠습니다.
목표
이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.
- 버킷 생성 및 사용
- 액세스 제어 목록(ACL)을 설정하여 액세스 제한
- 자체 암호화 키 사용
- 버전 제어 구현
- 디렉터리 동기화 사용
- IAM을 사용하여 여러 프로젝트에서 버킷 공유
Qwiklabs 설정
각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.
-
시크릿 창을 사용하여 Qwiklabs에 로그인합니다.
-
실습 사용 가능 시간(예:
1:15:00
)을 참고하여 해당 시간 내에 완료합니다.
일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다. -
준비가 되면 실습 시작을 클릭합니다.
-
실습 사용자 인증 정보(사용자 이름 및 비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.
-
Google Console 열기를 클릭합니다.
-
다른 계정 사용을 클릭한 다음, 안내 메시지에 이 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다.
다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다. -
약관에 동의하고 리소스 복구 페이지를 건너뜁니다.
작업 1. 준비
Cloud Storage 버킷 만들기
- 탐색 메뉴()에서 Cloud Storage > 버킷을 클릭합니다.
PROJECT_ID_1
의 일부를 사용할 수 있습니다. 예를 들어 PROJECT_ID_1
이 myproj-154920
인 경우 버킷 이름을 storecore154920
으로 할 수 있습니다.- 만들기를 클릭합니다.
- 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 | 값(지정된 대로 값 입력 또는 옵션 선택) |
---|---|
이름 | 전역적으로 고유한 이름 입력 |
위치 유형 | 리전 |
리전 | |
이 버킷에 공개 액세스 방지 적용 | 선택 해제됨 |
액세스 제어 | 세분화(버킷 수준 권한 외에 객체 수준 권한도 사용) |
- 버킷 이름을 기록해 둡니다. 이 실습의 이후 단계에서 [BUCKET_NAME_1]에 사용됩니다.
- 만들기를 클릭합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
CURL을 사용하여 샘플 파일을 다운로드하고 사본 2개 만들기
- Cloud 콘솔에서 Cloud Shell 활성화()를 클릭합니다.
- 메시지가 표시되면 계속을 클릭합니다.
- 환경 변수에 [BUCKET_NAME_1]을 저장합니다.
- echo를 사용하여 값을 확인합니다.
- 다음 명령어를 실행하여 샘플 파일을 다운로드합니다. 이 샘플 파일은 공개적으로 사용 가능한 Hadoop 문서 HTML 파일입니다.
- 다음 명령어를 실행하여 파일의 사본을 만듭니다.
작업 2. 액세스 제어 목록(ACL)
파일을 버킷에 복사하고 액세스 제어 목록(ACL) 구성
- 다음 명령어를 실행하여 첫 번째 파일을 버킷에 복사합니다.
- 다음 명령어를 실행하여 setup.html에 할당된 기본 액세스 목록을 가져옵니다.
- 다음 명령어를 실행하여 액세스 목록을 비공개로 설정하고 결과를 확인합니다.
- 다음 명령어를 실행하여 액세스 목록을 업데이트하고 공개적으로 읽기 가능한 파일로 만듭니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
Cloud 콘솔에서 파일 검사
- Cloud 콘솔의 탐색 메뉴()에서 Cloud Storage > 버킷을 클릭합니다.
- [BUCKET_NAME_1]을 클릭합니다.
- setup.html 파일의 공개 액세스에서 공개 링크를 사용할 수 있는지 확인합니다.
로컬 파일 삭제 및 Cloud Storage에서 다시 복사
- Cloud Shell로 돌아갑니다. 필요한 경우 Cloud Shell 활성화()를 클릭합니다.
- 다음 명령어를 실행하여 설정 파일을 삭제합니다.
- 다음 명령어를 실행하여 파일 삭제를 확인합니다.
- 다음 명령어를 실행하여 버킷에서 파일을 다시 복사합니다.
작업 3. 고객 제공 암호화 키(CSEK)
CSEK 키 생성
다음 단계를 진행하려면 AES-256 base-64 키가 필요합니다.
- 다음 명령어를 실행하여 키를 만듭니다.
결과(출력 예시입니다):
- 명령어 결과에서
b'
및\n'
을 제외하고 생성된 키 값을 복사합니다. 키 형식은tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
입니다.
boto 파일 수정
암호화 컨트롤은 .boto
라는 gsutil 구성 파일에 포함되어 있습니다.
- 다음 명령어를 실행하여 boto 파일을 열거나 볼 수 있습니다.
참고: .boto
파일이 비어 있으면 Ctrl+X를 눌러 nano 편집기를 닫고 gsutil config -n
명령어를 사용하여 새 .boto
파일을 만듭니다. 그런 다음 위에서 사용한 명령어로 파일을 다시 엽니다.
.boto
파일이 여전히 비어 있으면 gsutil version -l
명령어를 사용하여 찾아야 합니다.- '
#encryption_key=
'이 있는 줄을 찾습니다.
- # 문자를 삭제하여 줄의 주석 처리를 삭제하고 앞서 생성한 키를 끝에 붙여넣습니다.
예시(예시입니다):
- Ctrl+O와 ENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
나머지 설정 파일(암호화됨) 업로드 및 Cloud Console에서 확인
- 다음 명령어를 실행하여 나머지 setup.html 파일을 업로드합니다.
- Cloud Console로 돌아갑니다.
- [BUCKET_NAME_1]을 클릭합니다. setup2.html 파일과 setup3.html 파일 모두 고객이 제공한 키로 암호화되어 있다고 표시됩니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
로컬 파일 삭제, 새 파일 복사, 암호화 확인
- Cloud Shell에서 다음 명령어를 실행하여 로컬 파일을 삭제합니다.
- 다음 명령어를 실행하여 버킷에서 파일을 다시 복사합니다.
- 다음 명령어를 실행하여 암호화된 파일을 화면에 출력하고 파일이 다시 돌아왔는지 확인합니다.
작업 4. CSEK 키 순환
현재 CSEK 암호화 키를 복호화 키로 이동
- 다음 명령어를 실행하여
.boto
파일을 엽니다.
- 현재 encryption_key 줄의 맨 앞에 # 문자를 추가하여 주석 처리합니다.
- # 문자를 삭제하여 decryption_key1의 주석 처리를 삭제하고 encryption_key 줄의 현재 키를 decryption_key1 줄에 복사합니다.
결과(출력 예시입니다):
- Ctrl+O와 ENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
다른 CSEK 키를 생성하여 boto 파일에 추가
- 다음 명령어를 실행하여 새 키를 생성합니다.
- 명령어 결과에서
b'
및\n'
을 제외하고 생성된 키 값을 복사합니다. 키 형식은tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
입니다. - 다음 명령어를 실행하여 boto 파일을 엽니다.
- 암호화의 주석 처리를 삭제하고 새로운
encryption_key=
키 값을 붙여넣습니다.
결과(출력 예시입니다):
- Ctrl+O와 ENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
파일 1 키 재작성 및 이전 복호화 키의 주석 처리
암호화된 파일을 재작성하면 이전에 설정한 decryption_key1로 파일이 복호화되고 새 encryption_key로 다시 암호화됩니다.
setup2.html의 키는 재작성하되 setup3.html의 키는 재작성하지 않음으로써 키가 적절히 순환되지 않으면 어떤 일이 발생하는지 확인할 수 있습니다.
- 다음 명령어를 실행합니다.
- 다음 명령어를 실행하여 boto 파일을 엽니다.
- # 문자를 다시 추가하여 현재 decryption_key1 줄을 주석 처리합니다.
결과(출력 예시입니다):
- Ctrl+O와 ENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
설정 2 및 설정 3 다운로드
- 다음 명령어를 실행하여 setup2.html을 다운로드합니다.
- 다음 명령어를 실행하여 setup3.html을 다운로드합니다.
작업 5. 수명 주기 관리 사용 설정
버킷의 현재 수명 주기 정책 보기
- 다음 명령어를 실행하여 현재 수명 주기 정책을 확인합니다.
JSON 수명 주기 정책 파일 만들기
- 다음 명령어를 실행하여 life.json이라는 이름의 파일을 만듭니다.
- life.json 파일에 다음 값을 붙여넣습니다.
- Ctrl+O와 ENTER 키를 눌러 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
정책 설정 및 확인
- 다음 명령어를 실행하여 정책을 설정합니다.
- 다음 명령어를 실행하여 정책을 확인합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
작업 6. 버전 관리 사용 설정
버킷의 버전 관리 상태 확인 및 버전 관리 사용 설정
- 다음 명령어를 실행하여 버킷의 현재 버전 관리 상태를 확인합니다.
- 다음 명령어를 실행하여 버전 관리를 사용 설정합니다.
- 다음 명령어를 실행하여 버전 관리가 사용 설정되었는지 확인합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
버킷에 샘플 파일의 여러 버전 만들기
- 샘플 파일의 크기를 확인합니다.
- setup.html 파일을 엽니다.
- setup.html에서 임의의 5줄을 삭제하여 파일 크기를 변경합니다.
- Ctrl+O와 ENTER 키를 눌러 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
- 버전 관리 옵션인 -v를 사용하여 파일을 버킷에 복사합니다.
- setup.html 파일을 엽니다.
- setup.html에서 5줄을 더 삭제하여 파일 크기를 변경합니다.
- Ctrl+O와 ENTER 키를 눌러 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
- 버전 관리 옵션인 -v를 사용하여 파일을 버킷에 복사합니다.
파일의 모든 버전 나열
- 다음 명령어를 실행하여 파일의 모든 버전을 나열합니다.
- 목록 맨 위에 있는 가장 오래된 파일 버전 이름을 강조표시하고 복사합니다. 이 이름은 다음 단계에서 [VERSION_NAME]에 사용됩니다.
- 환경 변수 [VERSION_NAME]에 버전 값을 저장합니다.
- echo를 사용하여 값을 확인합니다.
결과(출력 예시입니다):
가장 오래된 원래 파일 버전 다운로드 및 복구 확인
- 파일의 원래 버전을 다운로드합니다.
- 다음 명령어를 실행하여 복구를 확인합니다.
작업 7. 디렉터리를 버킷에 동기화
중첩된 디렉터리를 만들고 버킷과 동기화
디렉터리가 버킷에 재귀적으로 복사되면 어떤 일이 일어나는지 살펴볼 수 있도록 중첩된 디렉터리 구조를 만듭니다.
- 다음 명령어를 실행합니다.
- 다음 명령어를 실행하여 VM의 첫 번째 수준 디렉터리를 버킷과 동기화합니다.
결과 검사
- Cloud 콘솔의 탐색 메뉴()에서 Cloud Storage > 버킷을 클릭합니다.
- [BUCKET_NAME_1]을 클릭합니다. 버킷 내의 하위 폴더를 확인하세요.
- /firstlevel과 /secondlevel을 차례로 클릭합니다.
- Cloud 콘솔에 표시된 내용을 다음 명령어의 결과와 비교해 봅니다.
- Cloud Shell을 종료합니다.
작업 8. 프로젝트 간 공유
두 번째 프로젝트로 전환
- 새로운 시크릿 탭을 엽니다.
- console.cloud.google.com으로 이동하여 Cloud 콘솔을 엽니다.
- 제목 표시줄에서 프로젝트 선택기 드롭다운을 클릭합니다.
- 모두를 클릭한 후 Qwiklabs Connection Details 대화상자에 제공되는 두 번째 프로젝트를 클릭합니다. 참고로 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유한 이름입니다. 두 번째 프로젝트 ID는 [PROJECT_ID_2]에 사용됩니다.
버킷 준비
- Cloud 콘솔의 탐색 메뉴()에서 Cloud Storage > 버킷을 클릭합니다.
- 만들기를 클릭합니다.
- 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 | 값(지정된 대로 값 입력 또는 옵션 선택) |
---|---|
이름 | 전역적으로 고유한 이름 입력 |
위치 유형 | 리전 |
리전 | |
액세스 제어 | 세분화(버킷 수준 권한 외에 객체 수준 권한도 사용) |
- 버킷 이름을 기록해 둡니다. 이후 단계에서 [BUCKET_NAME_2]에 사용됩니다.
- 만들기를 클릭합니다.
텍스트 파일을 버킷에 업로드
- 파일을 [BUCKET_NAME_2]에 업로드합니다. 작은 예시 파일이나 텍스트 파일이면 됩니다.
- 파일 이름을 기록해 둡니다. 이후 [FILE_NAME]에 사용됩니다.
IAM 서비스 계정 만들기
- Cloud 콘솔의 탐색 메뉴()에서 IAM 및 관리자 > 서비스 계정을 클릭합니다.
- 서비스 계정 만들기를 클릭합니다.
- 서비스 계정 세부정보 페이지에서 서비스 계정 이름을
cross-project-storage
로 지정합니다. - 만들고 계속하기를 클릭합니다.
- 서비스 계정 권한 페이지에서 역할을 Cloud Storage > 스토리지 객체 뷰어로 지정합니다.
- 계속을 클릭한 다음 완료를 클릭합니다.
- cross-project-storage 서비스 계정을 클릭하여 JSON 키를 추가합니다.
- 키 탭에서 키 추가 드롭다운을 클릭하고 새 키 만들기를 선택합니다.
- 키 유형으로 JSON을 선택하고 만들기를 클릭합니다. JSON 키 파일이 다운로드됩니다. 이후 단계에서 이 키 파일을 찾아 VM에 업로드해야 합니다.
- 닫기를 클릭합니다.
- 하드 드라이브에서 JSON 키 파일의 이름을 credentials.json으로 변경합니다.
- 상단 창에서 [PROJECT_ID_1]로 다시 전환합니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
VM 만들기
- 탐색 메뉴()에서 Compute Engine > VM 인스턴스를 클릭합니다.
- 인스턴스 만들기를 클릭합니다.
- 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 | 값(지정된 대로 값 입력 또는 옵션 선택) |
---|---|
이름 | crossproject |
리전 | |
영역 | |
시리즈 | E2 |
머신 유형 | e2-medium |
부팅 디스크 | Debian GNU/Linux 11(bullseye) |
- 만들기를 클릭합니다.
SSH를 통해 VM 연결
- crossproject에서 SSH를 클릭하여 터미널을 실행하고 연결합니다.
- 환경 변수에 [BUCKET_NAME_2]를 저장합니다.
- echo를 사용하여 값을 확인합니다.
- 환경 변수에 [FILE_NAME]을 저장합니다.
- echo를 사용하여 값을 확인합니다.
- [PROJECT_ID_2]의 파일을 나열합니다.
결과(출력 예시입니다):
VM 승인
- SSH VM 터미널을 통해 credentials.json을 업로드하려면 오른쪽 상단의 위쪽 화살표 아이콘()을 클릭한 다음 파일 업로드를 클릭합니다.
- credentials.json을 선택하여 업로드합니다.
- 파일 전송 창에서 닫기를 클릭합니다.
- JSON 파일이 VM에 업로드되었는지 확인합니다.
결과(출력 예시입니다):
- 터미널에 다음 명령어를 입력하여 VM이 Google Cloud API를 사용하도록 승인합니다.
참고: 사용 중인 이미지에 Google Cloud SDK가 미리 설치되어 있으므로 Google Cloud SDK를 초기화하지 않아도 됩니다.
다른 환경에서 이 실습을 하려면 Google Cloud SDK 설치에 관한 gcloud CLI 설치 가이드에서 다음 절차를 따르세요.액세스 확인
- 다음 명령어를 다시 실행합니다.
- 다음 명령어를 다시 실행합니다.
- 사용자 인증 정보 파일을 버킷에 복사합니다.
결과(출력 예시입니다):
역할 수정
- 상단 창에서 [PROJECT_ID_2]로 다시 전환합니다.
- Cloud 콘솔의 탐색 메뉴()에서 IAM 및 관리자 > IAM을 클릭합니다.
- cross-project-storage 서비스 계정의 연필 아이콘을 클릭합니다. 오른쪽으로 스크롤해야 이 아이콘이 표시될 수도 있습니다.
- 스토리지 객체 뷰어 역할을 클릭한 다음 Cloud Storage > 스토리지 객체 관리자를 클릭합니다.
- 저장을 클릭합니다. 저장을 클릭하지 않으면 변경사항이 적용되지 않습니다.
내 진행 상황 확인하기를 클릭하여 목표를 확인합니다.
변경된 액세스 확인
- crossproject의 SSH 터미널로 돌아갑니다.
- 사용자 인증 정보 파일을 버킷에 복사합니다.
결과(출력 예시입니다):
참고: 이 예시에서 PROJECT_ID_1
의 VM은 이제 다른 프로젝트에서 만든 버킷의 Cloud Storage에 파일을 업로드할 수 있습니다.
PROJECT_ID_1
이 아니라 PROJECT_ID_2
에 청구됩니다.작업 9. 복습
이 실습에서는 버킷과 객체를 만들고 이를 사용하여 작업하는 방법과 Cloud Storage의 다음과 같은 기능에 관해 배웠습니다.
- CSEK: 고객 제공 암호화 키
- 자체 암호화 키 사용
- 키 순환
- ACL: 액세스 제어 목록
- ACL을 비공개로 설정한 후 공개로 수정
- 수명 주기 관리
- 31일이 지난 객체를 삭제하도록 정책 설정
- 버전 관리
- 버전 만들기 및 이전 버전 복원
- 디렉터리 동기화
- VM 디렉터리를 버킷과 재귀적으로 동기화
- IAM을 사용하여 프로젝트 간에 리소스 공유
- IAM을 사용하여 여러 프로젝트의 리소스에 대한 액세스 허용
실습 종료하기
실습을 완료하면 실습 종료를 클릭합니다. Google Cloud Skills Boost에서 사용된 리소스를 자동으로 삭제하고 계정을 지웁니다.
실습 경험을 평가할 수 있습니다. 해당하는 별표 수를 선택하고 의견을 입력한 후 제출을 클릭합니다.
별점의 의미는 다음과 같습니다.
- 별표 1개 = 매우 불만족
- 별표 2개 = 불만족
- 별표 3개 = 중간
- 별표 4개 = 만족
- 별표 5개 = 매우 만족
의견을 제공하고 싶지 않다면 대화상자를 닫으면 됩니다.
의견이나 제안 또는 수정할 사항이 있다면 지원 탭을 사용하세요.
Copyright 2020 Google LLC All rights reserved. Google 및 Google 로고는 Google LLC의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.