Neste documento, mostramos como importar e exportar chaves do sistema de gerenciamento de chaves (KMS, na sigla em inglês). Essas operações usam a interface de linha de comando (CLI) kubectl e
interagem com os seguintes recursos do Kubernetes:
Para mais detalhes sobre esses recursos, consulte a visão geral da API KMS.
Consulte a seção Chaves compatíveis no documento do sistema de gerenciamento de chaves para ver a lista completa e os detalhes das chaves compatíveis com o KMS.
Este documento é destinado a públicos-alvo do grupo de operadores de aplicativos ao realizar operações de gerenciamento de chaves no Google Distributed Cloud (GDC) com isolamento físico. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.
Antes de começar
Antes de importar ou exportar chaves, você precisa ter as permissões necessárias e preparar o ambiente.
Solicitar papéis do IAM
Entre em contato com o admin. da organização do IAM para solicitar os seguintes papéis no seu projeto:
- Administrador de importação de chaves do KMS (
kms-keyimport-admin): criar, atualizar e excluir recursosKeyImport. - Administrador de exportação de chaves do KMS (
kms-keyexport-admin): criar, atualizar e excluir recursosKeyExport.
Preparar o ambiente
Faça o download e instale a CLI gdcloud, caso ainda não tenha feito isso.
Gere um arquivo kubeconfig para configurar o acesso ao
kubectl.
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, você precisa ver o status do recurso e receber 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: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ê verá uma saída parecida com 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 etapa a seguir.- KEY_IMPORT_NAME: o nome do recurso
Crie outro arquivo YAML, adicione o recurso
KeyExportcomo o valor do objetokinde o seguinte conteúdo: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: a 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 acessar a chave exportada, confira o status do recurso.Para ver o status do recurso, execute o seguinte:
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 receber uma saída como 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 para 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 que você copiou 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 ver 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.