이 주제에서는 다음 대칭 키 작업을 수행하는 방법을 설명합니다.
- Cloud Key Management Service 키를 사용하여 텍스트 또는 바이너리 콘텐츠(일반 텍스트)를 암호화합니다.
- Cloud KMS 키로 암호화된 암호문을 복호화합니다.
암호화에 비대칭 키를 사용하려는 경우 비대칭 키로 데이터 암호화 및 복호화를 참조하세요. 원시 대칭 암호화에 대한 자세한 내용은 원시 대칭 암호화를 참조하세요.
시작하기 전에
키링 및 키 만들기의 설명대로 키링과 키를 만듭니다.
암호화 메서드와 복호화 메서드를 호출하는 사용자에게 암호화 또는 복호화에 사용되는 키에 대한
cloudkms.cryptoKeyVersions.useToEncrypt
권한과cloudkms.cryptoKeyVersions.useToDecrypt
권한이 있는지 확인합니다.사용자가 암호화하거나 복호화할 수 있도록 허용하는 한 가지 방법은 사용자를 키의
roles/cloudkms.cryptoKeyEncrypter
,roles/cloudkms.cryptoKeyDecrypter
또는roles/cloudkms.cryptoKeyEncrypterDecrypter
IAM 역할에 추가하는 것입니다.roles/cloudkms.admin
역할은 이 두 가지 권한을 제공하지 않습니다. 자세한 내용은 권한 및 역할을 참조하세요.
암호화
gcloud
명령줄에서 Cloud KMS를 사용하려면 먼저 최신 버전의 Google Cloud CLI로 설치 또는 업그레이드하세요.
gcloud kms encrypt \ --key key \ --keyring key-ring \ --location location \ --plaintext-file file-with-data-to-encrypt \ --ciphertext-file file-to-store-encrypted-data
key를 암호화에 사용할 키 이름으로 바꿉니다. key-ring을 키가 배치된 키링의 이름으로 바꿉니다. location을 키링의 Cloud KMS 위치로 바꿉니다. file-with-data-to-encrypt 및 file-to-store-encrypted-data를 일반 텍스트 데이터를 읽고 암호화된 출력을 저장하기 위한 로컬 파일 경로로 바꿉니다.
모든 플래그 및 가능한 값에 대한 정보를 보려면 --help
플래그와 함께 명령어를 실행하세요.
C#
이 코드를 실행하려면 먼저 C# 개발 환경을 설정하고 Cloud KMS C# SDK를 설치합니다.
Go
이 코드를 실행하려면 먼저 Go 개발 환경을 설정하고 Cloud KMS Go SDK를 설치합니다.
Java
이 코드를 실행하려면 먼저 자바 개발 환경을 설정하고 Cloud KMS 자바 SDK를 설치합니다.
Node.js
이 코드를 실행하려면 먼저 Node.js 개발 환경을 설정하고 Cloud KMS Node.js SDK를 설치합니다.
PHP
이 코드를 실행하려면 먼저 Google Cloud에서 PHP 사용에 관해 알아보고 Cloud KMS PHP SDK 설치하세요.
Python
이 코드를 실행하려면 먼저 Python 개발 환경을 설정하고 Cloud KMS Python SDK를 설치합니다.
Ruby
이 코드를 실행하려면 먼저 Ruby 개발 환경을 설정하고 Cloud KMS Ruby SDK를 설치합니다.
API
이 예시에서는 curl을 HTTP 클라이언트로 사용하여 API 사용을 보여줍니다. 액세스 제어에 대한 자세한 내용은 Cloud KMS API 액세스를 참조하세요.
JSON 및 REST API를 사용하는 경우 콘텐츠를 base-64로 인코딩해야 Cloud KMS에서 암호화할 수 있습니다.
데이터를 암호화하려면 POST
요청을 보내고, 적절한 프로젝트와 키 정보를 제공하고, 요청 본문의 plaintext
필드에 암호화할 base64로 인코딩된 텍스트를 지정합니다.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:encrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"base64-encoded-input\"}"
다음은 base64로 인코딩된 데이터가 포함된 페이로드의 예시입니다.
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
복호화
gcloud
명령줄에서 Cloud KMS를 사용하려면 먼저 최신 버전의 Google Cloud CLI로 설치 또는 업그레이드하세요.
gcloud kms decrypt \ --key key \ --keyring key-ring \ --location location \ --ciphertext-file file-path-with-encrypted-data \ --plaintext-file file-path-to-store-plaintext
key를 복호화에 사용할 키 이름으로 바꿉니다. key-ring을 키를 배치할 키링의 이름으로 바꿉니다. location을 키링의 Cloud KMS 위치로 바꿉니다. file-path-with-encrypted-data 및 file-path-to-store-plaintext를 암호화된 데이터를 읽고 복호화된 출력을 저장할 로컬 파일 경로로 바꿉니다.
모든 플래그 및 가능한 값에 대한 정보를 보려면 --help
플래그와 함께 명령어를 실행하세요.
C#
이 코드를 실행하려면 먼저 C# 개발 환경을 설정하고 Cloud KMS C# SDK를 설치합니다.
Go
이 코드를 실행하려면 먼저 Go 개발 환경을 설정하고 Cloud KMS Go SDK를 설치합니다.
Java
이 코드를 실행하려면 먼저 자바 개발 환경을 설정하고 Cloud KMS 자바 SDK를 설치합니다.
Node.js
이 코드를 실행하려면 먼저 Node.js 개발 환경을 설정하고 Cloud KMS Node.js SDK를 설치합니다.
PHP
이 코드를 실행하려면 먼저 Google Cloud에서 PHP 사용에 관해 알아보고 Cloud KMS PHP SDK 설치하세요.
Python
이 코드를 실행하려면 먼저 Python 개발 환경을 설정하고 Cloud KMS Python SDK를 설치합니다.
Ruby
이 코드를 실행하려면 먼저 Ruby 개발 환경을 설정하고 Cloud KMS Ruby SDK를 설치합니다.
API
이 예시에서는 curl을 HTTP 클라이언트로 사용하여 API 사용을 보여줍니다. 액세스 제어에 대한 자세한 내용은 Cloud KMS API 액세스를 참조하세요.
Cloud KMS에서 JSON으로 반환된 복호화된 텍스트는 base64로 인코딩됩니다.
암호화된 데이터를 복호화하려면 POST
요청을 보내고, 적절한 프로젝트와 키 정보를 제공하고, 요청 본문의 ciphertext
필드에 복호화할 암호화된 텍스트를 지정합니다.
curl "https://cloudkms.googleapis.com/v1/projects/project-id/locations/location/keyRings/key-ring-name/cryptoKeys/key-name:decrypt" \ --request "POST" \ --header "authorization: Bearer token" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"encrypted-content\"}"
다음은 base64로 인코딩된 데이터가 포함된 페이로드의 예시입니다.
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
다음 단계
- 원시 대칭 암호화 자세히 알아보기
- 봉투 암호화 자세히 알아보기
- Cloud KMS Codelab으로 데이터 암호화 및 복호화 사용해 보기