Importe e exporte chaves

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:

  1. Crie um ficheiro YAML e adicione o recurso KeyImport como o valor do objeto kind:

    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` .
  2. 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 para AwaitingKeyToImport. Para continuar, tem de ver o estado do recurso e obter a chave pública gerada pelo KMS.

  3. 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.

  4. Crie outro ficheiro YAML, adicione o recurso KeyExport como o valor do objeto kind 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.

  5. 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.

  6. 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.

  7. Edite o ficheiro YAML que contém o recurso KeyImport e adicione o conteúdo que copiou da saída em 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
    
  8. 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.

  9. 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.