ืืฆืืจืช ืืคืชืืืช ืืฆืคื ื ืืืืฆืขืืช Cloud KMS
ืืืืจืื ืืืชืืืืื ืืื ื ืกืืืจ ืืื ืืืฆืืจ ืืคืชืืืช ืืฆืคื ื ืืืืฉืชืืฉ ืืื ืืืืฆืขืืช Cloud Key Management Service ืืคืจืืืงื ืฉืืืขืืืชืื. ืืฉืืืื ืืืืื ื ืฉืชืืฉ ืืืกืืฃGoogle Cloud ืืื ืืืฆืืจ ืืืกืคื ืืคืชืืืช, ืืคืชืืืช ืืืจืกืืืช ืฉื ืืคืชืืืช ื-Cloud KMS. ืืืืจืืืช ืืฉืืืืฉ ืืฉืืืืช ืืืจืืช, ืงืจืื ืืช ืืืืืจืื ืกืงืืจื ืืืืืช ืขื Autokey, ืืฆืืจืช ืืืกืฃ ืืคืชืืืช ืืืฆืืจืช ืืคืชื.
ืืืืจืื ืืืชืืืืื ืืื ืืฉืชืืฉืื ืืฉืืจืช ืืคืงืืื ืืื ืืฉืืื ืืงืฉืืช ื-Cloud KMS API. ืืืืืืืช ืืชืื ืืช ืฉืืฉืชืืฉืืช ืืกืคืจืืืช ืืืงืื ืืื ืืฉืืื ืืงืฉืืช ื-Cloud KMS API ืืืคืืขืืช ืืืืืจ ืืฆืคื ื ืืคืขื ืื.
ืืคื ื ืฉืืชืืืืื
- ื ืื ืกืื ืืืฉืืื Google Cloud . ืื ืื ื ืืืืืฆืื ืืืฉืชืืฉืื ืืืฉืื ื- Google Cloud ืืืฆืืจ ืืฉืืื ืืื ืฉืืืืื ืืืขืจืื ืืช ืืืืฆืืขืื ืฉื ืืืืฆืจืื ืฉืื ื ืืชืจืืืฉืื ืืืขืืื ืืืืืชื. ืืงืืืืช ืืืฉืื ืืงืืืื ืืืื ื ืื ืงืจืืื ืืฉืืื 300$ ืืืจืฆื, ืืืืืงื ืืืคืจืืกื ืฉื ืขืืืกื ืืขืืืื.
-
ืืชืงืื ื ืืช ื-CLI ืฉื Google Cloud.
-
ืื ืืชื ืืฉืชืืฉืื ืืกืคืง ืืืืืืช ืืืฆืื ื (IdP), ืงืืื ืืชื ืฆืจืืืื ืืืืื ืก ื-CLI ืฉื gcloud ืืืืฆืขืืช ืืืืืจ ืืืืืื ืื ืืืื ืืืืืืช.
-
ืืื ืืืชืื ืืช ื-CLI ืฉื gcloud, ืืจืืฆื ืืช ืืคืงืืื ืืืื:
gcloud init -
ืืืฆืจืื ืื ืืืืจืื ืคืจืืืงื ื- Google Cloud .
ืืชืคืงืืืื ืฉื ืืจืฉืื ืืื ืืืืืจ ืื ืืืฆืืจ ืคืจืืืงื
- Select a project: ืืื ืืืืืจ ืคืจืืืงื ืื ืฆืจืื ืชืคืงืื IAM ืกืคืฆืืคื โ ืืคืฉืจ ืืืืืจ ืื ืคืจืืืงื ืฉืงืืืืชื ืื ืชืคืงืื.
-
ืืฆืืจืช ืคืจืืืงื: ืืื ืืืฆืืจ ืคืจืืืงื, ืฆืจืื ืืช ืืชืคืงืื "ืืฆืืจืช ืคืจืืืงืืื" (
roles/resourcemanager.projectCreator), ืฉืืืื ืืช ืืืจืฉืืresourcemanager.projects.create. ืืื ืืงืฆืื ืชืคืงืืืื
-
ืืืฆืจืื Google Cloud ืคืจืืืงื:
gcloud projects create PROJECT_ID
ืืืืืคืื ืืช
PROJECT_IDืืฉื ืฉื ืืคืจืืืงื ื- Google Cloud ืฉืืชื ืืืฆืจืื. -
ืืืืจืื ืืช ืืคืจืืืงื ืฉืืฆืจืชื: Google Cloud
gcloud config set project PROJECT_ID
ืืืืืคืื ืืช
PROJECT_IDืืฉื ืืคืจืืืงื ื- Google Cloud .
-
ืืืืืืื ืฉืืืืื ืืืคืขื ืืคืจืืืงื ื- Google Cloud .
ืืคืขืืืื ืืช Cloud KMS API, ืื ืืื ืขืืืื ืื ืืืคืขื:
ืชืคืงืืืื ืฉื ืืจืฉืื ืืืคืขืืช ืืืฉืงื API
ืืื ืืืคืขืื ืืืฉืงื API, ืฆืจืื ืืช ืืืจืฉืื
serviceusage.services.enable. ืื ืืฆืจืชื ืืช ืืคืจืืืงื, ืกืืืจ ืืื ืื ืฉืืืจ ืืฉ ืืื ืืช ืืืจืฉืื ืืื ืืจื ืืชืคืงืื 'ืืขืืื' (roles/owner). ืืืจืช, ืชืืืื ืืงืื ืืช ืืืจืฉืื ืืื ืืจื ืืชืคืงืื 'ืืืืื ืืืืฉืง Service Usage' (roles/serviceusage.serviceUsageAdmin). ืืื ืืงืฆืื ืชืคืงืืืืgcloud services enable cloudkms.googleapis.com
-
ืืขื ืืงืื ืชืคืงืืืื ืืืฉืืื ืืืฉืชืืฉ. ืืจืืฆืื ืืช ืืคืงืืื ืืืื ืืื ืืื ืืืชืคืงืืืื ืืืืื ื-IAM:
roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecryptergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
ืืืืืคืื ืืช ืื ืฉืืชืื ืืฉืืืช ืืืืื:
- โซ
PROJECT_ID: ืืืื ืืคืจืืืงื. - โซ
USER_IDENTIFIER: ืืืืื ืฉื ืืฉืืื ืืืฉืชืืฉ . ืืืืืื,myemail@example.com. - โซ
ROLE: ืชืคืงืื ื-IAM ืฉืืชื ืืงืฆืื ืืืฉืืื ืืืฉืชืืฉ.
- โซ
-
ืืชืงืื ื ืืช ื-CLI ืฉื Google Cloud.
-
ืื ืืชื ืืฉืชืืฉืื ืืกืคืง ืืืืืืช ืืืฆืื ื (IdP), ืงืืื ืืชื ืฆืจืืืื ืืืืื ืก ื-CLI ืฉื gcloud ืืืืฆืขืืช ืืืืืจ ืืืืืื ืื ืืืื ืืืืืืช.
-
ืืื ืืืชืื ืืช ื-CLI ืฉื gcloud, ืืจืืฆื ืืช ืืคืงืืื ืืืื:
gcloud init -
ืืืฆืจืื ืื ืืืืจืื ืคืจืืืงื ื- Google Cloud .
ืืชืคืงืืืื ืฉื ืืจืฉืื ืืื ืืืืืจ ืื ืืืฆืืจ ืคืจืืืงื
- Select a project: ืืื ืืืืืจ ืคืจืืืงื ืื ืฆืจืื ืชืคืงืื IAM ืกืคืฆืืคื โ ืืคืฉืจ ืืืืืจ ืื ืคืจืืืงื ืฉืงืืืืชื ืื ืชืคืงืื.
-
ืืฆืืจืช ืคืจืืืงื: ืืื ืืืฆืืจ ืคืจืืืงื, ืฆืจืื ืืช ืืชืคืงืื "ืืฆืืจืช ืคืจืืืงืืื" (
roles/resourcemanager.projectCreator), ืฉืืืื ืืช ืืืจืฉืืresourcemanager.projects.create. ืืื ืืงืฆืื ืชืคืงืืืื
-
ืืืฆืจืื Google Cloud ืคืจืืืงื:
gcloud projects create PROJECT_ID
ืืืืืคืื ืืช
PROJECT_IDืืฉื ืฉื ืืคืจืืืงื ื- Google Cloud ืฉืืชื ืืืฆืจืื. -
ืืืืจืื ืืช ืืคืจืืืงื ืฉืืฆืจืชื: Google Cloud
gcloud config set project PROJECT_ID
ืืืืืคืื ืืช
PROJECT_IDืืฉื ืืคืจืืืงื ื- Google Cloud .
-
ืืืืืืื ืฉืืืืื ืืืคืขื ืืคืจืืืงื ื- Google Cloud .
ืืคืขืืืื ืืช Cloud KMS API, ืื ืืื ืขืืืื ืื ืืืคืขื:
ืชืคืงืืืื ืฉื ืืจืฉืื ืืืคืขืืช ืืืฉืงื API
ืืื ืืืคืขืื ืืืฉืงื API, ืฆืจืื ืืช ืืืจืฉืื
serviceusage.services.enable. ืื ืืฆืจืชื ืืช ืืคืจืืืงื, ืกืืืจ ืืื ืื ืฉืืืจ ืืฉ ืืื ืืช ืืืจืฉืื ืืื ืืจื ืืชืคืงืื 'ืืขืืื' (roles/owner). ืืืจืช, ืชืืืื ืืงืื ืืช ืืืจืฉืื ืืื ืืจื ืืชืคืงืื 'ืืืืื ืืืืฉืง Service Usage' (roles/serviceusage.serviceUsageAdmin). ืืื ืืงืฆืื ืชืคืงืืืืgcloud services enable cloudkms.googleapis.com
-
ืืขื ืืงืื ืชืคืงืืืื ืืืฉืืื ืืืฉืชืืฉ. ืืจืืฆืื ืืช ืืคืงืืื ืืืื ืืื ืืื ืืืชืคืงืืืื ืืืืื ื-IAM:
roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecryptergcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE
ืืืืืคืื ืืช ืื ืฉืืชืื ืืฉืืืช ืืืืื:
- โซ
PROJECT_ID: ืืืื ืืคืจืืืงื. - โซ
USER_IDENTIFIER: ืืืืื ืฉื ืืฉืืื ืืืฉืชืืฉ . ืืืืืื,myemail@example.com. - โซ
ROLE: ืชืคืงืื ื-IAM ืฉืืชื ืืงืฆืื ืืืฉืืื ืืืฉืชืืฉ.
- โซ
ืืืกืคื ืืคืชืืืช ืืืคืชืืืช
ืืื ืืืฆืคืื ืืืคืขื ื ืชืืื, ืฆืจืื ืืคืชื Cloud KMS ืฉืืื ืืืง ืืืืกืฃ ืืคืชืืืช.
ืืืฆืจืื ืืืกืฃ ืืคืชืืืช ืืฉื test ืืืคืชื ืืฉื quickstart. ืืืืข ื ืืกืฃ ืขื ืืืืืืืงืืื ืืืื ืืขื ืืงืฉืจ ืืื ืืื ืืืื ืืืืืจ ืกืงืืจื ืืืืืช ืขื ืืืจืจืืืืช ืืืืืืืงืืื.
gcloud kms keyrings create "test" \
--location "global"gcloud kms keys create "quickstart" \
--location "global" \
--keyring "test" \
--purpose "encryption"ืืคืฉืจ ืืืฉืชืืฉ ืืืคืฉืจืืช list ืืื ืืืฆืื ืืช ืืฉื ืืืืื-ื ืชืื ืื ืฉื ืืืคืชื ืฉืืฆืจืชื.
gcloud kms keys list \
--location "global" \
--keyring "test"ืืชื ืืืืจืื ืืจืืืช:
NAME PURPOSE PRIMARY_STATE projects/PROJECT_ID/locations/global/keyRings/test/cryptoKeys/quickstart ENCRYPT_DECRYPT ENABLED
ืืฆืคื ืช ื ืชืื ืื
ืขืืฉืื, ืืฉืืฉ ืืื ืืคืชื, ืืชื ืืืืืื ืืืฉืชืืฉ ืื ืืื ืืืฆืคืื ืืงืกื ืื ืชืืื ืืื ืืจื.
ืฉืืืจืื ืืงืกื ืืืฆืคื ื ืืงืืืฅ ืืฉื "mysecret.txt".
echo -n "Some text to be encrypted" > mysecret.txtืืื ืืืฆืคืื ืืช ืื ืชืื ืื ืืืืฆืขืืช gcloud kms encrypt, ืฆืจืื ืืกืคืง ืืช ืคืจืื ืืืคืชื, ืืฆืืื ืืช ืฉื ืืงืืืฅ ืฉื ืืืงืกื ืืคืฉืื ืฉืจืืฆืื ืืืฆืคืื ืืืฆืืื ืืช ืฉื ืืงืืืฅ ืฉืืืื ืืช ืืชืืื ืืืืฆืคื:
gcloud kms encrypt \
--location "global" \
--keyring "test" \
--key "quickstart" \
--plaintext-file ./mysecret.txt \
--ciphertext-file ./mysecret.txt.encryptedืืฉืืื encrypt, ืืชืืื ืืืืฆืคื ื ืฉืืจ ืืงืืืฅ ืฉืฆืืื ืืืืฆืขืืช ืืืื --ciphertext-file.
ืคืขื ืื ืืงืกื ืืืฆืคื
ืืื ืืคืขื ื ืืช ืื ืชืื ืื ืืืืฆืขืืช gcloud kms decrypt, ืฆืจืื ืืกืคืง ืืช ืคืจืื ืืืคืชื, ืืฆืืื ืืช ืฉื ืืงืืืฅ ืืืืฆืคื (ืงืืืฅ ืืืืข ืืืฆืคื (ciphertext)) ืฉืจืืฆืื ืืคืขื ื, ืืืฆืืื ืืช ืฉื ืืงืืืฅ ืฉืืืื ืืช ืืชืืื ืืืคืืขื ื:
gcloud kms decrypt \
--location "global" \
--keyring "test" \
--key "quickstart" \
--ciphertext-file ./mysecret.txt.encrypted \
--plaintext-file ./mysecret.txt.decryptedืืฉืืื decrypt ืฉืืืจืช ืืช ืืชืืื ืืืคืืขื ื ืืงืืืฅ ืฉืฆืืื ืืืืฆืขืืช ืืืื --plaintext-file.
ืืื ืืคืขื ื ืชืืื ืืืฆืคื, ืฆืจืื ืืืฉืชืืฉ ืืืืชื ืืคืชื ืฉืฉืืืฉ ืืืฆืคื ืช ืืชืืื.
ืืกืจืช ืืืฉืืืื
ืืื ืื ืืฆืืืจ ืืืืืื ืืืฉืืื Google Cloud ืขื ืืืฉืืืื ืฉืืื ืืฉืชืืฉืชื ืืืฃ ืืื, ืืชื ืฆืจืืืื ืืืืืง ืืช ืืคืจืืืงื Google Cloud ืืื ืขื ืืืฉืืืื.
ืืฆืืืื ืืช ืืืจืกืืืช ืืืืื ืืช ืฉื ืืืคืชื:
gcloud kms keys versions list \
--location "global" \
--keyring "test" \
--key "quickstart"ืืื ืืืฉืืื ืืจืกื, ืืจืืฆืื ืืช ืืคืงืืื ืืืื, ืืืฉืจ 1 ืืื ืืกืคืจ ืืจืกืช ืืืคืชื ืฉืจืืฆืื ืืืฉืืื:
gcloud kms keys versions destroy 1 \
--location "global" \
--keyring "test" \
--key "quickstart"
ืืืืืจืื ืืืืื
- ืืชืืืืื ืืืฉืชืืฉ ื-API.
- ืืืืข ื ืืกืฃ ืืืื ืืืืืจ ืื ืืฉื ืืคื ืืืช API.
- ืืืืข ื ืืกืฃ ืขื ืืฆืคื ืช ื ืชืื ืื ืืื ืืื