加密和解密数据

AO 通过 Google Distributed Cloud (GDC) 空气隔离 CLI 使用 gRPC 客户端对 KMS 执行加密和解密操作。

准备工作

在执行 KMS 操作之前,请配置 kubectl 以访问 Management API 服务器并获取必要的权限。

配置 Management API 服务器访问权限

配置 kubectl 以访问 Management API 服务器:

  1. 如果您尚未执行此操作,请使用 gdcloud 命令行界面 (CLI) 为 Management API 服务器获取 kubeconfig 文件
  2. 设置 MANAGEMENT_API_SERVER 环境变量:

    export MANAGEMENT_API_SERVER=PATH_TO_KUBECONFIG
    

    PATH_TO_KUBECONFIG 替换为生成的 kubeconfig 文件的路径。

  3. 如果您尚未下载、安装和配置 gdcloud CLI,请执行相应操作。为此,请参阅 gcloud CLI 概览

所需权限

如需获得所需权限,请让您的组织 IAM 管理员为您授予项目中的 KMS Developer (kms-developer) 角色。

加密数据

如需加密数据,请使用 gdcloud kms keys encrypt 命令。此命令使用 AEAD 密钥加密给定的明文文件,并将其写入指定的密文文件。

  • 如需加密数据,请传入密钥名称和以下内容:

    gdcloud kms keys encrypt namespaces/NAMESPACE/aeadKeys/KEY_NAME \
      --plaintext-file=PLAINTEXT_PATH \
      --additional-authenticated-data-file=ADDITIONAL_AUTHENTICATED_DATA_FILE \
      --ciphertext-file=CIPHERTEXT_PATH
    

    执行以下变量替换操作:

    • NAMESPACE:项目命名空间,例如:kms-test1
    • KEY_NAME:用于加密明文的密钥的名称,例如:key-1
    • PLAINTEXT_PATH:包含要加密的明文的文件的路径。
    • ADDITIONAL_AUTHENTICATED_DATA_FILE:一个可选文件,其中包含额外的身份验证数据 (AAD)。AAD 用于完整性检查,可保护您的数据免受混淆代理攻击。AAD 和明文的大小上限均为 64KB。
    • CIPHERTEXT_PATH:包含加密明文的文件的路径。

    运行命令后,您会看到 --ciphertext-file 标志中指定的文件,其中包含明文文件的加密内容。

解密数据

如需解密数据,请使用 gdcloud kms keys decrypt 命令。此命令使用 AEAD 密钥解密给定的密文文件,并将其写入指定的明文文件。

  • 如需解密密文,请传入密钥名称和以下内容:

    gdcloud kms keys decrypt namespaces/NAMESPACE/aeadKeys/KEY_NAME \
     --ciphertext-file=CIPHERTEXT_PATH \
     --additional-authenticated-data-file=ADDITIONAL_AUTHENTICATED_DATA_FILE \
     --plaintext-file=PLAINTEXT_PATH
    

    执行以下变量替换操作:

    • NAMESPACE:项目命名空间。
    • KEY_NAME:用于加密明文的密钥的名称。
    • CIPHERTEXT_PATH:要解密的文件路径。
    • ADDITIONAL_AUTHENTICATED_DATA_FILE:包含其他经过身份验证的数据 (AAD) 的可选文件。AAD 用于完整性检查,可保护您的数据免受混淆代理攻击。AAD 和明文的大小上限均为 64KB。
    • PLAINTEXT_PATH:包含解密后的明文的文件路径。

    运行该命令后,您会看到 --plaintext-file 标志中指定的文件包含解密后的数据。