본문 바로가기
CSP (Cloud Service Provider)/GCP

GCP KMS Hands-On

by BTC_김회장 2023. 5. 21.

베하~ !

 

안녕하세요  인사통의 BTC_김회장,최총무입니다.

저번시간에  GCP KMS(Key Management Service)가 어떤건지 배워봤죠?  

GCP KMS(Key Management System) (tistory.com)

 

GCP KMS(Key Management System)

베하~! 안녕하세요 인사통의 BTC_김회장,최총무입니다. 미국의 바이든 대통령이 취임후 Zero trust security 즉 그누구도 믿을수 없다는 보안정책을 강조한 만큼 보안은 클라우드 산업에도 중요하게

btcd.tistory.com

 

그럼 오늘은 이어서 저번에 말씀드렸던 GCP KMS를 Hand-on을 통해서 데이터를 만들고 키를이용해 암호화와 복호화를 해보는 실습 진행해보도록 하겠습니다.

먼저 여러분!~ 실습을 위해 Activate Cloud Shell을 켜주세요!

이런 창이 뜨면 성공입니다!

 

그럼 시작해보겠습니다!

 

1. 클라우드 KMS 서비스 활성화

Cloud KMS를 사용하려면 먼저 프로젝트에서 서비스를 활성화해야 합니다. 

이 작업은 프로젝트당 한 번만 수행하면 됩니다.

클라우드 KMS 서비스를 사용하도록 설정하려면 다음 명령을 실행합니다.

 

 $ gcloud services enable cloudkms.googleapis.com \ --project "${GOOGLE_CLOUD_PROJECT}

 

2. KMS 키 생성

클라우드 KMS 키 링을 생성합니다.

Cloud KMS에서 키 링은 암호화 키의 논리적 모음입니다. 

키 링에는 위치와 같은 키에 대한 메타데이터가 포함되어 있습니다. 

영역에 이름이 지정된 키 링을 만듭니다.my-keyringglobal ##특정 지역으로 설정할 수도 있습니다 

 

$ gcloud kms keyrings create "my-keyring" \ --location "global"

해당 키링이 생성된 모습

이제 방금 만든 키 링 안에 목적과 함께 명명된 암호화 키를 만듭니다.

 $ gcloud kms keys create "my-symmetric-key" \

 --location "global" \

 --keyring "my-keyring" \

 --purpose "encryption"

my-keyring라는 키링 안에 my-symmetric-key라는 키가 생성 되었습니다.

3. 데이터 암호화

암호화할 데이터가 있는 파일을 만들고 명령줄 도구를 사용하여 파일의 데이터를 암호화합니다. $ gcloud 

 

$ echo -n "Some text to be encrypted" > mysecret.txt 

암복호화할 데이터 파일(mysecret.txt) 을 하나 만들었습니다

생성된 mysecret.txt 데이터 파일
cat 명령어로 해당 파일의 내용을 확인해 봅니다.

$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./mysecret.txt \
    --ciphertext-file ./mysecret.txt.encrypted

해당 명령어를 통해서  데이터 파일을 KMS key를 통해 암호화 합니다.

암호화 진행후 mysecret.txt.encrypted 파일이 생성된 모습을 볼 수 있습니다.
키로 해당 내용이 암호화가 되었습니다.

4. 데이터 암호 해독

명령줄 도구를 사용하여 파일에서 암호문을 해독합니다.gcloud

gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --ciphertext-file ./mysecret.txt.encrypted \
    --plaintext-file ./mysecret.txt.decrypted

mysecret.txt.decrypted 라는 복호화된 파일이 생성됐습니다.

5. 키 회전

새 암호화 키 버전을 생성하여 키 회전을 수행할 수 있습니다.

클라우드 KMS는 일정에 따라 키를 자동으로 교체할 수도 있습니다.

키를 수동으로 회전하려면 새 암호화 키 버전을 만들고 기본 버전으로 설정합니다. 

 

새로운 버전의 키를 생성하는 명령어 입니다.

$ gcloud kms keys versions create \

 --location "global" \

 --keyring "my-keyring" \

 --key "my-symmetric-key" \

 --primary

입력시 아래 문장 송출

############## Successfully created key version [2] and set it as the primary version. Future encryption requests will use [2] until the next key rotation. Data that was encrypted with an older key version can still be decrypted, and Cloud KMS will automatically choose the correct key for decryption based on the ciphertext.

 키 버전[2]을 성공적으로 생성하고 기본 버전으로 설정했습니다. 향후 암호화 요청은 다음 키 순환까지 [2]를 사용합니다. 이전 키 버전으로 암호화된 데이터는 여전히 복호화될 수 있으며 Cloud KMS는 암호문을 기반으로 올바른 복호화 키를 자동으로 선택합니다. #############

버전 2가 새로 생성된 모습

이후의 모든 데이터 암호화 요청은 이 새 키를 사용합니다. 

이전 키는 해당 키를 사용하여 이전에 암호화된 데이터의 암호를 해독하는 데 계속 사용할 수 있습니다.

 

Cloud KMS는 제공된 암호문에 따라 적절한 암호 해독 키를 자동으로 결정하므로 암호 해독에 사용할 암호화 키 버전을 지정할 필요가 없습니다!

 

마지막으로 키를 비활성화 해보겠습니다.

6. 키 비활성화

처음으로 생성된 1버전의 키를 비활성화 하는 명령어입니다.

 

$ gcloud kms keys versions disable "1" \

 --location "global" \

 --keyring "my-keyring" \

 --key "my-symmetric-key"

기존의 활성화 되어 있는 키
해당 명령어 입력
키 비활성화 완료

 

이상으로 GCP KMS를 사용해서 data 파일을 만들고 암호화와 복호화를 진행해봤습니다.

 

다음에도 더욱더 유익하고 좋은 정보로 찾아뵙겠습니다.

댓글