Esta página abrange instruções para o operador da aplicação (AO) realizar operações de importação de chaves a partir de chaves de sistemas de gestão de chaves (KMS) exportadas. O AO executa as operações de importação e exportação através da interface de linhas de comando (CLI) kubectl
a partir dos seguintes recursos:
Para ver mais detalhes sobre estes recursos, consulte a vista geral da API KMS.
Consulte a secção Chaves suportadas na página Sistemas de gestão de chaves (KMS) para ver a lista completa e os detalhes das chaves suportadas pelo KMS.
Antes de começar
Antes de continuar, certifique-se de que tem o seguinte:
O comando
kubectl
configurado para aceder ao servidor da API Management. Para tal, siga as secções Obtenha um ficheiro kubeconfig e interface de linhas de comando (CLI) gdcloud.As funções de administrador de importação de chaves do KMS e administrador de exportação de chaves do KMS. Para receber as autorizações necessárias para importar uma chave exportada, peça ao administrador da plataforma (PA) que lhe conceda as funções de administrador de importação de chaves do KMS (
kms-keyimport-admin
) e administrador de exportação de chaves do KMS (kms-keyexport-admin
).
Importe uma chave exportada
Para importar uma chave exportada, conclua os seguintes passos:
Crie um ficheiro YAML e adicione o recurso
KeyImport
como o valor do objetokind
:apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM
Substitua 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 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
KeyImport
resource:kubectl apply -f FILENAME.yaml
Substitua 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
KeyImport
paraAwaitingKeyToImport
. Para continuar, tem de ver o estado do recurso e obter a chave pública gerada pelo KMS.Para ver o estado do recurso
KeyImport
e obter a chave pública gerada pelo KMS, execute o seguinte:kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT
Substitua 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
KeyExport
no passo seguinte.- KEY_IMPORT_NAME: o nome do recurso
Crie outro ficheiro YAML, adicione o recurso
KeyExport
como o valor do objetokind
e 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_NAME
Substitua 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 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 ficheiro YAML ao KMS e crie o
KeyExport
resource:kubectl apply -f FILENAME.yaml
Substitua FILENAME pelo nome do ficheiro YAML.
Após executar o comando, o KMS atualiza o estado do recurso
KeyExport
e gera uma chave exportada. Para obter a chave exportada, veja o estado do recurso.Para ver o estado do recurso, execute o seguinte:
kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT
Substitua 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_KEY
EXPORTED_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
KeyImport
e adicione o conteúdo que 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_KEY
Depois de editar o ficheiro YAML, aplique o conteúdo ao KMS:
kubectl apply -f FILENAME.yaml
Após executar o comando, o KMS importa a chave exportada que indicou.
Para ver detalhes sobre a chave importada, execute o seguinte comando:
kubectl get keyimport KEY_IMPORT_NAME
Vê um resultado semelhante ao seguinte:
NAMESPACE NAME AGE READY REASON KEY KIND kms-test1 KEY_IMPORT_NAME 60s True KeyImportCompleted KEY_PRIMITIVE
KEY_PRIMITIVE representa o tipo de chave que importou, entre as chaves AEAD e de assinatura.