arrow_back

Cloud Storage

로그인 가입
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Cloud Storage

Lab 1시간 30분 universal_currency_alt 크레딧 5개 show_chart 입문
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

개요

Cloud Storage는 다양한 고급 기능을 갖춘 Google Cloud의 기본 리소스입니다. 이 실습에서는 디자인에 유용한 여러 가지 Cloud Storage 기능을 연습합니다. 콘솔과 gsutil 도구를 모두 사용하여 Cloud Storage를 살펴보겠습니다.

목표

이 실습에서는 다음 작업을 수행하는 방법을 알아봅니다.

  • 버킷 생성 및 사용
  • 액세스 제어 목록(ACL)을 설정하여 액세스 제한
  • 자체 암호화 키 사용
  • 버전 제어 구현
  • 디렉터리 동기화 사용
  • IAM을 사용하여 여러 프로젝트에서 버킷 공유

Qwiklabs 설정

각 실습에서는 정해진 기간 동안 새 Google Cloud 프로젝트와 리소스 집합이 무료로 제공됩니다.

  1. 시크릿 창을 사용하여 Qwiklabs에 로그인합니다.

  2. 실습 사용 가능 시간(예: 1:15:00)을 참고하여 해당 시간 내에 완료합니다.
    일시중지 기능은 없습니다. 필요한 경우 다시 시작할 수 있지만 처음부터 시작해야 합니다.

  3. 준비가 되면 실습 시작을 클릭합니다.

  4. 실습 사용자 인증 정보(사용자 이름비밀번호)를 기록해 두세요. Google Cloud Console에 로그인합니다.

  5. Google Console 열기를 클릭합니다.

  6. 다른 계정 사용을 클릭한 다음, 안내 메시지에 실습에 대한 사용자 인증 정보를 복사하여 붙여넣습니다.
    다른 사용자 인증 정보를 사용하는 경우 오류가 발생하거나 요금이 부과됩니다.

  7. 약관에 동의하고 리소스 복구 페이지를 건너뜁니다.

작업 1. 준비

Cloud Storage 버킷 만들기

  1. 탐색 메뉴(탐색 메뉴 아이콘)에서 Cloud Storage > 버킷을 클릭합니다.
참고: 버킷의 이름은 전역적으로 고유해야 합니다. 고유한 이름을 만들기 위해 이름에 PROJECT_ID_1의 일부를 사용할 수 있습니다. 예를 들어 PROJECT_ID_1myproj-154920인 경우 버킷 이름을 storecore154920으로 할 수 있습니다.
  1. 만들기를 클릭합니다.
  2. 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 값(지정된 대로 값 입력 또는 옵션 선택)
이름 전역적으로 고유한 이름 입력
위치 유형 리전
리전
이 버킷에 공개 액세스 방지 적용 선택 해제됨
액세스 제어 세분화(버킷 수준 권한 외에 객체 수준 권한도 사용)
  1. 버킷 이름을 기록해 둡니다. 이 실습의 이후 단계에서 [BUCKET_NAME_1]에 사용됩니다.
  2. 만들기를 클릭합니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. Cloud Storage 버킷 만들기

CURL을 사용하여 샘플 파일을 다운로드하고 사본 2개 만들기

  1. Cloud 콘솔에서 Cloud Shell 활성화(Cloud Shell)를 클릭합니다.
  2. 메시지가 표시되면 계속을 클릭합니다.
  3. 환경 변수에 [BUCKET_NAME_1]을 저장합니다.
export BUCKET_NAME_1=<여기에 버킷 이름 1 입력>
  1. echo를 사용하여 값을 확인합니다.
echo $BUCKET_NAME_1
  1. 다음 명령어를 실행하여 샘플 파일을 다운로드합니다. 이 샘플 파일은 공개적으로 사용 가능한 Hadoop 문서 HTML 파일입니다.
curl \ https://hadoop.apache.org/docs/current/\ hadoop-project-dist/hadoop-common/\ ClusterSetup.html > setup.html
  1. 다음 명령어를 실행하여 파일의 사본을 만듭니다.
cp setup.html setup2.html cp setup.html setup3.html

작업 2. 액세스 제어 목록(ACL)

파일을 버킷에 복사하고 액세스 제어 목록(ACL) 구성

  1. 다음 명령어를 실행하여 첫 번째 파일을 버킷에 복사합니다.
gcloud storage cp setup.html gs://$BUCKET_NAME_1/
  1. 다음 명령어를 실행하여 setup.html에 할당된 기본 액세스 목록을 가져옵니다.
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl.txt cat acl.txt
  1. 다음 명령어를 실행하여 액세스 목록을 비공개로 설정하고 결과를 확인합니다.
gsutil acl set private gs://$BUCKET_NAME_1/setup.html gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl2.txt cat acl2.txt
  1. 다음 명령어를 실행하여 액세스 목록을 업데이트하고 공개적으로 읽기 가능한 파일로 만듭니다.
gsutil acl ch -u AllUsers:R gs://$BUCKET_NAME_1/setup.html gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl3.txt cat acl3.txt

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 파일을 읽을 수 있도록 공개

Cloud 콘솔에서 파일 검사

  1. Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 Cloud Storage > 버킷을 클릭합니다.
  2. [BUCKET_NAME_1]을 클릭합니다.
  3. setup.html 파일의 공개 액세스에서 공개 링크를 사용할 수 있는지 확인합니다.

로컬 파일 삭제 및 Cloud Storage에서 다시 복사

  1. Cloud Shell로 돌아갑니다. 필요한 경우 Cloud Shell 활성화(Cloud Shell)를 클릭합니다.
  2. 다음 명령어를 실행하여 설정 파일을 삭제합니다.
rm setup.html
  1. 다음 명령어를 실행하여 파일 삭제를 확인합니다.
ls
  1. 다음 명령어를 실행하여 버킷에서 파일을 다시 복사합니다.
gcloud storage cp gs://$BUCKET_NAME_1/setup.html setup.html

작업 3. 고객 제공 암호화 키(CSEK)

CSEK 키 생성

다음 단계를 진행하려면 AES-256 base-64 키가 필요합니다.

  1. 다음 명령어를 실행하여 키를 만듭니다.
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'

결과(출력 예시입니다):

b'tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=\n'
  1. 명령어 결과에서 b'\n'을 제외하고 생성된 키 값을 복사합니다. 키 형식은 tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=입니다.

boto 파일 수정

암호화 컨트롤은 .boto라는 gsutil 구성 파일에 포함되어 있습니다.

  1. 다음 명령어를 실행하여 boto 파일을 열거나 볼 수 있습니다.
ls -al nano .boto

참고: .boto 파일이 비어 있으면 Ctrl+X를 눌러 nano 편집기를 닫고 gsutil config -n 명령어를 사용하여 새 .boto 파일을 만듭니다. 그런 다음 위에서 사용한 명령어로 파일을 다시 엽니다.

.boto 파일이 여전히 비어 있으면 gsutil version -l 명령어를 사용하여 찾아야 합니다.
  1. '#encryption_key='이 있는 줄을 찾습니다.
참고: nano 편집기 하단의 단축키로 파일을 빠르게 탐색할 수 있습니다. Where Is 단축키를 사용하여 #encryption_key=이 있는 줄을 빠르게 찾을 수 있습니다.
  1. # 문자를 삭제하여 줄의 주석 처리를 삭제하고 앞서 생성한 키를 끝에 붙여넣습니다.

예시(예시입니다):

변경 전: # encryption_key= 변경 후: encryption_key=tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=
  1. Ctrl+OENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.

나머지 설정 파일(암호화됨) 업로드 및 Cloud Console에서 확인

  1. 다음 명령어를 실행하여 나머지 setup.html 파일을 업로드합니다.
gsutil cp setup2.html gs://$BUCKET_NAME_1/ gsutil cp setup3.html gs://$BUCKET_NAME_1/
  1. Cloud Console로 돌아갑니다.
  2. [BUCKET_NAME_1]을 클릭합니다. setup2.html 파일과 setup3.html 파일 모두 고객이 제공한 키로 암호화되어 있다고 표시됩니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 고객 제공 암호화 키(CSEK)

로컬 파일 삭제, 새 파일 복사, 암호화 확인

  1. Cloud Shell에서 다음 명령어를 실행하여 로컬 파일을 삭제합니다.
rm setup*
  1. 다음 명령어를 실행하여 버킷에서 파일을 다시 복사합니다.
gsutil cp gs://$BUCKET_NAME_1/setup* ./
  1. 다음 명령어를 실행하여 암호화된 파일을 화면에 출력하고 파일이 다시 돌아왔는지 확인합니다.
cat setup.html cat setup2.html cat setup3.html

작업 4. CSEK 키 순환

현재 CSEK 암호화 키를 복호화 키로 이동

  1. 다음 명령어를 실행하여 .boto 파일을 엽니다.
nano .boto
  1. 현재 encryption_key 줄의 맨 앞에 # 문자를 추가하여 주석 처리합니다.
참고: nano 편집기 하단의 단축키로 파일을 빠르게 탐색할 수 있습니다. Where Is 단축키를 사용하여 encryption_key=이 있는 줄을 빠르게 찾을 수 있습니다.
  1. # 문자를 삭제하여 decryption_key1의 주석 처리를 삭제하고 encryption_key 줄의 현재 키를 decryption_key1 줄에 복사합니다.

결과(출력 예시입니다):

변경 전: encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= # decryption_key1= 변경 후: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. Ctrl+OENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
참고: 실제 환경에서는 encryption_key 줄에서 이전 CSEK 키를 삭제하게 됩니다.

다른 CSEK 키를 생성하여 boto 파일에 추가

  1. 다음 명령어를 실행하여 새 키를 생성합니다.
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
  1. 명령어 결과에서 b'\n'을 제외하고 생성된 키 값을 복사합니다. 키 형식은 tmxElCaabWvJqR7uXEWQF39DhWTcDvChzuCmpHe6sb0=입니다.
  2. 다음 명령어를 실행하여 boto 파일을 엽니다.
nano .boto
  1. 암호화의 주석 처리를 삭제하고 새로운 encryption_key= 키 값을 붙여넣습니다.

결과(출력 예시입니다):

변경 전: # encryption_key=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= 변경 후: encryption_key=HbFK4I8CaStcvKKIx6aNpdTse0kTsfZNUjFpM+YUEjY=
  1. Ctrl+OENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.

파일 1 키 재작성 및 이전 복호화 키의 주석 처리

암호화된 파일을 재작성하면 이전에 설정한 decryption_key1로 파일이 복호화되고 새 encryption_key로 다시 암호화됩니다.

setup2.html의 키는 재작성하되 setup3.html의 키는 재작성하지 않음으로써 키가 적절히 순환되지 않으면 어떤 일이 발생하는지 확인할 수 있습니다.

  1. 다음 명령어를 실행합니다.
gsutil rewrite -k gs://$BUCKET_NAME_1/setup2.html
  1. 다음 명령어를 실행하여 boto 파일을 엽니다.
nano .boto
  1. # 문자를 다시 추가하여 현재 decryption_key1 줄을 주석 처리합니다.

결과(출력 예시입니다):

변경 전: decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg= 변경 후: # decryption_key1=2dFWQGnKhjOcz4h0CudPdVHLG2g+OoxP8FQOIKKTzsg=
  1. Ctrl+OENTER 키를 눌러 boto 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
참고: 실제 환경에서는 decryption_key1 줄에서 이전 CSEK 키를 삭제하게 됩니다.

설정 2 및 설정 3 다운로드

  1. 다음 명령어를 실행하여 setup2.html을 다운로드합니다.
gsutil cp gs://$BUCKET_NAME_1/setup2.html recover2.html
  1. 다음 명령어를 실행하여 setup3.html을 다운로드합니다.
gsutil cp gs://$BUCKET_NAME_1/setup3.html recover3.html 참고: 어떻게 된 것일까요? setup3.html은 새 키로 재작성하지 않았기 때문에 복호화될 수 없고 복사되지 않습니다.

CSEK 키를 성공적으로 순환했습니다.

작업 5. 수명 주기 관리 사용 설정

버킷의 현재 수명 주기 정책 보기

  • 다음 명령어를 실행하여 현재 수명 주기 정책을 확인합니다.
gsutil lifecycle get gs://$BUCKET_NAME_1 참고: 수명 주기 구성이 없습니다. 다음 단계에서 수명 주기 구성을 만듭니다.

JSON 수명 주기 정책 파일 만들기

  1. 다음 명령어를 실행하여 life.json이라는 이름의 파일을 만듭니다.
nano life.json
  1. life.json 파일에 다음 값을 붙여넣습니다.
{ "rule": [ { "action": {"type": "Delete"}, "condition": {"age": 31} } ] } 참고: 이 명령은 Cloud Storage에 31일이 지난 객체를 삭제하도록 지시합니다.
  1. Ctrl+OENTER 키를 눌러 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.

정책 설정 및 확인

  1. 다음 명령어를 실행하여 정책을 설정합니다.
gsutil lifecycle set life.json gs://$BUCKET_NAME_1
  1. 다음 명령어를 실행하여 정책을 확인합니다.
gsutil lifecycle get gs://$BUCKET_NAME_1

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 수명 주기 관리 사용 설정

작업 6. 버전 관리 사용 설정

버킷의 버전 관리 상태 확인 및 버전 관리 사용 설정

  1. 다음 명령어를 실행하여 버킷의 현재 버전 관리 상태를 확인합니다.
gsutil versioning get gs://$BUCKET_NAME_1 참고: 보류된 정책이란 사용 설정되어 있지 않다는 뜻입니다.
  1. 다음 명령어를 실행하여 버전 관리를 사용 설정합니다.
gsutil versioning set on gs://$BUCKET_NAME_1
  1. 다음 명령어를 실행하여 버전 관리가 사용 설정되었는지 확인합니다.
gsutil versioning get gs://$BUCKET_NAME_1

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 버전 관리 사용 설정

버킷에 샘플 파일의 여러 버전 만들기

  1. 샘플 파일의 크기를 확인합니다.
ls -al setup.html
  1. setup.html 파일을 엽니다.
nano setup.html
  1. setup.html에서 임의의 5줄을 삭제하여 파일 크기를 변경합니다.
  2. Ctrl+OENTER 키를 눌러 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
  3. 버전 관리 옵션인 -v를 사용하여 파일을 버킷에 복사합니다.
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1
  1. setup.html 파일을 엽니다.
nano setup.html
  1. setup.html에서 5줄을 더 삭제하여 파일 크기를 변경합니다.
  2. Ctrl+OENTER 키를 눌러 파일을 저장한 다음 Ctrl+X를 눌러 nano 편집기를 종료합니다.
  3. 버전 관리 옵션인 -v를 사용하여 파일을 버킷에 복사합니다.
gcloud storage cp -v setup.html gs://$BUCKET_NAME_1

파일의 모든 버전 나열

  1. 다음 명령어를 실행하여 파일의 모든 버전을 나열합니다.
gcloud storage ls -a gs://$BUCKET_NAME_1/setup.html
  1. 목록 맨 위에 있는 가장 오래된 파일 버전 이름을 강조표시하고 복사합니다. 이 이름은 다음 단계에서 [VERSION_NAME]에 사용됩니다.
참고: gs://로 시작하는 파일의 전체 경로를 복사해야 합니다.
  1. 환경 변수 [VERSION_NAME]에 버전 값을 저장합니다.
export VERSION_NAME=<여기에 버전 이름 입력>
  1. echo를 사용하여 값을 확인합니다.
echo $VERSION_NAME

결과(출력 예시입니다):

gs://BUCKET_NAME_1/setup.html#1584457872853517

가장 오래된 원래 파일 버전 다운로드 및 복구 확인

  1. 파일의 원래 버전을 다운로드합니다.
gcloud storage cp $VERSION_NAME recovered.txt
  1. 다음 명령어를 실행하여 복구를 확인합니다.
ls -al setup.html ls -al recovered.txt 참고: 백업 버전에서 원래 파일을 복구했습니다. 줄을 삭제했기 때문에 원래 버전이 현재 버전보다 더 큽니다.

작업 7. 디렉터리를 버킷에 동기화

중첩된 디렉터리를 만들고 버킷과 동기화

디렉터리가 버킷에 재귀적으로 복사되면 어떤 일이 일어나는지 살펴볼 수 있도록 중첩된 디렉터리 구조를 만듭니다.

  1. 다음 명령어를 실행합니다.
mkdir firstlevel mkdir ./firstlevel/secondlevel cp setup.html firstlevel cp setup.html firstlevel/secondlevel
  1. 다음 명령어를 실행하여 VM의 첫 번째 수준 디렉터리를 버킷과 동기화합니다.
gsutil rsync -r ./firstlevel gs://$BUCKET_NAME_1/firstlevel

결과 검사

  1. Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 Cloud Storage > 버킷을 클릭합니다.
  2. [BUCKET_NAME_1]을 클릭합니다. 버킷 내의 하위 폴더를 확인하세요.
  3. /firstlevel/secondlevel을 차례로 클릭합니다.
  4. Cloud 콘솔에 표시된 내용을 다음 명령어의 결과와 비교해 봅니다.
gcloud storage ls -r gs://$BUCKET_NAME_1/firstlevel
  1. Cloud Shell을 종료합니다.
exit

작업 8. 프로젝트 간 공유

두 번째 프로젝트로 전환

  1. 새로운 시크릿 탭을 엽니다.
  2. console.cloud.google.com으로 이동하여 Cloud 콘솔을 엽니다.
  3. 제목 표시줄에서 프로젝트 선택기 드롭다운을 클릭합니다.
  4. 모두를 클릭한 후 Qwiklabs Connection Details 대화상자에 제공되는 두 번째 프로젝트를 클릭합니다. 참고로 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유한 이름입니다. 두 번째 프로젝트 ID는 [PROJECT_ID_2]에 사용됩니다.

버킷 준비

  1. Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 Cloud Storage > 버킷을 클릭합니다.
  2. 만들기를 클릭합니다.
  3. 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 값(지정된 대로 값 입력 또는 옵션 선택)
이름 전역적으로 고유한 이름 입력
위치 유형 리전
리전
액세스 제어 세분화(버킷 수준 권한 외에 객체 수준 권한도 사용)
  1. 버킷 이름을 기록해 둡니다. 이후 단계에서 [BUCKET_NAME_2]에 사용됩니다.
  2. 만들기를 클릭합니다.

텍스트 파일을 버킷에 업로드

  1. 파일을 [BUCKET_NAME_2]에 업로드합니다. 작은 예시 파일이나 텍스트 파일이면 됩니다.
  2. 파일 이름을 기록해 둡니다. 이후 [FILE_NAME]에 사용됩니다.

IAM 서비스 계정 만들기

  1. Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 IAM 및 관리자 > 서비스 계정을 클릭합니다.
  2. 서비스 계정 만들기를 클릭합니다.
  3. 서비스 계정 세부정보 페이지에서 서비스 계정 이름cross-project-storage로 지정합니다.
  4. 만들고 계속하기를 클릭합니다.
  5. 서비스 계정 권한 페이지에서 역할을 Cloud Storage > 스토리지 객체 뷰어로 지정합니다.
  6. 계속을 클릭한 다음 완료를 클릭합니다.
  7. cross-project-storage 서비스 계정을 클릭하여 JSON 키를 추가합니다.
  8. 탭에서 키 추가 드롭다운을 클릭하고 새 키 만들기를 선택합니다.
  9. 키 유형으로 JSON을 선택하고 만들기를 클릭합니다. JSON 키 파일이 다운로드됩니다. 이후 단계에서 이 키 파일을 찾아 VM에 업로드해야 합니다.
  10. 닫기를 클릭합니다.
  11. 하드 드라이브에서 JSON 키 파일의 이름을 credentials.json으로 변경합니다.
  12. 상단 창에서 [PROJECT_ID_1]로 다시 전환합니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 두 번째 프로젝트에 리소스 만들기

VM 만들기

  1. 탐색 메뉴(탐색 메뉴 아이콘)에서 Compute Engine > VM 인스턴스를 클릭합니다.
  2. 인스턴스 만들기를 클릭합니다.
  3. 다음을 지정하고 나머지 설정은 기본값으로 둡니다.
속성 값(지정된 대로 값 입력 또는 옵션 선택)
이름 crossproject
리전
영역
시리즈 E2
머신 유형 e2-medium
부팅 디스크 Debian GNU/Linux 11(bullseye)
  1. 만들기를 클릭합니다.

SSH를 통해 VM 연결

  1. crossproject에서 SSH를 클릭하여 터미널을 실행하고 연결합니다.
참고: Cloud Identity-Aware Proxy를 통한 연결에 실패함과 같은 메시지가 표시되면 IAP(Identity-Aware Proxy) 없이 연결을 클릭합니다.
  1. 환경 변수에 [BUCKET_NAME_2]를 저장합니다.
export BUCKET_NAME_2=<여기에 버킷 이름 2 입력>
  1. echo를 사용하여 값을 확인합니다.
echo $BUCKET_NAME_2
  1. 환경 변수에 [FILE_NAME]을 저장합니다.
export FILE_NAME=<여기에 FILE_NAME 입력>
  1. echo를 사용하여 값을 확인합니다.
echo $FILE_NAME
  1. [PROJECT_ID_2]의 파일을 나열합니다.
gcloud storage ls gs://$BUCKET_NAME_2/

결과(출력 예시입니다):

AccessDeniedException: 403 404513585876-compute@developer.gserviceaccount.com does not have storage.objects.list access to the Google Cloud Storage bucket.

VM 승인

  1. SSH VM 터미널을 통해 credentials.json을 업로드하려면 오른쪽 상단의 위쪽 화살표 아이콘(업로드 아이콘)을 클릭한 다음 파일 업로드를 클릭합니다.
  2. credentials.json을 선택하여 업로드합니다.
  3. 파일 전송 창에서 닫기를 클릭합니다.
  4. JSON 파일이 VM에 업로드되었는지 확인합니다.
ls

결과(출력 예시입니다):

credentials.json
  1. 터미널에 다음 명령어를 입력하여 VM이 Google Cloud API를 사용하도록 승인합니다.
gcloud auth activate-service-account --key-file credentials.json

참고: 사용 중인 이미지에 Google Cloud SDK가 미리 설치되어 있으므로 Google Cloud SDK를 초기화하지 않아도 됩니다.

다른 환경에서 이 실습을 하려면 Google Cloud SDK 설치에 관한 gcloud CLI 설치 가이드에서 다음 절차를 따르세요.

액세스 확인

  1. 다음 명령어를 다시 실행합니다.
gcloud storage ls gs://$BUCKET_NAME_2/
  1. 다음 명령어를 다시 실행합니다.
gcloud storage cat gs://$BUCKET_NAME_2/$FILE_NAME
  1. 사용자 인증 정보 파일을 버킷에 복사합니다.
gcloud storage cp credentials.json gs://$BUCKET_NAME_2/

결과(출력 예시입니다):

Copying file://credentials.json [Content-Type=application/json]... AccessDeniedException: 403 cross-project-storage@qwiklabs-gcp-02-c638e3daa975.iam.gserviceaccount.com does not have storage.objects.create access to the Google Cloud Storage object.

역할 수정

  1. 상단 창에서 [PROJECT_ID_2]로 다시 전환합니다.
  2. Cloud 콘솔의 탐색 메뉴(탐색 메뉴 아이콘)에서 IAM 및 관리자 > IAM을 클릭합니다.
  3. cross-project-storage 서비스 계정의 연필 아이콘을 클릭합니다. 오른쪽으로 스크롤해야 이 아이콘이 표시될 수도 있습니다.
  4. 스토리지 객체 뷰어 역할을 클릭한 다음 Cloud Storage > 스토리지 객체 관리자를 클릭합니다.
  5. 저장을 클릭합니다. 저장을 클릭하지 않으면 변경사항이 적용되지 않습니다.

내 진행 상황 확인하기를 클릭하여 목표를 확인합니다. 첫 번째 프로젝트에서 리소스 만들기 및 확인

변경된 액세스 확인

  1. crossproject의 SSH 터미널로 돌아갑니다.
  2. 사용자 인증 정보 파일을 버킷에 복사합니다.
gcloud storage cp credentials.json gs://$BUCKET_NAME_2/

결과(출력 예시입니다):

Copying file://credentials.json [Content-Type=application/json]... - [1 files][ 2.3 KiB/ 2.3 KiB] Operation completed over 1 objects/2.3 KiB.

참고: 이 예시에서 PROJECT_ID_1의 VM은 이제 다른 프로젝트에서 만든 버킷의 Cloud Storage에 파일을 업로드할 수 있습니다.

참고로, 버킷이 만들어진 프로젝트가 이 활동의 결제 프로젝트입니다. 즉, VM에서 많은 파일을 업로드하면 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의 상표입니다. 기타 모든 회사명 및 제품명은 해당 업체의 상표일 수 있습니다.