En esta página se incluyen instrucciones para que el operador de aplicaciones (AO) realice operaciones de importación de claves desde sistemas de gestión de claves (KMS) exportados. La AO realiza las operaciones de importación y exportación mediante la interfaz de línea de comandos (CLI) kubectl
de los siguientes recursos:
Para ver más detalles sobre estos recursos, consulta la descripción general de la API KMS.
Consulta la sección Claves admitidas de la página Sistemas de gestión de claves (KMS) para ver la lista completa y los detalles de las claves admitidas por KMS.
Antes de empezar
Antes de continuar, asegúrate de que tienes lo siguiente:
El comando
kubectl
configurado para acceder al servidor de la API Management. Para ello, sigue las secciones Obtener un archivo kubeconfig y Interfaz de línea de comandos (CLI) de gdcloud.Los roles 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, pide a tu administrador de la plataforma que te conceda 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
).
Importar una clave exportada
Para importar una clave exportada, sigue estos pasos:
Crea un archivo YAML y añade el recurso
KeyImport
como valor del objetokind
:apiVersion: "kms.gdc.goog/v1" kind: KeyImport metadata: name: KEY_IMPORT_NAME namespace: PROJECT spec: context: mechanism: MECHANISM
Sustituye las siguientes variables:
- KEY_IMPORT_NAME: el nombre del recurso
KeyImport
(por ejemplo,key-import-test
). - PROJECT: el nombre del espacio de nombres del proyecto, por ejemplo,
kms-test1
. - MECHANISM: 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 a KMS y crea el
KeyImport
recurso:kubectl apply -f FILENAME.yaml
Sustituye FILENAME por el nombre del archivo YAML.
Con la clave pública de un par de claves generado internamente, KMS actualiza el estado del recurso
KeyImport
aAwaitingKeyToImport
. Para continuar, debes ver el estado del recurso y obtener la clave pública generada por KMS.Para ver el estado del recurso
KeyImport
y obtener la clave pública generada por KMS, ejecuta lo siguiente:kubectl describe keyimport KEY_IMPORT_NAME --namespace PROJECT
Sustituye las siguientes variables:
- KEY_IMPORT_NAME: el nombre del recurso
KeyImport
(por ejemplo,key-import-test
). - PROJECT: 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 añádela al recurso
KeyExport
en el paso siguiente.- KEY_IMPORT_NAME: el nombre del recurso
Crea otro archivo YAML, añade el recurso
KeyExport
como valor del objetokind
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
Sustituye las siguientes variables:
- KEY_EXPORT_NAME: el nombre del recurso
KeyExport
(por ejemplo,key-export-test
). PROJECT: el nombre del espacio de nombres del proyecto. Por ejemplo,
kms-test1
.MECHANISM: el mecanismo de uso compartido de la clave por ejemplo: `EDCH_P521_AES256` .
PUBLIC_KEY: la clave pública de
keyImport.Status.PeerContext.PublicKey
.KEY_PRIMITIVE: el CRD de la clave (por ejemplo, aeadkey y signingkey).
KEY_NAME: el nombre de la clave (por ejemplo,
key-1
).
- KEY_EXPORT_NAME: el nombre del recurso
Aplica el contenido del archivo YAML a KMS y crea el
KeyExport
recurso:kubectl apply -f FILENAME.yaml
Sustituye FILENAME por el nombre del archivo YAML.
Después de ejecutar el comando, KMS actualiza el estado del recurso
KeyExport
y genera una clave exportada. Para obtener la clave exportada, consulta el estado del recurso.Para ver el estado del recurso, ejecute lo siguiente:
kubectl describe keyexport KEY_EXPORT_NAME --namespace PROJECT
Sustituye las siguientes variables:
- KEY_EXPORT_NAME: el nombre del
KeyExport
recurso (por ejemplo,key-export-test
). - PROJECT: 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: el nombre del
Edita el archivo YAML que contiene el recurso
KeyImport
y añade el contenido que has copiado del resultado enkeyexport.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 has proporcionado.
Para ver los detalles de la clave importada, ejecuta lo siguiente:
kubectl get keyimport KEY_IMPORT_NAME
Verá 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 has importado, entre las claves AEAD y de firma.