磁盘加密简介


默认情况下,Compute Engine 会对静态客户内容进行加密。Compute Engine 会为您处理和管理这项加密工作,您无需执行任何额外操作。此选项称为 Google 管理的加密。

您可以通过提供密钥加密密钥来自定义 Compute Engine 对资源使用的加密方式。密钥加密密钥不直接加密数据,而是对 Compute Engine 用来加密数据的 Google 生成的密钥进行加密。

您可以通过两种方式提供密钥加密密钥:

  • 推荐。使用 Compute Engine 中的 Cloud Key Management Service (Cloud KMS) 创建和管理密钥加密密钥。

    由 Cloud Key Management Service 管理的密钥称为客户管理的加密密钥 (CMEK)。创建密钥后,您可以将其用作磁盘的密钥加密密钥。

    您可以直接创建 CMEK,也可以使用 Cloud KMS Autokey 自动创建。如需了解详情,请参阅 Cloud KMS with Autokey

    在大多数情况下,创建 CMEK 加密的磁盘后,您无需在使用磁盘时指定密钥,因为 Cloud Key Management Service 知道您使用了哪个密钥。通过 CMEK 加密的即时快照创建磁盘是一个例外。

  • 您可以在 Compute Engine 之外管理自己的密钥加密密钥,并在创建或管理磁盘时提供密钥。此选项称为客户提供的加密密钥 (CSEK)。管理 CSEK 加密资源时,必须始终指定加密资源时使用的密钥。

如需了解详情,请参阅客户管理的加密密钥客户提供的加密密钥

支持的磁盘类型

本部分列出了 Compute Engine 提供的磁盘和其他存储选项支持的加密类型。

使用客户管理的加密密钥来加密磁盘

如需详细了解如何使用客户管理的加密密钥 (CMEK) 来加密磁盘和其他 Compute Engine 资源,请参阅使用 Cloud KMS 密钥保护资源

使用客户提供的加密密钥来加密磁盘

如需了解如何使用客户提供的加密密钥 (CSEK) 来加密磁盘和其他 Compute Engine 资源,请参阅使用客户提供的加密密钥来加密磁盘

查看有关磁盘加密的信息

Compute Engine 中的磁盘使用 Google 管理的加密密钥、客户管理的加密密钥或客户提供的加密密钥进行加密。Google 管理的加密是默认选项。

如需查看磁盘的加密类型,您可以使用 gcloud CLI、Google Cloud 控制台或 Compute Engine API。

控制台

  1. 在 Google Cloud 控制台中,转到磁盘页面。

    转到“磁盘”

  2. 名称列中,点击磁盘的名称。

  3. 属性表中,标记为加密的行表示加密的类型:由 Google 管理、由客户管理或由客户提供

gcloud

  1. 在 Google Cloud 控制台中,激活 Cloud Shell。

    激活 Cloud Shell

    Cloud Shell 会话随即会在 Google Cloud 控制台的底部启动,并显示命令行提示符。Cloud Shell 是一个已安装 Google Cloud CLI 且已为当前项目设置值的 Shell 环境。该会话可能需要几秒钟时间来完成初始化。

  2. 使用 gcloud compute disks describe 命令

        gcloud compute disks describe DISK_NAME \
          --zone=ZONE \
          --format="json(diskEncryptionKey)"
      

    替换以下内容:

    • PROJECT_ID:您的项目 ID。
    • ZONE:您的磁盘所在的区域。
    • DISK_NAME:磁盘的名称。

      命令输出

      如果输出为 null,则表示磁盘使用默认的 Google 管理的加密。

      否则,输出为 JSON 对象。

      如果 JSON 对象包含名为 diskEncryptionKey 的字段,则磁盘会进行加密。diskEncryptionKey 对象包含有关磁盘是使用 CMEK 加密还是 CSEK 加密的信息:

      • 如果存在 diskEncryptionKey.kmsKeyName 属性,则表示磁盘采用 CMEK 加密。kmsKeyName 属性指示用于加密磁盘的特定密钥的名称:
        {
          "diskEncryptionKey": {
            "kmsKeyName": "projects/my-proj/.."
          }
        }
        
      • 如果存在 diskEncryptionKey.sha256 属性,则表示磁盘采用 CSEK 加密。sha256 属性是用于保护磁盘的客户提供的加密密钥的 SHA-256 哈希。
          {
            "diskEncryptionKey": {
              "sha256": "abcdefghijk134560459345dssfd"
            }
          }
            

API

compute.disks.get 方法发出 POST 请求。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME

替换以下内容:

  • PROJECT_ID:您的项目 ID。
  • ZONE:您的磁盘所在的区域。
  • DISK_NAME:磁盘的名称

请求响应

如果响应为 null,则表示磁盘使用默认的 Google 管理的加密。

否则,响应为 JSON 对象。

如果 JSON 对象包含名为 diskEncryptionKey 的字段,则磁盘会进行加密。diskEncryptionKey 对象包含有关磁盘是使用 CMEK 加密还是 CSEK 加密的信息:

  • 如果存在 diskEncryptionKey.kmsKeyName 属性,则表示磁盘采用 CMEK 加密。kmsKeyName 属性指示用于加密磁盘的特定密钥的名称:
    {
      "diskEncryptionKey": {
        "kmsKeyName": "projects/my-proj/.."
      }
    }
    
  • 如果存在 diskEncryptionKey.sha256 属性,则表示磁盘采用 CSEK 加密。sha256 属性是用于保护磁盘的客户提供的加密密钥的 SHA-256 哈希。
      {
        "diskEncryptionKey": {
          "sha256": "abcdefghijk134560459345dssfd"
        }
      }
        

如果磁盘使用 CMEK 加密,您可以按照按项目查看密钥中的步骤找到有关密钥、其密钥环和位置的详细信息。

如果磁盘使用 CSEK 加密,请与组织管理员联系,以详细了解该密钥。 您还可以使用 CMEK,通过密钥使用情况跟踪来查看密钥所保护的资源。如需了解详情,请参阅查看密钥使用情况

后续步骤