JINIers
[PCKCloud Storage lab 본문
※ 수정
220921
버킷명 : storage_bucket_song / storage_bucket_song2
작업 1. 준비
cloud storage > browser > create bucket > 구글 지정 값 설정 : storage_bucket_song > create
작업 2. 액세스 제어목록(ACL)
export BUCKET_NAME_1=storage_bucket_song
echo $BUCKET_NAME_1
curl \
https://hadoop.apache.org/docs/current/\
hadoop-project-dist/hadoop-common/\
ClusterSetup.html > setup.html
cp setup.html setup2.html
cp setup.html setup3.html
첫번째 파일 버킷에 복사
gsutil cp setup.html gs://$BUCKET_NAME_1/
[기본 액세스 목록 가져오기]
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl.txt
cat acl.txt
[액세스 목록을 비공개로 설정하고 결과 확인]
gsutil acl set private gs://$BUCKET_NAME_1/setup.html
gsutil acl get gs://$BUCKET_NAME_1/setup.html > acl2.txt
cat acl2.txt
[파일을 공개적으로 읽을 수 있도록 액세스 목록을 업데이트]
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
[console에서 파일검사]
cloud storage > browser > bucket 클릭 > setup.html에 대한 공개 링크 있는지 확인
https://storage.googleapis.com/storage_bucket_song/setup.html
[로컬파일 삭제 후 cloud storage에서 다시 복사]
rm setup.html
ls
gsutil cp gs://$BUCKET_NAME_1/setup.html setup.html
작업 3. 고객 제공 암호화 키(CSEK)
[CSEK 키 생성]
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
ls -al
[파일암호화]
nano .boto
* boto 파일 비어있으면 gsutil config -n 후 boto 파일 열기
** 여전히 비어있으면 .gsutil version -l 후 .boto 파일 찾아서 열기
encryption_key= ~ = // 대충 19번째 페이지 어딘가에 있음, 파일암호화
[나머지 설정파일(암호화)을 업로드 후 console에서 확인]
gsutil cp setup2.html gs://$BUCKET_NAME_1/
gsutil cp setup3.html gs://$BUCKET_NAME_1/
cloud storage > browser > 생성버킷 확인
* setup.html / setup2.html / setup3.html 전부 생성
** setup2.html, setup3.html은 암호화한 파일임(키 생성해서 boto 파일에 입력 후 업로드 했으니까)
[로컬 파일 삭제, 새 파일 복사 및 암호화 확인]
rm setup*
버킷에 파일 다시 복사
gsutil cp gs://$BUCKET_NAME_1/setup* ./
파일 복구 되었는지 명령 확인
cat setup.html
cat setup2.html
cat setup3.html
작업 4. CESK 키 회전
[CSEK 암호화키 이용 키 해독]
nano .boto
# .boto
#주석처리
encryption_key
#암호키값 설정(파일복호화)
decryption_key1=71T/GtC2evnt2NYoi/dJIvVeFQq0xdMiv4bMbdvwqS0=
[다른 csek 키 생성 & boto 파일에 추가(새 키 암호화)]
csek 새 키 생성
python3 -c 'import base64; import os; print(base64.encodebytes(os.urandom(32)))'
키값 : ~ =
nano .boto
# .boto 새 키 암호화 설정
encryption_key=toJZx7w0E506qFCYzPQmJrwqCgxqIba1VSlRclK7HWo= ~
[파일 1의 키 다시작성/이전 암호해독 키 주석처리]
기존키 복호화, 새 키로 다시 암호화
gsutil rewrite -k gs://$BUCKET_NAME_1/setup2.html
nano .boto
--복호화 주석처리--
#decryption_key1=71T/GtC2evnt2NYoi/dJIvVeFQq0xdMiv4bMbdvwqS0=
설정 2 및 설정 3 다른 파일명으로 다운로드
새로 암호화 했기 때문에 다운로드 성공
gsutil cp gs://$BUCKET_NAME_1/setup2.html recover2.html
기존키 복호화, 새 키 암호화 하지 않음 → 다운로드 실패
gsutil cp gs://$BUCKET_NAME_1/setup3.html recover3.html
작업 5. 수명주기 관리 활성화
[버킷의 현재 수명주기 정책 보기]
gsutil lifecycle get gs://$BUCKET_NAME_1
# 없음이라고 뜸
nano life.json
아래내용으로 작성
{
"rule":
[
{
"action": {"type": "Delete"},
"condition": {"age": 31}
}
]
}
[정책설정 및 확인]
정책 설정
gsutil lifecycle set life.json gs://$BUCKET_NAME_1
정책 확인
gsutil lifecycle get gs://$BUCKET_NAME_1
작업 6. 버전 관리 활성화
버킷 현재 버전 관리상태 확인
gsutil versioning get gs://$BUCKET_NAME_1
버킷관리 활성화
gsutil versioning set on gs://$BUCKET_NAME_1
버전 관리 활성화 확인
gsutil versioning get gs://$BUCKET_NAME_1
[버킷에 여러버전의 샘플파일 생성]
샘플파일 크기 확인
ls -al setup.html
버전 1 만들기
nano setup.html
* vi를 써도 무방
파일 내용 변경 후 저장
파일을 버킷에 복사
gsutil cp -v setup.html gs://$BUCKET_NAME_1
버전 2 만들기
nano setup.html
5줄 삭제 후 저장
파일을 버킷에 복사
gsutil cp -v setup.html gs://$BUCKET_NAME_1
[파일의 모든 버전 나열]
gsutil ls -a gs://$BUCKET_NAME_1/setup.html
파일의 제일 오래된 버전 복사
gs://storage_bucket_song/setup.html#1643068443750818
gs://storage_bucket_song/setup.html#1643070972931914
gs://storage_bucket_song/setup.html#1643070998559240
환경변수 version_name 값 저장
export VERSION_NAME=gs://storage_bucket_song/setup.html#1643068443750818
변수 확인
echo $VERSION_NAME
[파일 가장 오래된 원본버전 다운 후 복구 확인]
파일 원본버전 다운로드
gsutil cp $VERSION_NAME recovered.txt
ls -al setup.html
#복구 확인
ls -al recovered.txt
작업 7. 디렉터리 버킷에 동기화
[중첩디렉토리 만들고 버킷과 동기화]
#한줄씩 복사해서 입력
mkdir firstlevel
mkdir ./firstlevel/secondlevel
cp setup.html firstlevel
cp setup.html firstlevel/secondlevel
vm의 첫번째 수준 디렉토리를 버킷과 동기화
gsutil rsync -r ./firstlevel gs://$BUCKET_NAME_1/firstlevel
[결과 검토]
cloud storage > browser > 버킷 클릭 > 버킷 하위폴더 확인(firstlevel/) > / secondlevel 확인
출력 내용과 결과 비교
gsutil ls -r gs://$BUCKET_NAME_1/firstlevel
작업 8. 프로젝트 간 공유
시크릿탭 새로 열기 > console.cloud.google.com 이동 > 두번째 gcp 프로젝트 id로 로그인
플젝2 탭
storage > browser > create bucket > 구글이 지정한대로 설정 > create > 파일 업로드
iam & admin > service account > create service account > name : cross-project-storage / role : storage object viewer > done
cross-project-storage의 management key 탭 > add key > create key > json key값 다운로드 및 이름변경
플젝1탭
vm 만들기 > 구글이 설정한대로 만들엉 > ssh 접속
[환경변수 저장 및 확인]
export BUCKET_NAME_2=storage_bucket_song2
echo $BUCKET_NAME_2
export FILE_NAME=test.txt
echo $FILE_NAME
파일 나열, 액세스 권한이 없다고 뜸
gsutil ls gs://$BUCKET_NAME_2/
ssh 설정에서 credentials.json 파일 업로드
json 파일 업로드 확인
ls
vm이 API 사용하도록 승인
gcloud auth activate-service-account --key-file credentials.json
[액세스 확인]
버킷,파일 확인
gsutil ls gs://$BUCKET_NAME_2/
파일내용까지 확인
gsutil cat gs://$BUCKET_NAME_2/$FILE_NAME
카피 하려고 하면 안댐(권한이 없음)
gsutil cp credentials.json gs://$BUCKET_NAME_2/
플젝 2 탭
[역할 수정]
iam & admin > iam > cross-project-storage 서비스계정 권한 수정 > storage object viewer → storage object admin > save
자격증명 파일 버킷에 복사
crossproject ssh > gsutil cp credentials.json gs://$BUCKET_NAME_2/
복사되었다고 뜸
끗
'GCP > Qwiklabs' 카테고리의 다른 글
[PCK] Configuring an HTTP Load Balancer with Autoscaling lab (0) | 2022.01.28 |
---|---|
[PCK] Storage and Database Service : Cloud SQL 구현 lab (0) | 2022.01.26 |
[PCK] Cloud IAM lab (0) | 2022.01.24 |
[PCK] VPN (0) | 2022.01.24 |
[PCK] Implement Private Google Access and Cloud NAT lab (0) | 2022.01.22 |