์ด ์ฃผ์ ์์๋ Cloud HSM์ ๊ฐ์๋ฅผ ์ดํด๋ณด๊ณ Cloud Key Management Service์์ HSM์ผ๋ก ๋ณดํธ๋๋ ์ํธํ ํค๋ฅผ ๋ง๋ค๊ณ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ์ค๋๋ค.
Cloud HSM์ด๋ ๋ฌด์์ธ๊ฐ์?
Cloud HSM์ ํด๋ผ์ฐ๋์ ํธ์คํ ๋๋ ํ๋์จ์ด ๋ณด์ ๋ชจ๋(HSM) ์๋น์ค๋ก, ์ด ์๋น์ค๋ฅผ ์ฌ์ฉํ๋ฉด FIPS 140-2 Level 3 ์ธ์ฆ HSM ํด๋ฌ์คํฐ์์ ์ํธํ ํค๋ฅผ ํธ์คํ ํ๊ณ ์ํธํ ์์ ์ ์ํํ ์ ์์ต๋๋ค. Google์ด HSM ํด๋ฌ์คํฐ๋ฅผ ๊ด๋ฆฌํ๋ฏ๋ก ๊ฐ๋ฐ์๋ ํด๋ฌ์คํฐ๋ง, ํ์ฅ ๋๋ ํจ์น ์ ์ฉ์ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋ฉ๋๋ค. Cloud HSM์ ํ๋ฐํธ์๋๋ก Cloud KMS๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๊ฐ๋ฐ์๋ Cloud KMS๊ฐ ์ ๊ณตํ๋ ๋ชจ๋ ํธ์์ฑ ๋ฐ ๊ธฐ๋ฅ์ ํ์ฉํ ์ ์์ต๋๋ค.
ํค๋ง ๋ง๋ค๊ธฐ
ํค๋ฅผ ๋ง๋ค ๋ ํน์ Google Cloud์์น์ ํค๋ง์ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค. ์ ํค๋ง์ ๋ง๋ค๊ฑฐ๋ ๊ธฐ์กด ํค๋ง์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ด ์ฃผ์ ์์๋ ์ ํค๋ง์ ๋ง๋ค๊ณ ๊ฑฐ๊ธฐ์ ์ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค.
Cloud HSM์ ์ง์ํ๋ Google Cloud ์์น์ ํค๋ง์ ๋ง๋ญ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ ํค ๊ด๋ฆฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํค๋ง ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
ํค๋ง ์ด๋ฆ์ ํค๋ง ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
ํค๋ง ์์น์์
"us-east1"
๊ณผ ๊ฐ์ ์์น๋ฅผ ์ ํํฉ๋๋ค.๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
-
In the Google Cloud console, activate Cloud Shell.
-
ํ๊ฒฝ์์
gcloud kms keyrings create
๋ช ๋ น์ด๋ฅผ ์คํํฉ๋๋ค.gcloud kms keyrings create KEY_RING \ --location LOCATION
๋ค์์ ๋ฐ๊ฟ๋๋ค.
KEY_RING
: ํค๊ฐ ํฌํจ๋ ํค๋ง์ ์ด๋ฆ์ ๋๋ค.LOCATION
: ํค๋ง์ Cloud KMS ์์น์ ๋๋ค.
๋ชจ๋ ํ๋๊ทธ ๋ฐ ๊ฐ๋ฅํ ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด
--help
ํ๋๊ทธ์ ํจ๊ป ๋ช ๋ น์ด๋ฅผ ์คํํ์ธ์. PROJECT_ID
: ํค๋ง์ด ํฌํจ๋ ํ๋ก์ ํธ์ ID์ ๋๋ค.KEY_RING
: ํค๊ฐ ํฌํจ๋ ํค๋ง์ ์ด๋ฆ์ ๋๋ค.LOCATION
: ํค๋ง์ Cloud KMS ์์น์ ๋๋ค.
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 ์ก์ธ์ค๋ฅผ ์ฐธ์กฐํ์ธ์.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING" \ --request "POST" \ --header "authorization: Bearer TOKEN"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
์์ธํ ๋ด์ฉ์ KeyRing.create
API ์ฐธ๊ณ ๋ฆฌ์์ค๋ฅผ ์ฐธ์กฐํ์ธ์.
ํค ๋ง๋ค๊ธฐ
์ง์ ๋ ํค๋ง ๋ฐ ์์น์ Cloud HSM ํค๋ฅผ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ ํค ๊ด๋ฆฌ ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
ํค๋ฅผ ๋ง๋ค ํค๋ง์ ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
ํค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ด๋ค ์ ํ์ ํค๋ฅผ ๋ง๋์๊ฒ ์ด์?์์ ์์ฑ๋ ํค๋ฅผ ์ ํํฉ๋๋ค.
ํค ์ด๋ฆ ํ๋์ ํค ์ด๋ฆ์ ์ ๋ ฅํฉ๋๋ค.
๋ณดํธ ์์ค ๋๋กญ๋ค์ด์ ํด๋ฆญํ๊ณ HSM์ ์ ํํฉ๋๋ค.
์ฉ๋ ๋๋กญ๋ค์ด์ ํด๋ฆญํ๊ณ ๋์นญ ์ํธํ/๋ณตํธํ๋ฅผ ์ ํํฉ๋๋ค.
์ํ ์ฃผ๊ธฐ ๋ฐ ์์์ผ์ ๊ธฐ๋ณธ๊ฐ์ ๊ทธ๋๋ก ์ฌ์ฉํฉ๋๋ค.
๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
๋ช ๋ น์ค์์ Cloud KMS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ์ต์ ๋ฒ์ ์ Google Cloud CLI๋ก ์ค์น ๋๋ ์ ๊ทธ๋ ์ด๋ํ์ธ์.
gcloud kms keys create key \ --keyring key-ring \ --location location \ --purpose "encryption" \ --protection-level "hsm"
key๋ฅผ ์ ํค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. key-ring์ ํค๋ฅผ ๋ฐฐ์นํ ๊ธฐ์กด ํค๋ง์ ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค. location์ ํค๋ง์ Cloud KMS ์์น๋ก ๋ฐ๊ฟ๋๋ค.
๋ชจ๋ ํ๋๊ทธ ๋ฐ ๊ฐ๋ฅํ ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด --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๋ฅผ ์ค์นํฉ๋๋ค.
๋ฐ์ดํฐ ์ํธํ
์ด์ ํค๊ฐ ์์ผ๋ฏ๋ก ํด๋น ํค๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธ ๋๋ ๋ฐ์ด๋๋ฆฌ ์ฝํ ์ธ ๋ฅผ ์ํธํํ ์ ์์ต๋๋ค.
gcloud
๋ช ๋ น์ค์์ Cloud KMS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ์ต์ ๋ฒ์ ์ Google Cloud CLI๋ก ์ค์น ๋๋ ์ ๊ทธ๋ ์ด๋ํ์ธ์.
gcloud kms encrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --plaintext-file FILE_TO_ENCRYPT \ --ciphertext-file ENCRYPTED_OUTPUT
๋ค์์ ๋ฐ๊ฟ๋๋ค.
KEY_NAME
: ์ํธํ์ ์ฌ์ฉํ ํค์ ์ด๋ฆ์ ๋๋ค.KEY_RING
: ํค๊ฐ ํฌํจ๋ ํค๋ง์ ์ด๋ฆ์ ๋๋ค.LOCATION
: ํค๋ง์ด ํฌํจ๋ Cloud KMS ์์น์ ๋๋ค.FILE_TO_ENCRYPT
: ์ํธํํ๋ ค๋ ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.ENCRYPTED_OUTPUT
: ์ํธํ๋ ์ถ๋ ฅ์ ์ ์ฅํ ๊ฒฝ๋ก์ ๋๋ค.
๋ชจ๋ ํ๋๊ทธ ๋ฐ ๊ฐ๋ฅํ ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด --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๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฝํ ์ธ ๋ฅผ base64๋ก ์ธ์ฝ๋ฉํด์ผ Cloud KMS์์ ์ํธํํ ์ ์์ต๋๋ค.
๋ฐ์ดํฐ๋ฅผ ์ํธํํ๋ ค๋ฉด POST
์์ฒญ์ ๋ณด๋ด๊ณ ์ ์ ํ ํ๋ก์ ํธ์ ํค ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ฉฐ ์์ฒญ ๋ณธ๋ฌธ์ plaintext
ํ๋์ ์ํธํํ base64๋ก ์ธ์ฝ๋ฉ๋ ํ
์คํธ๋ฅผ ์ง์ ํฉ๋๋ค.
curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME:encrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"plaintext\": \"PLAINTEXT_TO_ENCRYPT\"}"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ์ํธํ์ ์ฌ์ฉํ ํค๋ง๊ณผ ํค๊ฐ ํฌํจ๋ ํ๋ก์ ํธ์ ID์ ๋๋ค.LOCATION
: ํค๋ง์ด ํฌํจ๋ Cloud KMS ์์น์ ๋๋ค.KEY_RING
: ์ํธํ์ ์ฌ์ฉํ ํค๊ฐ ํฌํจ๋ ํค๋ง์ ๋๋ค.KEY_NAME
: ์ํธํ์ ์ฌ์ฉํ ํค์ ์ด๋ฆ์ ๋๋ค.PLAINTEXT_TO_ENCRYPT
: ์ํธํํ๋ ค๋ ์ผ๋ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ๋๋ค.encrypt
๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ์ผ๋ฐ ํ ์คํธ๋ฅผ base64๋ก ์ธ์ฝ๋ฉํด์ผ ํฉ๋๋ค.
๋ค์์ base64๋ก ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ์ด๋ก๋์ ์์์ ๋๋ค.
{ "plaintext": "U3VwZXIgc2VjcmV0IHRleHQgdGhhdCBtdXN0IGJlIGVuY3J5cHRlZAo=", }
์ํธ๋ฌธ ๋ณตํธํ
์ํธํ๋ ์ฝํ ์ธ ๋ฅผ ๋ณตํธํํ๋ ค๋ฉด ์ฝํ ์ธ ์ํธํ์ ์ฌ์ฉํ ํค์ ๋์ผํ ํค๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
gcloud
๋ช ๋ น์ค์์ Cloud KMS๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ์ต์ ๋ฒ์ ์ Google Cloud CLI๋ก ์ค์น ๋๋ ์ ๊ทธ๋ ์ด๋ํ์ธ์.
gcloud kms decrypt \ --key KEY_NAME \ --keyring KEY_RING \ --location LOCATION \ --ciphertext-file FILE_TO_DECRYPT \ --plaintext-file DECRYPTED_OUTPUT
๋ค์์ ๋ฐ๊ฟ๋๋ค.
KEY_NAME
: ๋ณตํธํ์ ์ฌ์ฉํ ํค์ ์ด๋ฆ์ ๋๋ค.KEY_RING
: ํค๊ฐ ํฌํจ๋ ํค๋ง์ ์ด๋ฆ์ ๋๋ค.LOCATION
: ํค๋ง์ด ํฌํจ๋ Cloud KMS ์์น์ ๋๋ค.FILE_TO_DECRYPT
: ๋ณตํธํํ๋ ค๋ ํ์ผ์ ๊ฒฝ๋ก์ ๋๋ค.DECRYPTED_OUTPUT
: ๋ณตํธํ๋ ์ถ๋ ฅ์ ์ ์ฅํ ๊ฒฝ๋ก์ ๋๋ค.
๋ชจ๋ ํ๋๊ทธ ๋ฐ ๊ฐ๋ฅํ ๊ฐ์ ๋ํ ์ ๋ณด๋ฅผ ๋ณด๋ ค๋ฉด --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/cryptoKeys/KEY_NAME:decrypt" \ --request "POST" \ --header "authorization: Bearer TOKEN" \ --header "content-type: application/json" \ --data "{\"ciphertext\": \"ENCRYPTED_DATA\"}"
๋ค์์ ๋ฐ๊ฟ๋๋ค.
PROJECT_ID
: ๋ณตํธํ์ ์ฌ์ฉํ ํค๋ง๊ณผ ํค๊ฐ ํฌํจ๋ ํ๋ก์ ํธ์ ID์ ๋๋ค.LOCATION
: ํค๋ง์ด ํฌํจ๋ Cloud KMS ์์น์ ๋๋ค.KEY_RING
: ๋ณตํธํ์ ์ฌ์ฉํ ํค๊ฐ ํฌํจ๋ ํค๋ง์ ๋๋ค.KEY_NAME
: ๋ณตํธํ์ ์ฌ์ฉํ ํค์ ์ด๋ฆ์ ๋๋ค.ENCRYPTED_DATA
: ๋ณตํธํํ๋ ค๋ ์ํธํ๋ ๋ฐ์ดํฐ์ ๋๋ค.
๋ค์์ base64๋ก ์ธ์ฝ๋ฉ๋ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋ ํ์ด๋ก๋์ ์์์ ๋๋ค.
{ "ciphertext": "CiQAhMwwBo61cHas7dDgifrUFs5zNzBJ2uZtVFq4ZPEl6fUVT4kSmQ...", }
๋ค์ ๋จ๊ณ
์ด ์ฃผ์ ์ ์ํธํ ์์์์๋ HSM ๋ณดํธ ์์ค์ผ๋ก ๋์นญ ํค๋ฅผ ์ฌ์ฉํ์ต๋๋ค. ๋ณดํธ ์์ค์ด HSM์ธ ๋น๋์นญ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํํ๋ ค๋ฉด ๋ค์์ ๋ณ๊ฒฝํ๊ณ ๋น๋์นญ ํค๋ก ๋ฐ์ดํฐ ์ํธํ ๋ฐ ๋ณตํธํ์ ๋จ๊ณ๋ฅผ ์ํํ์ธ์.
- Cloud HSM์ ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋์ ํค๋ง์ ๋ง๋ญ๋๋ค.
- HSM ๋ณดํธ ์์ค์ผ๋ก ํค๋ฅผ ๋ง๋ญ๋๋ค.
ํ์ ๊ณก์ ์๋ช ๋๋ RSA ์๋ช ์ ๋ณดํธ ์์ค์ด HSM์ธ ๋น๋์นญ ํค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ค์์ ๋ณ๊ฒฝํ๊ณ ์๋ช ๋ง๋ค๊ธฐ ๋ฐ ๊ฒ์ฆ ๋จ๊ณ๋ฅผ ์ํํ์ธ์.
- Cloud HSM์ ์ง์๋๋ ๋ฆฌ์ ์ค ํ๋์ ํค๋ง์ ๋ง๋ญ๋๋ค.
- HSM ๋ณดํธ ์์ค์ผ๋ก ํค๋ฅผ ๋ง๋ญ๋๋ค.
API ์ฌ์ฉ ์์
Cloud KMS API ์ฐธ์กฐ๋ฅผ ํ์ธํ์ธ์.
ํค์์ ๊ถํ ๋ง๋ค๊ธฐ, ์ํ, ์ค์ ์ ์์ํ๋ ์๋ด ๊ฐ์ด๋๋ฅผ ์ฝ์ต๋๋ค.
๊ฐ๋ ์ ์ฝ๊ณ ๊ฐ์ฒด ๊ณ์ธต ๊ตฌ์กฐ, ํค ์ํ, ํค ์ํ์ ์ดํดํฉ๋๋ค.
Cloud KMS์ Logging ์์๋ณด๊ธฐ ๋ก๊น ์ ์์ ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ฉฐ HSM ๋ฐ ์ํํธ์จ์ด ๋ณดํธ ์์ค์ด ๋ชจ๋ ์๋ ํค์ ์ ์ฉ๋ฉ๋๋ค.
Cloud HSM ์ํคํ ์ฒ ๋ฐฑ์์์ Cloud HSM์ด ๋ฐ์ดํฐ๋ฅผ ๋ณดํธํ๋ ๋ฐฉ๋ฒ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
์๋ ค์ง ์ ํ์ฌํญ
์ฌ์ฉ์ ์ ๊ณต ์ผ๋ฐ ํ ์คํธ์ ์ํธ๋ฌธ์์ ๋ฉ์์ง ํฌ๊ธฐ๋ ์ถ๊ฐ ์ธ์ฆ ๋ฐ์ดํฐ๋ฅผ ํฌํจํ์ฌ 8KiB๋ก ์ ํ๋ฉ๋๋ค(์ด์ ๋ค๋ฅด๊ฒ Cloud KMS ์ํํธ์จ์ด ํค์ ๊ฒฝ์ฐ 64KiB).
ํน์ ๋ค์ค ๋๋ ์ด์ค ๋ฆฌ์ ์์๋ Cloud HSM์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ Cloud HSM์ ์ง์๋๋ ๋ฆฌ์ ์ ์ฐธ์กฐํ์ธ์.
๋ค๋ฅธ Google Cloud ์๋น์ค์์ ๊ณ ๊ฐ ๊ด๋ฆฌ ์ํธํ ํค(CMEK) ํตํฉ๊ณผ ํจ๊ป Cloud HSM ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์๋น์ค์ ์ฌ์ฉํ๋ ์์น๋ Cloud HSM ํค์ ์์น์ ์ ํํ๊ฒ ์ผ์นํด์ผ ํฉ๋๋ค. ์ด๋ ๋ฆฌ์ , ์ด์ค ๋ฆฌ์ , ๋ฉํฐ ๋ฆฌ์ ์์น์ ์ ์ฉ๋ฉ๋๋ค.
CMEK ํตํฉ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ ์ฅ ๋ฐ์ดํฐ ์ํธํ ์น์ ์ ์ฐธ์กฐํ์ธ์.
Cloud KMS ์ํํธ์จ์ด ํค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์ ๋นํด ํ์ฌ Cloud HSM์ ์ ์ฅ๋ ๋น๋์นญ ํค์ ๋ํ ํค ์์ ์์ ์ง์ฐ ์๊ฐ์ด ํฌ๊ฒ ๋์ด๋ ์ ์์ต๋๋ค.
๋ฒ ์ด๋ฉํ ๋ HSM
Google Cloud ๋ ๋จ์ผ ํ ๋์์ ๊ฐ์ ์ถ๊ฐ HSM ์ต์ ์ ์ ๊ณตํฉ๋๋ค. ๋ฒ ์ด๋ฉํ ๋ HSM์ ๊ณ ๊ฐ์ด Google์์ ์ ๊ณตํ ๊ณต๊ฐ์์ ์์ฒด HSM์ ํธ์คํ ํ ์ ์๊ฒ ํด์ค๋๋ค. ์์ธํ ๋ด์ฉ์ ํด๋น ๊ณ์ ๋ด๋น์์๊ฒ ๋ฌธ์ํ์ธ์.