ื™ืฆื™ืจืช ืžืคืชื—ื•ืช ื”ืฆืคื ื” ื‘ืืžืฆืขื•ืช Cloud KMS

ื‘ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื ื”ื–ื” ื ืกื‘ื™ืจ ืื™ืš ืœื™ืฆื•ืจ ืžืคืชื—ื•ืช ื”ืฆืคื ื” ื•ืœื”ืฉืชืžืฉ ื‘ื”ื ื‘ืืžืฆืขื•ืช Cloud Key Management Service ื‘ืคืจื•ื™ืงื˜ ืฉื‘ื‘ืขืœื•ืชื›ื. ื‘ืฉืœื‘ื™ื ื”ื‘ืื™ื ื ืฉืชืžืฉ ื‘ืžืกื•ืฃGoogle Cloud ื›ื“ื™ ืœื™ืฆื•ืจ ืื•ืกืคื™ ืžืคืชื—ื•ืช, ืžืคืชื—ื•ืช ื•ื’ืจืกืื•ืช ืฉืœ ืžืคืชื—ื•ืช ื‘-Cloud KMS. ืœื”ื•ืจืื•ืช ืœืฉื™ืžื•ืฉ ื‘ืฉื™ื˜ื•ืช ืื—ืจื•ืช, ืงืจืื• ืืช ื”ืžืืžืจื™ื ืกืงื™ืจื” ื›ืœืœื™ืช ืขืœ Autokey, ื™ืฆื™ืจืช ืื•ืกืฃ ืžืคืชื—ื•ืช ื•ื™ืฆื™ืจืช ืžืคืชื—.

ื‘ืžื“ืจื™ืš ืœืžืชื—ื™ืœื™ื ื”ื–ื” ืžืฉืชืžืฉื™ื ื‘ืฉื•ืจืช ื”ืคืงื•ื“ื” ื›ื“ื™ ืœืฉืœื•ื— ื‘ืงืฉื•ืช ืœ-Cloud KMS API. ื“ื•ื’ืžืื•ืช ืœืชื›ื ื•ืช ืฉืžืฉืชืžืฉื•ืช ื‘ืกืคืจื™ื•ืช ื”ืœืงื•ื— ื›ื“ื™ ืœืฉืœื•ื— ื‘ืงืฉื•ืช ืœ-Cloud KMS API ืžื•ืคื™ืขื•ืช ื‘ืžืืžืจ ื”ืฆืคื ื” ื•ืคืขื ื•ื—.

ืœืคื ื™ ืฉืžืชื—ื™ืœื™ื

  1. ื ื›ื ืกื™ื ืœื—ืฉื‘ื•ืŸ Google Cloud . ืื ื—ื ื• ืžืžืœื™ืฆื™ื ืœืžืฉืชืžืฉื™ื ื—ื“ืฉื™ื ื‘- Google Cloud ืœื™ืฆื•ืจ ื—ืฉื‘ื•ืŸ ื›ื“ื™ ืฉื™ื•ื›ืœื• ืœื”ืขืจื™ืš ืืช ื”ื‘ื™ืฆื•ืขื™ื ืฉืœ ื”ืžื•ืฆืจื™ื ืฉืœื ื• ื‘ืชืจื—ื™ืฉื™ื ืžื”ืขื•ืœื ื”ืืžื™ืชื™. ืœืงื•ื—ื•ืช ื—ื“ืฉื™ื ืžืงื‘ืœื™ื ื‘ื—ื™ื ื ื’ื ืงืจื“ื™ื˜ ื‘ืฉื•ื•ื™ 300$ ืœื”ืจืฆื”, ืœื‘ื“ื™ืงื” ื•ืœืคืจื™ืกื” ืฉืœ ืขื•ืžืกื™ ื”ืขื‘ื•ื“ื”.
  2. ื”ืชืงื™ื ื• ืืช ื”-CLI ืฉืœ Google Cloud.

  3. ืื ืืชื ืžืฉืชืžืฉื™ื ื‘ืกืคืง ื–ื”ื•ื™ื•ืช ื—ื™ืฆื•ื ื™ (IdP), ืงื•ื“ื ืืชื ืฆืจื™ื›ื™ื ืœื”ื™ื›ื ืก ืœ-CLI ืฉืœ gcloud ื‘ืืžืฆืขื•ืช ื”ืžืื’ืจ ื”ืžืื•ื—ื“ ืœื ื™ื”ื•ืœ ื–ื”ื•ื™ื•ืช.

  4. ื›ื“ื™ ืœืืชื—ืœ ืืช ื”-CLI ืฉืœ gcloud, ื”ืจื™ืฆื• ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

    gcloud init
  5. ื™ื•ืฆืจื™ื ืื• ื‘ื•ื—ืจื™ื ืคืจื•ื™ืงื˜ ื‘- 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 .

  6. ืžื•ื•ื“ืื™ื ืฉื”ื—ื™ื•ื‘ ืžื•ืคืขืœ ื‘ืคืจื•ื™ืงื˜ ื‘- Google Cloud .

  7. ืžืคืขื™ืœื™ื ืืช Cloud KMS API, ืื ื”ื•ื ืขื“ื™ื™ืŸ ืœื ืžื•ืคืขืœ:

    ืชืคืงื™ื“ื™ื ืฉื ื“ืจืฉื™ื ืœื”ืคืขืœืช ืžืžืฉืงื™ API

    ื›ื“ื™ ืœื”ืคืขื™ืœ ืžืžืฉืงื™ API, ืฆืจื™ืš ืืช ื”ื”ืจืฉืื” serviceusage.services.enable. ืื ื™ืฆืจืชื ืืช ื”ืคืจื•ื™ืงื˜, ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื›ื‘ืจ ื™ืฉ ืœื›ื ืืช ื”ื”ืจืฉืื” ื”ื–ื• ื“ืจืš ื”ืชืคืงื™ื“ 'ื‘ืขืœื™ื' (roles/owner). ืื—ืจืช, ืชื•ื›ืœื• ืœืงื‘ืœ ืืช ื”ื”ืจืฉืื” ื”ื–ื• ื“ืจืš ื”ืชืคืงื™ื“ 'ืื“ืžื™ืŸ ื‘ืžืžืฉืง Service Usage' (roles/serviceusage.serviceUsageAdmin). ืื™ืš ืžืงืฆื™ื ืชืคืงื™ื“ื™ื

    gcloud services enable cloudkms.googleapis.com
  8. ืžืขื ื™ืงื™ื ืชืคืงื™ื“ื™ื ืœื—ืฉื‘ื•ืŸ ื”ืžืฉืชืžืฉ. ืžืจื™ืฆื™ื ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ืœื›ืœ ืื—ื“ ืžื”ืชืคืงื™ื“ื™ื ื”ื‘ืื™ื ื‘-IAM: roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter

    gcloud projects add-iam-policy-binding PROJECT_ID --member="user:USER_IDENTIFIER" --role=ROLE

    ืžื—ืœื™ืคื™ื ืืช ืžื” ืฉื›ืชื•ื‘ ื‘ืฉื“ื•ืช ื”ื‘ืื™ื:

    • โ€ซPROJECT_ID: ืžื–ื”ื” ื”ืคืจื•ื™ืงื˜.
    • โ€ซUSER_IDENTIFIER: ื”ืžื–ื”ื” ืฉืœ ื—ืฉื‘ื•ืŸ ื”ืžืฉืชืžืฉ . ืœื“ื•ื’ืžื”, myemail@example.com.
    • โ€ซROLE: ืชืคืงื™ื“ ื”-IAM ืฉืืชื ืžืงืฆื™ื ืœื—ืฉื‘ื•ืŸ ื”ืžืฉืชืžืฉ.
  9. ื”ืชืงื™ื ื• ืืช ื”-CLI ืฉืœ Google Cloud.

  10. ืื ืืชื ืžืฉืชืžืฉื™ื ื‘ืกืคืง ื–ื”ื•ื™ื•ืช ื—ื™ืฆื•ื ื™ (IdP), ืงื•ื“ื ืืชื ืฆืจื™ื›ื™ื ืœื”ื™ื›ื ืก ืœ-CLI ืฉืœ gcloud ื‘ืืžืฆืขื•ืช ื”ืžืื’ืจ ื”ืžืื•ื—ื“ ืœื ื™ื”ื•ืœ ื–ื”ื•ื™ื•ืช.

  11. ื›ื“ื™ ืœืืชื—ืœ ืืช ื”-CLI ืฉืœ gcloud, ื”ืจื™ืฆื• ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื”:

    gcloud init
  12. ื™ื•ืฆืจื™ื ืื• ื‘ื•ื—ืจื™ื ืคืจื•ื™ืงื˜ ื‘- 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 .

  13. ืžื•ื•ื“ืื™ื ืฉื”ื—ื™ื•ื‘ ืžื•ืคืขืœ ื‘ืคืจื•ื™ืงื˜ ื‘- Google Cloud .

  14. ืžืคืขื™ืœื™ื ืืช Cloud KMS API, ืื ื”ื•ื ืขื“ื™ื™ืŸ ืœื ืžื•ืคืขืœ:

    ืชืคืงื™ื“ื™ื ืฉื ื“ืจืฉื™ื ืœื”ืคืขืœืช ืžืžืฉืงื™ API

    ื›ื“ื™ ืœื”ืคืขื™ืœ ืžืžืฉืงื™ API, ืฆืจื™ืš ืืช ื”ื”ืจืฉืื” serviceusage.services.enable. ืื ื™ืฆืจืชื ืืช ื”ืคืจื•ื™ืงื˜, ืกื‘ื™ืจ ืœื”ื ื™ื— ืฉื›ื‘ืจ ื™ืฉ ืœื›ื ืืช ื”ื”ืจืฉืื” ื”ื–ื• ื“ืจืš ื”ืชืคืงื™ื“ 'ื‘ืขืœื™ื' (roles/owner). ืื—ืจืช, ืชื•ื›ืœื• ืœืงื‘ืœ ืืช ื”ื”ืจืฉืื” ื”ื–ื• ื“ืจืš ื”ืชืคืงื™ื“ 'ืื“ืžื™ืŸ ื‘ืžืžืฉืง Service Usage' (roles/serviceusage.serviceUsageAdmin). ืื™ืš ืžืงืฆื™ื ืชืคืงื™ื“ื™ื

    gcloud services enable cloudkms.googleapis.com
  15. ืžืขื ื™ืงื™ื ืชืคืงื™ื“ื™ื ืœื—ืฉื‘ื•ืŸ ื”ืžืฉืชืžืฉ. ืžืจื™ืฆื™ื ืืช ื”ืคืงื•ื“ื” ื”ื‘ืื” ืœื›ืœ ืื—ื“ ืžื”ืชืคืงื™ื“ื™ื ื”ื‘ืื™ื ื‘-IAM: roles/cloudkms.admin, roles/cloudkms.cryptoKeyEncrypterDecrypter

    gcloud 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"

ื”ืžืืžืจื™ื ื”ื‘ืื™ื