Este documento mostra como importar e exportar chaves do Key Management System (KMS). Estas operações usam a interface de linhas de comandos (CLI) kubectl e interagem com os seguintes recursos do Kubernetes:
Para ver mais detalhes sobre estes recursos, consulte a vista geral da API do KMS.
Consulte a secção Chaves compatíveis no documento Key Management System para ver a lista completa e os detalhes das chaves compatíveis com o KMS.
Este documento destina-se a públicos-alvo no grupo de operadores de aplicações quando realizam operações de gestão de chaves no Google Distributed Cloud (GDC) air-gapped. Para mais informações, consulte o artigo Públicos-alvo para a documentação do GDC air-gapped.
Antes de começar
Antes de importar ou exportar chaves, tem de ter as autorizações necessárias e preparar o seu ambiente.
Peça funções de IAM
Contacte o administrador de IAM da sua organização para pedir as seguintes funções no seu projeto:
- Administrador de importação de chaves do KMS (
kms-keyimport-admin): crie, atualize e elimine recursosKeyImport. - Administrador de exportação de chaves do KMS (
kms-keyexport-admin): crie, atualize e elimine recursosKeyExport.
Prepare o seu ambiente
Transfira e instale a CLI gdcloud, se ainda não o tiver feito.
Gere um ficheiro kubeconfig para configurar o acesso
kubectl.
Importe uma chave exportada
Para importar uma chave exportada, conclua os seguintes passos:
Crie um ficheiro 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 espaço de nomes do projeto por exemplo:
kms-test1. - MECHANISM: o mecanismo de partilha de chaves da chave por exemplo: `EDCH_P521_AES256` .
- KEY_IMPORT_NAME: o nome do recurso
Aplique o conteúdo do ficheiro YAML ao KMS e crie o recurso
KeyImport:kubectl apply -f FILENAME.yamlSubstitua FILENAME pelo nome do ficheiro YAML.
Com a chave pública de um par de chaves gerado internamente, o KMS atualiza o estado do recurso
KeyImportparaAwaitingKeyToImport. Para continuar, tem de ver o estado do recurso e obter a chave pública gerada pelo KMS.Para ver o estado do recurso
KeyImporte obter 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 espaço de nomes do projeto por
exemplo:
kms-test1.
Depois de executar o comando, vê um resultado semelhante ao seguinte:
... 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
KeyExportno passo seguinte.- KEY_IMPORT_NAME: o nome do recurso
Crie outro ficheiro 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 espaço de nomes do projeto por exemplo:
kms-test1.MECHANISM: o mecanismo de partilha de chaves 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 ficheiro YAML ao KMS e crie o recurso
KeyExport:kubectl apply -f FILENAME.yamlSubstitua FILENAME pelo nome do ficheiro YAML.
Depois de executar o comando, o KMS atualiza o estado do recurso
KeyExporte gera uma chave exportada. Para obter a chave exportada, veja o estado do recurso.Para ver o estado 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 espaço de nomes do projeto por
exemplo:
kms-test1.
Depois de executar o comando, vê um resultado semelhante ao seguinte:
... 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 o passo seguinte.
- KEY_EXPORT_NAME: o nome do recurso
Edite o ficheiro YAML que contém o recurso
KeyImporte adicione o conteúdo que copiou do resultado 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 ficheiro YAML, aplique o conteúdo ao KMS:
kubectl apply -f FILENAME.yamlDepois de executar o comando, o KMS importa a chave exportada que forneceu.
Para ver os detalhes da chave importada, execute o seguinte comando:
kubectl get keyimport KEY_IMPORT_NAMEVê um resultado semelhante ao seguinte:
NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVEKEY_PRIMITIVE representa o tipo de chave que importou, entre as chaves AEAD e de assinatura.