使用 Cloud KMS 创建加密密钥

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

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

准备工作

  1. 登录您的 Google Cloud 账号。如果您是 Google Cloud 新手,请创建一个账号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  3. 确保您的 Google Cloud 项目已启用结算功能

  4. 启用 Cloud KMS API。

    启用 API

  5. 安装 Google Cloud CLI。
  6. 如需初始化 gcloud CLI,请运行以下命令:

    gcloud init
  7. 在 Google Cloud Console 中的项目选择器页面上,选择或创建一个 Google Cloud 项目

    转到“项目选择器”

  8. 确保您的 Google Cloud 项目已启用结算功能

  9. 启用 Cloud KMS API。

    启用 API

  10. 安装 Google Cloud CLI。
  11. 如需初始化 gcloud CLI,请运行以下命令:

    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"

后续步骤