Paso 3: Crea claves de encriptación

Estás viendo la documentación de Apigee X.
Consulta la documentación de Apigee Edge.

Qué se hace en este paso

En esta sección, se describe cómo crear las claves de aplicación y disco que Apigee usa para encriptar los datos que se comunican entre las aplicaciones, la base de datos y los datos escritos en el disco.

No puedes usar el asistente de aprovisionamiento de Apigee para realizar este paso. Sin embargo, puedes usar la línea de comandos o la IU de Cloud Console para crear las claves de encriptación. Para obtener más información, consulta Usa claves de encriptación administradas por el cliente (CMEK) > Crea una clave.

En este procedimiento, realizarás tres tareas principales:

  1. Crear el agente de servicio de Apigee. Deberás realizar este paso en la línea de comandos mediante el comando de gcloud.
  2. Crear la clave de encriptación de la aplicación que encripta los datos de aplicación, como las KVM, la caché y los secretos del cliente, que luego se almacenan en la base de datos:
    1. Crear un llavero de claves único
    2. Crear la clave de aplicación
    3. Otorgar al agente de servicio de Apigee acceso a la clave.
  3. Crear la clave y el llavero de claves de encriptación del disco, y otorgar acceso a ella. La clave de encriptación del disco encripta los datos de la instancia del entorno de ejecución antes de que se escriban en el disco.

Para obtener más información, consulta Acerca de las claves de encriptación de Apigee.

Requisitos previos

Para completar este paso, necesitas la siguiente información:

  • Tu ID del proyecto de Google Cloud.
  • La ubicación del entorno de ejecución que pretendes usar para tu organización de Apigee. Para obtener más información, consulta Zonas y regiones disponibles.
  • Nombres únicos para el llavero de claves y la clave de la aplicación
  • Una ubicación de tu clave de aplicación y el llavero de claves. Puede ser la misma que la ubicación del entorno de ejecución, pero no es necesario que lo sea. Debe ser una región de Compute válida.
  • Nombres únicos del llavero de claves y la clave de disco.

Realiza el paso

Crear el agente de servicio de Apigee.

Debes realizar este paso en la línea de comandos mediante gcloud.

  1. Accede a Cloud mediante el siguiente comando:
    gcloud auth login

    El comando abre una ventana del navegador y te solicita que elijas una cuenta (si tienes más de una). Cloud te solicita que permitas el acceso. Solo tienes que hacerlo una vez: no tendrás que ejecutar este comando, elegir una cuenta ni permitir el acceso en el futuro.

  2. Inicializa el SDK de Cloud, como se describe en Inicializa el SDK de Cloud; por ejemplo:
    gcloud init

    Durante la inicialización del SDK, ingresa o selecciona el ID del proyecto que creaste en los Requisitos. Configura este proyecto como el predeterminado. No es necesario que ejecutes este comando en el futuro, a menos que desees cambiar las configuraciones predeterminadas.

    Es posible que se te solicite que elijas la configuración. Si aprovisionas una instalación de Apigee nueva (lo que se supone en estos pasos), elige [2] Create a new configuration.

    Cuando ejecutes gcloud init, se te solicitará lo siguiente:

    • Un nombre de configuración. Debe comenzar con una letra en minúscula y puede contener una combinación de letras minúsculas, números y guiones. Deberás hacer referencia a este nombre si deseas cambiar los valores predeterminados para esta configuración de nube en el futuro.
    • El usuario que establece esta configuración. Por lo general, serás tú, pero puede ser otro usuario o una cuenta de servicio de nube que tenga permisos para administrar parámetros de configuración de la nube.
    • El ID del proyecto de Cloud en el que ejecutarás Apigee. Este es el proyecto que creaste en los requisitos previos.
    • La región y zona predeterminadas de Compute y la zona para tu proyecto. Puedes omitir este paso.
  3. Crea la variable de entorno PROJECT_ID y establécela para el ID del proyecto de Cloud que creaste como parte de los Requisitos. Si no estás seguro de cuál es tu ID del proyecto, usa Cloud Console o el comando gcloud projects list para encontrarlo.
    PROJECT_ID="YOUR_PROJECT_ID"
  4. Ejecuta el comando services identity create:

    gcloud  beta services identity create --service=apigee.googleapis.com --project=$PROJECT_ID
  5. Verifica que el agente se haya creado correctamente. La respuesta debe mostrar el nombre del agente en el siguiente formato: service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com. Por ejemplo:

    Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com

    Copia este nombre. La necesitarás en pasos posteriores.

Crea los llaveros de claves y las claves, y otorga al agente de servicio de Apigee acceso a las claves.

Puedes seguir estos pasos en Cloud Platform Console o en la línea de comandos de gcloud.

Otorgarás acceso al agente de servicio a cada clave inmediatamente después de crearla, antes de crear la siguiente clave.

Cloud Console

  1. Antes de crear las claves en Cloud Platform Console, debes crear el agente de servicio de Apigee en la línea de comandos:
  2. Ve a la página Claves criptográficas.
    Ir a la página Claves criptográficas
  3. Busca el nombre del proyecto seleccionado junto a Google Cloud Platform y asegúrate de que esté seleccionado el proyecto correcto.
  4. Crea el llavero de claves y la clave de aplicación: Haz clic en CREAR UN LLAVERO DE CLAVES.
  5. Agrega el Nombre del llavero de claves. Debe ser identificable como el llavero de claves de tu aplicación.

    El nombre del llavero de claves debe ser único para tu organización. Si creas regiones adicionales, los nombres de llaveros de claves de esas regiones no pueden ser los mismos que los nombres de llaveros de claves existentes.

  6. Selecciona una ubicación del llavero de claves. Esta es la ubicación física en la que se almacenan el llavero de claves y la clave de tu aplicación. Apigee usa una clave de aplicación para encriptar datos de aplicación, como las KVM, la caché y los secretos del cliente, que luego se almacenan en la base de datos.

    Al igual que la región de estadísticas, los valores válidos son un subconjunto de las regiones de Compute Engine. El valor puede ser el mismo que la ubicación del entorno de ejecución de tu organización de Apigee (también, una región), pero no es necesario que lo sea. Puede haber un beneficio de rendimiento si son iguales.

    La ubicación de la clave de encriptación de la aplicación de Apigee admite todas las ubicaciones de Cloud KMS compatibles con Cloud HSM y Cloud EKM.

  7. Haga clic en CREAR. Se abre la página Crear clave.
  8. Agrega el Nombre de la clave.
  9. Selecciona un Propósito, Encriptación/desencriptación simétrica.
  10. Selecciona un Período de rotación y una Fecha de inicio (para la mayoría de las implementaciones, el valor predeterminado de 90 días es correcto).
  11. Haga clic en CREAR.
  12. Agrega el agente de servicio de Apigee a la clave con la función de Encriptador/desencriptador de clave criptográfica de Cloud KMS.
    1. Selecciona la clave que acabas de crear en la tabla Claves.
    2. Haz clic en AGREGAR MIEMBRO en la pestaña PERMISOS a la izquierda de la tabla.

      Si no se muestra la pestaña PERMISOS, haz clic en MOSTRAR PANEL DE INFORMACIÓN.

    3. Ingresa el agente de servicio de Apigee que creaste en el paso 1 de este procedimiento.

      El nombre del agente de servicio debe tener el siguiente patrón: service-PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com. Por ejemplo:

      Service identity created: service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
    4. En el menú desplegable Seleccionar una función, selecciona Cloud KMS > Encriptador/Desencriptador de CryptoKey de Cloud KMS.
    5. Haz clic en Guardar para agregar la cuenta de servicio.
  13. En la tabla Claves, haz clic en los tres puntos en la última columna y selecciona Copiar nombre del recurso. Deberás proporcionar este valor como el ID de la clave de encriptación de la base de datos del entorno de ejecución en el siguiente paso, Paso 4: Crea una organización.
  14. Haz clic en la flecha junto a Detalles del llavero de claves para regresar a la lista de llaveros de claves.

    muestra la lista de llaveros de claves

  15. Crea la clave y el llavero de claves del disco: Haz clic en CREAR LLAVERO DE CLAVES.
  16. Agrega el Nombre del llavero de claves. Debe poder identificarse como el llavero de claves del disco y no puede ser igual al llavero de claves de la aplicación.
  17. Selecciona una ubicación del llavero de claves. Debe ser la misma que la ubicación del entorno de ejecución de tu organización de Apigee.
  18. Haga clic en CREAR. Se abre la página Crear clave.
  19. Agrega el Nombre de la clave.
  20. Selecciona un Propósito, Encriptación/desencriptación simétrica.
  21. Haga clic en CREAR.
  22. Agrega el agente de servicio de Apigee a la clave con la función de Encriptador/desencriptador de clave criptográfica de Cloud KMS.
  23. Copia el nombre de recurso de la clave de disco con el menú al final de la tabla Claves. Deberás proporcionar este valor como el ID de clave de encriptación del disco más adelante en el Paso 6: Crea una instancia de entorno de ejecución.

gcloud

Primero, crea las variables de entorno que necesitarás para estos pasos:

  1. Define las siguientes variables de entorno para el proyecto actual:
    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    RUNTIME_LOCATION="YOUR_RUNTIME_LOCATION"
    APPKEY_LOCATION="APPKEY_LOCATION"
    APPKEY_KEY_RING_NAME="APPKEY_KEY_RING_NAME"
    APPKEY_KEY_NAME="APPKEY_KEY_NAME"
    DISK_KEY_RING_NAME="DISK_KEY_RING_NAME"
    DISK_KEY_NAME="DISK_KEY_NAME"
    

    Aquí:

    • PROJECT_NUMBER es el número de proyecto de Cloud que creaste como parte de los requisitos. En este ejemplo, se emite un comando gcloud para obtener el número del proyecto. Como alternativa, puedes encontrarlo en el panel de proyecto de Cloud Console o puedes usar el comando gcloud projects list para buscarlo.
    • RUNTIME_LOCATION es la ubicación física donde se ubicará tu instancia de Apigee. Los valores válidos son cualquier región de Compute Engine. Para obtener la lista de nombres de región válidos, consulta Ubicaciones de Compute Engine.

    • APPKEY_LOCATION es la ubicación física en la que se almacenan el llavero de claves y la clave de la aplicación. Apigee usa una clave de aplicación para encriptar datos de aplicación, como las KVM, la caché y los secretos del cliente, que luego se almacenan en la base de datos.

      Al igual que la ubicación del entorno de ejecución, los valores válidos son un subconjunto de las regiones de Compute Engine. El valor puede ser el mismo que el $RUNTIME_LOCATION (también es una región), pero no es necesario que lo sea. Sin embargo, puede haber un beneficio de rendimiento si son iguales.

    • APPKEY_KEY_RING_NAME es el nombre del llavero de claves en el que se almacena la clave de la aplicación. El nombre del llavero de claves debe ser único para tu organización. Si creas regiones adicionales, los nombres de llaveros de claves de esas regiones no pueden ser los mismos que los nombres de llaveros de claves existentes.
    • APPKEY_KEY_NAME es el nombre de la clave de aplicación. Los nombres de clave de aplicación deben ser únicos dentro de un llavero de claves dado.
    • DISK_KEY_RING_NAME es el nombre del llavero de claves del disco. El nombre del llavero de claves del disco debe ser diferente del nombre de la clave de aplicación. Crearás el llavero de claves del disco en la misma ubicación que tu $RUNTIME_LOCATION.
    • DISK_KEY_NAME es el nombre de la clave de encriptación de disco, que Apigee usa para encriptar los datos de instancia del entorno de ejecución antes de que se escriban en el disco.

    En el siguiente ejemplo, se definen las variables de entorno para una organización paga:

    PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format="value(projectNumber)")
    RUNTIME_LOCATION="us-west1"
    APPKEY_LOCATION="us-west1"
    APPKEY_KEY_RING_NAME="my-app-key-ring"
    APPKEY_KEY_NAME="my-app-key"
    DISK_KEY_RING_NAME="my-disk-key-ring"
    DISK_KEY_NAME="my-disk-key"
    .

    Usarás los nombres de las variables, como $PROJECT_ID como literales de string en tus comandos.

    Ten en cuenta que no puedes usar todas estas variables de entorno durante el aprovisionamiento y la configuración.

  2. (Opcional) Para verificar su trabajo, repita los valores que acaba de configurar. Ten en cuenta que cuando quieras usar una variable en tus comandos, deberás colocar un signo de dólar antes de su nombre ($).
    echo $PROJECT_ID
    echo $PROJECT_NUMBER
    echo $RUNTIME_LOCATION
    echo $APPKEY_LOCATION
    echo $APPKEY_KEY_RING_NAME
    echo $APPKEY_KEY_NAME
    echo $DISK_KEY_RING_NAME
    echo $DISK_KEY_NAME
    

    Las respuestas a tus comandos echo deberían verse de la siguiente manera:

    my-cloud-project
    1234567890
    us-west1
    us-west1
    my-app-key-ring
    my-app-key
    my-disk-key-ring
    my-disk-key
    

Para crear la clave de encriptación de la aplicación, sigue estos pasos:

  1. Crea un llavero de claves de disco nuevo con el comando de gcloud kms keyrings create:
    gcloud kms keyrings create $APPKEY_KEY_RING_NAME \
      --location $APPKEY_LOCATION \
      --project $PROJECT_ID

    En el ejemplo anterior, APPKEY_KEY_RING_NAME es el nombre del llavero de claves que crearás.

    El nombre del llavero de claves debe ser único para tu organización. Si creas regiones adicionales, los nombres de llaveros de claves de esas regiones no pueden ser los mismos que los nombres de llaveros de claves existentes.

    La ubicación de la clave de encriptación de la aplicación de Apigee admite todas las ubicaciones de Cloud KMS compatibles con Cloud HSM y Cloud EKM.

  2. Crea una clave mediante el comando gcloud kms keys create:
    gcloud kms keys create $APPKEY_KEY_NAME \
      --keyring $APPKEY_KEY_RING_NAME \
      --location $APPKEY_LOCATION \
      --purpose "encryption" \
      --project $PROJECT_ID

    En el ejemplo anterior, APPKEY_KEY_NAME es el nombre de la clave que crearás.

    Deberás anotar el ID de la clave de la clave a fin de hacer referencia a ella. Puedes obtener el ID de clave con el siguiente comando:

    gcloud kms keys list \
      --location=$APPKEY_LOCATION \
      --keyring=$APPKEY_KEY_RING_NAME \
      --project=$PROJECT_ID

    El ID de clave tiene la siguiente sintaxis (similar a una ruta de archivo):

    projects/PROJECT_ID/locations/APPKEY_LOCATION/keyRings/APPKEY_KEY_RING_NAME/cryptoKeys/APPKEY_KEY_NAME

    Por ejemplo:

    projects/my-cloud-project/locations/us-west1/keyRings/my-app-key-ring/cryptoKeys/my-app-key
  3. Otorga acceso al agente de servicio de Apigee para usar la clave nueva mediante la ejecución del comando gcloud kms keys add-iam-policy-binding con la siguiente sintaxis:
    gcloud kms keys add-iam-policy-binding $APPKEY_KEY_NAME \
      --location $APPKEY_LOCATION \
      --keyring $APPKEY_KEY_RING_NAME \
      --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project $PROJECT_ID

    Este comando vincula la clave con el agente de servicio de Apigee.

    Cuando se completa correctamente esta solicitud, gcloud muestra una respuesta similar a la siguiente:

    Updated IAM policy for key [runtime].
    bindings:
    - members:
      - serviceAccount:service-1234567890@gcp-sa-apigee.iam.gserviceaccount.com
      role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    etag: BwWqgEuCuwk=
    version: 1

    Si recibes un error, haz lo siguiente:

    INVALID_ARGUMENT: Role roles/cloudkms.cryptokms.cryptoKeyEncrypterDecrypter is not supported for this resource.

    Asegúrate de haber usado el número del proyecto, y no el nombre, en la dirección de correo electrónico de la cuenta de servicio.

Para crear la clave de encriptación de disco, sigue estos pasos:

  1. Crea un llavero de claves de disco nuevo con el comando de gcloud kms keyrings create:
    gcloud kms keyrings create $DISK_KEY_RING_NAME \
      --location $RUNTIME_LOCATION \
      --project $PROJECT_ID

    Por ejemplo:

     class="devsite-terminal"gcloud kms keyrings create my-disk-key-ring \
      --location $RUNTIME_LOCATION \
      --project my-cloud-project

    Esto crea un llavero de claves nuevo con el nombre my-disk-key-ring. El llavero de claves del disco debe estar configurado en la misma ubicación que la instancia. Cada instancia y llavero de claves deben tener su propia ubicación.

  2. Crea un clave de disco nueva con el comando de gcloud kms keys create:
    gcloud kms keys create $DISK_KEY_NAME \
      --keyring $DISK_KEY_RING_NAME \
      --location $RUNTIME_LOCATION \
      --purpose "encryption" \
      --project $PROJECT_ID

    Por ejemplo:

    gcloud kms keys create my-disk-key --keyring my-disk-key-ring \
      --location $RUNTIME_LOCATION --purpose "encryption" --project my-cloud-project

    En este ejemplo, se crea una clave nueva llamada my-disk-key y la agrega al llavero de claves my-disk-key-ring.

    Se puede hacer referencia a la clave por la ruta de acceso de la clave. Puedes obtener la ruta de acceso de la clave con el siguiente comando:

    gcloud kms keys list \
      --location=$RUNTIME_LOCATION \
      --keyring=$DISK_KEY_RING_NAME \
      --project=$PROJECT_ID

    En la ruta de acceso de la clave tiene la siguiente sintaxis:

    projects/PROJECT_ID/locations/RUNTIME_LOCATION/keyRings/KEY_RING_NAME/cryptoKeys/DISK_KEY_NAME

    Por ejemplo:

    projects/my-cloud-project/locations/$RUNTIME_LOCATION/keyRings/my-disk-key-ring/cryptoKeys/my-disk-key
  3. Otorga acceso al agente de servicio de Apigee para que use la clave nueva mediante la ejecución del comando gcloud kms keys add-iam-policy-binding:
    gcloud kms keys add-iam-policy-binding $DISK_KEY_NAME \
      --location $RUNTIME_LOCATION \
      --keyring $DISK_KEY_RING_NAME \
      --member serviceAccount:service-$PROJECT_NUMBER@gcp-sa-apigee.iam.gserviceaccount.com \
      --role roles/cloudkms.cryptoKeyEncrypterDecrypter \
      --project $PROJECT_ID

    Este comando vincula la clave con el agente de servicio de Apigee.

Si encuentras errores durante esta parte del proceso, consulta Solución de problemas.


1 2 3 A CONTINUACIÓN: Crea una organización 5 6 7 8 9