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 - kubectlconfigurado 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:
- Crea un archivo YAML y agrega el recurso - KeyImportcomo 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` .
 
- KEY_IMPORT_NAME: El nombre del recurso 
- 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 - KeyImporta- AwaitingKeyToImport. Para continuar, debes ver el estado del recurso y obtener la clave pública generada por KMS.
- Para ver el estado del recurso - KeyImporty 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 - KeyExporten el siguiente paso.
- KEY_IMPORT_NAME: Es el nombre del recurso 
- Crea otro archivo YAML, agrega el recurso - KeyExportcomo el valor del objeto- kindy 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.
 
- KEY_EXPORT_NAME: El nombre del recurso 
- 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 - KeyExporty genera una clave exportada. Para obtener la clave exportada, consulta el estado del recurso.
- 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. 
- KEY_EXPORT_NAME: Es el nombre del recurso 
- Edita el archivo YAML que contiene el recurso - KeyImporty 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
- 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. 
- 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.