Cloud KMS로 데이터 암호화 및 복호화

Cloud KMS 는 온 프레미스에서와 동일한 방식으로 클라우드 서비스의 암호화 키를 관리 할 수있는 클라우드 호스팅 키 관리 서비스입니다. 여기에는 하드웨어 지원 키용 Cloud HSM 을 비롯한 다양한 키 유형 및 소스를 사용한 암호화, 복호화, 서명 및 확인에 대한 지원이 포함됩니다. 이 가이드에서는 대칭 Cloud KMS 키를 사용하여 데이터를 암호화 및 복호화하는 방법을 설명합니다.

당신 은 배울 것입니다

  • Cloud KMS API를 사용 설정하는 방법
  • Cloud KMS 키링을 만드는 방법
  • 대칭 암호화 / 복호화를위한 Cloud KMS 암호화 키를 만드는 방법
  • 대칭 Cloud KMS 암호화 키를 교체하는 방법

자기 주도형 환경 설정

  1. Cloud Console에 로그인하고 새 프로젝트를 만들거나 기존 프로젝트를 재사용하세요. (아직 Gmail 또는 G Suite 계정이없는 경우 계정을 만들어야 합니다.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXtd8PvXGpXtd8PvXGp

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DqQdkuzGp4rsQTan7

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jASc-lgPGFjCVNgASc-UJCAnqvEX6NgPGFjCVEX6NgPGFjCVEX6NgPGFjCVEX6Ng

모든 GCP 프로젝트에서 고유 한 이름 인 프로젝트 ID를 기억하세요 (위의 이름은 이미 사용되었으므로 작동하지 않습니다. 죄송합니다!). 이 코드 랩에서는 나중에 PROJECT_ID 라고합니다.

  1. 다음으로 Google Cloud 리소스를 사용하려면 Cloud Console에서 결제사용 설정 해야합니다.

이 코드 랩을 실행하는 데 비용이 많이 들지는 않습니다. 이 자습서 이후에 비용이 청구되지 않도록 리소스를 종료하는 방법을 안내하는 "정리"섹션의 지침을 따르십시오. Google Cloud 신규 사용자는 $ 300USD 무료 평가판 프로그램을 사용할 수 있습니다.

Cloud Shell 시작

이 Codelab에서는 GCP에서 실행되는 무료 가상화 환경 인 Cloud Shell 을 사용합니다. GCP Console에서 오른쪽 상단 툴바에있는 Cloud Shell 아이콘을 클릭합니다.

vezHz_9nBUSt_0pD8eMHkzgHehRa83ILgMpcztEJtGZspECiZTk47O02PYk6Zp7jyStful3AIDEZU8qcCNbiXF4WcpkUdJi2LoUbxTWg4cZ4skDnvGKNywBZlDBzzWha111IZ1KqXQKNywBZlDBzzWha111IZ1

환경을 프로비저닝하고 연결하는 데 몇 분 밖에 걸리지 않습니다. 완료되면 다음과 같은 내용이 표시됩니다.

wQQCzLZ7_omk2cuoBaKVPnniKDFG6MsP8h2OA0j3Iw9LRSFQ9TkD6Ccq4dcUASPoD5UKe1Ur7bIgYn5gAh2r6BlQDnpFmgyAtv9xVeduekc2hgUpfjfxD6ppXS0pfjfxD6ppXS0pfjfx

이 가상 머신에는 필요한 모든 개발 도구가 포함되어 있습니다. 영구 5GB 홈 디렉토리를 제공하고 Google Cloud에서 실행되어 네트워크 성능과 인증을 크게 향상시킵니다. 달리 지시되지 않는 한이 쉘에서 모든 명령을 실행하십시오.

Cloud KMS를 사용하려면 먼저 프로젝트에서 서비스를 사용 설정해야합니다. 이 작업은 프로젝트 당 한 번만 수행하면됩니다. Cloud KMS 서비스를 사용하려면 다음 명령어를 실행하세요.

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

활성화하는 데 최대 1 분이 소요될 수 있습니다. 명령이 완료되면 성공을보고합니다.

Cloud KMS 키링을 만듭니다. Cloud KMS에서 키링은 암호화 키의 논리적 모음입니다. 키 링에는 위치와 같은 키에 대한 메타 데이터가 포함됩니다. global 지역에 my-keyring 이라는 이름 my-keyring 을 만듭니다.

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

이제 방금 만든 키 링 내부에 목적 encryption 사용하여 my-symmetric-key 라는 이름의 암호화 키를 만듭니다.

$ gcloud kms keys create "my-symmetric-key" \
    --location "global" \
    --keyring "my-keyring" \
    --purpose "encryption"

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

$ echo "my-contents" > ./data.txt
$ gcloud kms encrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file ./data.txt \
    --ciphertext-file ./data.txt.enc

암호화 된 데이터 ( "ciphertext"라고도 함)는 디스크의 data.txt.enc 에 저장됩니다. data.txt.enc 파일을 열면 이상한, 인쇄 할 수없는 문자가 있음을 알 수 있습니다. 결과 데이터가 이진 형식 이기 때문 입니다 .

암호문을 데이터베이스에 저장하거나 HTTP 요청의 일부로 전송할 때 데이터를 인코딩 해야 할 수 있습니다. 일반적인 인코딩 메커니즘은 base64입니다.

Cloud KMS는 사용자가 제공하는 일반 텍스트를 저장 하지 않습니다. 이 암호문은 일반 텍스트 값을 검색하는 데 필요하므로 안전한 위치에 저장해야합니다.

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

$ gcloud kms decrypt \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --plaintext-file - \
    --ciphertext-file ./data.txt.enc

gcloud 명령 줄 도구는 파일에서 암호문을 읽고 Cloud KMS를 사용하여 복호화합니다. 이 예제는 --plaintext-file 인수를 - 로 지정합니다. 이렇게하면 gcloud 가 결과를 터미널에 인쇄하도록 지시합니다.

콘솔은 위 파일의 일반 텍스트 값과 동일한 my-contents 를 인쇄합니다.

Cloud KMS에서 암호화 키는 실제로 암호화 키 버전 모음입니다. 새 암호화 키 버전을 만들어 키 순환 을 수행 할 수 있습니다. Cloud KMS는 일정에 따라 키를 자동으로 교체 할 수도 있습니다.

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

$ gcloud kms keys versions create \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key" \
    --primary

이후의 모든 데이터 암호화 요청은이 새 키를 사용합니다. 이전 키를 사용하여 이전에 암호화 된 데이터를 해독하는 데 여전히 이전 키를 사용할 수 있습니다. Cloud KMS는 제공된 암호문을 기반으로 적절한 복호화 키를 자동으로 결정합니다. 복호화에 사용할 암호화 키 버전을 지정할 필요가 없습니다.

이전 암호화 키 버전을 사용하여 암호화 된 암호문 값이 Cloud KMS를 사용하여 복호화되는 것을 방지하려면 해당 암호화 키 버전을 사용 중지하거나 파기 할 수 있습니다. 비활성화는 되돌릴 수있는 작업이지만 파괴는 영구적입니다. 버전을 비활성화하려면 :

$ gcloud kms keys versions disable "1" \
    --location "global" \
    --keyring "my-keyring" \
    --key "my-symmetric-key"

Cloud KMS API를 사용 설정하고 대칭 암호화 키를 만들고 데이터를 암호화 및 복호화했습니다. Cloud KMS는 강력한 제품이며 암호화 / 복호화는 그 기능의 표면에 불과합니다.

정리

탐색이 끝나면 프로젝트 삭제를 고려하십시오.

  • Cloud Platform 콘솔로 이동
  • 종료 할 프로젝트를 선택한 다음 상단의 "삭제"를 클릭하십시오. 삭제를 위해 프로젝트를 예약합니다.

더 알아보기

특허

이 저작물은 Creative Commons Attribution 2.0 Generic License에 따라 사용이 허가되었습니다.