Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

JINIers

[PCKCloud Storage lab 본문

GCP/Qwiklabs

[PCKCloud Storage lab

JINIers 2022. 1. 25. 11:56

※ 수정

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/

복사되었다고 뜸

 

Comments