Importa y exporta claves

En esta página, se incluyen instrucciones para que el operador de aplicaciones (AO) realice operaciones clave de importación desde claves de sistemas de administración de claves (KMS) exportadas. El AO realiza las operaciones de importación y exportación con la interfaz de línea de comandos (CLI) de kubectl desde los siguientes recursos:

Para ver más detalles sobre estos recursos, consulta la descripción general de la API de KMS.

Consulta la sección Claves compatibles en la página Sistemas de administración de claves (KMS) para ver la lista completa y los detalles de las claves compatibles con KMS.

Antes de comenzar

Antes de continuar, asegúrate de tener lo siguiente:

  • El comando kubectl configurado para acceder al servidor de la API de Management Para ello, sigue las secciones Obtén un archivo kubeconfig y Interfaz de línea de comandos (CLI) de gcloud.

  • Las funciones de administrador de importación de claves de KMS y administrador de exportación de claves de KMS Para obtener los permisos que necesitas para importar una clave exportada, pídele a tu administrador de la plataforma (PA) que te otorgue los roles de administrador de importación de claves de KMS (kms-keyimport-admin) y administrador de exportación de claves de KMS (kms-keyexport-admin).

Importa una clave exportada

Para importar una clave exportada, completa los siguientes pasos:

  1. Crea un archivo YAML y agrega el recurso KeyImport como el valor del objeto kind:

    apiVersion: "kms.gdc.goog/v1"
    kind: KeyImport
    metadata:
      name: KEY_IMPORT_NAME
      namespace: PROJECT
    spec:
      context:
        mechanism: MECHANISM
    

    Reemplaza las siguientes variables:

    • KEY_IMPORT_NAME: El nombre del recurso KeyImport — por ejemplo: key-import-test.
    • PROJECT: Es el nombre del espacio de nombres del proyecto, por ejemplo, kms-test1.
    • MECHANISM: Es el mecanismo de uso compartido de la clave. Por ejemplo, `EDCH_P521_AES256` .
  2. Aplica el contenido del archivo YAML al KMS y crea el recurso KeyImport:

    kubectl apply -f FILENAME.yaml
    

    Reemplaza FILENAME por el nombre del archivo YAML.

    Con la clave pública de un par de claves generado de forma interna, el KMS actualiza el estado del recurso KeyImport a AwaitingKeyToImport. Para continuar, debes ver el estado del recurso y obtener la clave pública generada por KMS.

  3. Para ver el estado del recurso KeyImport y obtener la clave pública generada por KMS, ejecuta el siguiente comando:

    kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT
    

    Reemplaza las siguientes variables:

    • KEY_IMPORT_NAME: Es el nombre del recurso KeyImport, por ejemplo, key-import-test.
    • PROJECT: Es el nombre del espacio de nombres del proyecto, por ejemplo, kms-test1.

    Después de ejecutar el comando, verás un resultado similar al siguiente:

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

    El valor PUBLIC_KEY representa la clave pública generada por KMS. Copia la clave pública y agrégala al recurso KeyExport en el siguiente paso.

  4. Crea otro archivo YAML, agrega el recurso KeyExport como el valor del objeto kind y el siguiente contenido:

    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
    

    Reemplaza las siguientes variables:

    • KEY_EXPORT_NAME: El nombre del recurso KeyExport — por ejemplo: key-export-test.
    • PROJECT: Es el nombre del espacio de nombres del proyecto, por ejemplo, kms-test1.

    • MECHANISM: Es el mecanismo de uso compartido de la clave. Por ejemplo, `EDCH_P521_AES256` .

    • PUBLIC_KEY: Es la clave pública de keyImport.Status.PeerContext.PublicKey.

    • KEY_PRIMITIVE: Es el CRD de la clave, por ejemplo, aeadkey y signingkey.

    • KEY_NAME: Es el nombre de la clave, por ejemplo, key-1.

  5. Aplica el contenido del archivo YAML al KMS y crea el recurso KeyExport:

    kubectl apply -f FILENAME.yaml
    

    Reemplaza FILENAME por el nombre del archivo YAML.

    Después de ejecutar el comando, el KMS actualiza el estado del recurso KeyExport y genera una clave exportada. Para obtener la clave exportada, consulta el estado del recurso.

  6. Para ver el estado del recurso, ejecuta el siguiente comando:

    kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT
    

    Reemplaza las siguientes variables:

    • KEY_EXPORT_NAME: Es el nombre del recurso KeyExport, por ejemplo, key-export-test.
    • PROJECT: Es el nombre del espacio de nombres del proyecto, por ejemplo, kms-test1.

    Después de ejecutar el comando, verás un resultado similar al siguiente:

    ...
    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 los metadatos de la clave exportada. Copia el contenido de EXPORTED_KEY para continuar con el siguiente paso.

  7. Edita el archivo YAML que contiene el recurso KeyImport y agrega el contenido que copiaste del resultado en 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. Después de editar el archivo YAML, aplica el contenido al KMS:

    kubectl apply -f FILENAME.yaml
    

    Después de ejecutar el comando, KMS importa la clave exportada que proporcionaste.

  9. Para ver los detalles de la clave importada, ejecuta el siguiente comando:

    kubectl get keyimport KEY_IMPORT_NAME
    

    Verás un resultado similar al siguiente:

    NAMESPACE   NAME             AGE    READY   REASON              KEY KIND
    kms-test1  KEY_IMPORT_NAME   60s    True    KeyImportCompleted  KEY_PRIMITIVE
    

    KEY_PRIMITIVE representa el tipo de clave que importaste, entre las claves AEAD y de firma.