本页介绍了应用运营商 (AO) 如何执行从导出的密钥管理系统 (KMS) 密钥导入密钥的操作。AO 使用 kubectl 命令行界面 (CLI) 从以下资源执行导入和导出操作:
如需详细了解这些资源,请参阅 KMS API 概览。
如需查看 KMS 支持的密钥的完整列表和详细信息,请参阅密钥管理系统 (KMS) 页面中的支持的密钥部分。
准备工作
在继续之前,请确保您已准备好以下内容:
- 配置为访问 Management API 服务器的 - kubectl命令。为此,请按照获取 kubeconfig 文件和 gdcloud 命令行界面 (CLI) 部分中的说明操作。
- KMS Key Import Admin 和 KMS Key Export Admin 角色。如需获得导入导出密钥所需的权限,请让您的平台管理员 (PA) 为您授予 KMS Key Import Admin ( - kms-keyimport-admin) 和 KMS Key Export Admin (- kms-keyexport-admin) 角色。
导入导出的密钥
如需导入导出的密钥,请完成以下步骤:
- 创建一个 YAML 文件,并将 - KeyImport资源添加为- kind对象的值:- apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM- 执行以下变量替换操作: - KEY_IMPORT_NAME:KeyImport资源的名称key-import-test。
- PROJECT:项目命名空间的名称  例如:kms-test1。
- MECHANISM:密钥的密钥共享机制,例如:`EDCH_P521_AES256`。
 
- KEY_IMPORT_NAME:
- 将 YAML 文件的内容应用于 KMS 并创建 - KeyImport资源:- kubectl apply -f FILENAME.yaml- 将 FILENAME 替换为 YAML 文件的名称。 - 借助内部生成的密钥对的公钥,KMS 会将 - KeyImport资源的状态更新为- AwaitingKeyToImport。如需继续,您需要查看资源的状态并获取 KMS 生成的公钥。
- 如需查看 - KeyImport资源的状态并获取 KMS 生成的公钥,请运行以下命令:- kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT- 执行以下变量替换操作: - KEY_IMPORT_NAME:KeyImport资源名称,例如key-import-test。
- PROJECT:项目命名空间的名称 � 示例:kms-test1。
 - 运行该命令后,您会看到类似于以下内容的输出: - ... Status: Conditions: Last Transition Time: 2022-12-14T20:43:50Z Message: waiting for user to provide KeyToImport Observed Generation: 1 Reason: AwaitingKeyToImport Status: False Type: Ready Imported Key Ref: Kind: KeyImport Name: key-import-test Peer Context: Private Key: Public Key: PUBLIC_KEY Events: <none>- 值 PUBLIC_KEY 表示 KMS 生成的公钥。复制公钥,然后在下一步中将其添加到 - KeyExport资源。
- KEY_IMPORT_NAME:
- 创建另一个 YAML 文件,将 - KeyExport资源添加为- kind对象的值,并添加以下内容:- apiVersion: "kms.gdc.goog/v1" kind: KeyExport metadata: name: KEY_EXPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM publicKey: PUBLIC_KEY keyToExport: kind: KEY_PRIMITIVE name: KEY_NAME- 执行以下变量替换操作: - KEY_EXPORT_NAME:KeyExport资源的名称key-export-test。
- PROJECT:项目命名空间的名称 � 示例: - kms-test1。
- MECHANISM:密钥的密钥共享机制,例如:`EDCH_P521_AES256`。 
- PUBLIC_KEY:来自 - keyImport.Status.PeerContext.PublicKey的公钥。
- KEY_PRIMITIVE:密钥的 CRD,例如 aeadkey 和 signingkey。 
- KEY_NAME:密钥的名称,例如 - key-1。
 
- KEY_EXPORT_NAME:
- 将 YAML 文件的内容应用于 KMS 并创建 - KeyExport资源:- kubectl apply -f FILENAME.yaml- 将 FILENAME 替换为 YAML 文件的名称。 - 运行该命令后,KMS 会更新 - KeyExport资源的状态并生成导出的密钥。如需获取导出的密钥,请查看资源的状态。
- 如需查看资源的状态,请运行以下命令: - kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT- 执行以下变量替换操作: - KEY_EXPORT_NAME:KeyExport资源的名称,例如key-export-test。
- PROJECT:项目命名空间的名称,例如:kms-test1。
 - 运行该命令后,您会看到类似于以下内容的输出: - ... Status: Conditions: Last Transition Time: 2022-12-14T20:45:57Z Message: key successfully exported Observed Generation: 1 Reason: KeyExportCompleted Status: True Type: Ready Exported Key: EXPORTED_KEY- EXPORTED_KEY 表示导出密钥的元数据。 复制 EXPORTED_KEY 中的内容,继续执行下一步。 
- KEY_EXPORT_NAME:
- 修改包含 - KeyImport资源的 YAML 文件,并添加您从- keyexport.status.exportedkey中的输出复制的内容。- apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: key-import-test namespace: kms-test1 spec: context: mechanism: EDCH_P521_AES256 keyToImport: EXPORTED_KEY
- 修改 YAML 文件后,将内容应用到 KMS: - kubectl apply -f FILENAME.yaml- 运行该命令后,KMS 会导入您提供的导出密钥。 
- 如需查看有关导入密钥的详细信息,请运行以下命令: - kubectl get keyimport KEY_IMPORT_NAME- 您将看到类似如下所示的输出: - NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVE- KEY_PRIMITIVE 表示您导入的密钥类型,介于 AEAD 密钥和签名密钥之间。