Esta página inclui instruções para o operador de aplicativos (AO, na sigla em inglês) realizar operações importantes de importação de chaves exportadas de sistemas de gerenciamento de chaves (KMS, na sigla em inglês). O AO realiza as operações de importação e exportação usando a interface de linha de comando (CLI) kubectl dos seguintes recursos:
Para mais detalhes sobre esses recursos, consulte a visão geral da API KMS.
Consulte a seção Chaves compatíveis na página Sistemas de gerenciamento de chaves (KMS) para conferir a lista completa e os detalhes das chaves compatíveis com o KMS.
Antes de começar
Antes de continuar, verifique se você tem o seguinte:
O comando
kubectlconfigurado para acessar o servidor da API Management. Para fazer isso, siga as seções Receber um arquivo kubeconfig e Interface de linha de comando (CLI) gdcloud.Os papéis de administrador de importação e exportação de chaves do KMS. Para receber as permissões necessárias para importar uma chave exportada, peça ao administrador da plataforma (PA, na sigla em inglês) que conceda a você os papéis de administrador de importação de chaves do KMS (
kms-keyimport-admin) e administrador de exportação de chaves do KMS (kms-keyexport-admin).
Importar uma chave exportada
Para importar uma chave exportada, siga estas etapas:
Crie um arquivo YAML e adicione o recurso
KeyImportcomo o valor do objetokind:apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISMSubstitua as seguintes variáveis:
- KEY_IMPORT_NAME: o nome do recurso
KeyImport, por exemplo,key-import-test. - PROJECT: o nome do namespace do projeto, por exemplo,
kms-test1. - MECHANISM: o mecanismo de compartilhamento da chave por exemplo: `EDCH_P521_AES256` .
- KEY_IMPORT_NAME: o nome do recurso
Aplique o conteúdo do arquivo YAML ao KMS e crie o recurso
KeyImport:kubectl apply -f FILENAME.yamlSubstitua FILENAME pelo nome do arquivo YAML.
Com a chave pública de um par de chaves gerado internamente, o KMS atualiza o status do recurso
KeyImportparaAwaitingKeyToImport. Para continuar, confira o status do recurso e obtenha a chave pública gerada pelo KMS.Para conferir o status do recurso
KeyImporte receber a chave pública gerada pelo KMS, execute o seguinte comando:kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECTSubstitua as seguintes variáveis:
- KEY_IMPORT_NAME: o nome do recurso
KeyImport. Por exemplo,key-import-test. - PROJECT: o nome do namespace do projeto. Por
exemplo:
kms-test1.
Depois de executar o comando, você vai ver uma saída semelhante a esta:
... 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>O valor PUBLIC_KEY representa a chave pública gerada pelo KMS. Copie a chave pública e adicione-a ao recurso
KeyExportna próxima etapa.- KEY_IMPORT_NAME: o nome do recurso
Crie outro arquivo YAML, adicione o recurso
KeyExportcomo o valor do objetokinde o conteúdo a seguir: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_NAMESubstitua as seguintes variáveis:
- KEY_EXPORT_NAME: o nome do recurso
KeyExport, por exemplo,key-export-test. PROJECT: o nome do namespace do projeto. Por exemplo:
kms-test1.MECHANISM: o mecanismo de compartilhamento da chave por exemplo: `EDCH_P521_AES256` .
PUBLIC_KEY: a chave pública de
keyImport.Status.PeerContext.PublicKey.KEY_PRIMITIVE: o CRD da chave, por exemplo, aeadkey e signingkey.
KEY_NAME: o nome da chave, por exemplo,
key-1.
- KEY_EXPORT_NAME: o nome do recurso
Aplique o conteúdo do arquivo YAML ao KMS e crie o recurso
KeyExport:kubectl apply -f FILENAME.yamlSubstitua FILENAME pelo nome do arquivo YAML.
Depois de executar o comando, o KMS atualiza o status do recurso
KeyExporte gera uma chave exportada. Para receber a chave exportada, consulte o status do recurso.Para conferir o status do recurso, execute o seguinte comando:
kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECTSubstitua as seguintes variáveis:
- KEY_EXPORT_NAME: o nome do recurso
KeyExport, por exemplo,key-export-test. - PROJECT: o nome do namespace do projeto. Por exemplo,
kms-test1.
Depois de executar o comando, você vai ver uma saída semelhante a esta:
... 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_KEYEXPORTED_KEY representa os metadados da chave exportada. Copie o conteúdo em EXPORTED_KEY para continuar com a próxima etapa.
- KEY_EXPORT_NAME: o nome do recurso
Edite o arquivo YAML que contém o recurso
KeyImporte adicione o conteúdo copiado da saída emkeyexport.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_KEYDepois de editar o arquivo YAML, aplique o conteúdo ao KMS:
kubectl apply -f FILENAME.yamlDepois de executar o comando, o KMS importa a chave exportada que você forneceu.
Para conferir detalhes sobre a chave importada, execute o seguinte:
kubectl get keyimport KEY_IMPORT_NAMEVocê verá uma saída semelhante a esta:
NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVEKEY_PRIMITIVE representa o tipo de chave que você importou, entre as chaves AEAD e de assinatura.