使用 Cloud KMS 创建加密密钥

本快速入门介绍了如何在您拥有的项目中使用 Cloud Key Management Service 创建和使用加密密钥。以下说明介绍了如何使用 Google Cloud 控制台在 Cloud KMS 中创建密钥环、密钥和密钥版本。如需了解如何使用其他方法,请参阅方法指南

本快速入门使用命令行将请求发送到 Cloud KMS API。如需了解使用客户端库向 Cloud KMS API 发送请求的编程示例,请参阅加密和解密

准备工作

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud KMS API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud KMS API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

密钥环和密钥

要对内容进行加密和解密,您需要一个 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

加密数据

现在您有了密钥,就可以使用该密钥对文本或二进制内容进行加密。

将“some text to be encrypted”存储在名为“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 解密数据,请提供密钥信息,指定要解密的加密文件(密文文件)的名称,并指定将包含解密后的内容的文件名称:

gcloud kms decrypt \
    --location "global" \
    --keyring "test" \
    --key "quickstart" \
    --ciphertext-file ./mysecret.txt.encrypted \
    --plaintext-file ./mysecret.txt.decrypted

decrypt 方法将会把解密后的内容保存在 --plaintext-file 标志指定的文件中。

要对已加密内容进行解密,您必须使用加密该内容时使用的相同密钥。

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

列出您的密钥可用的版本:

gcloud kms keys versions list \
    --location "global" \
    --keyring "test" \
    --key "quickstart"

如需销毁版本,请运行以下命令,将 key-version 替换为要销毁的密钥版本的编号:

gcloud kms keys versions destroy key-version \
    --location "global" \
    --keyring "test" \
    --key "quickstart"

后续步骤