Crear recursos protegidos con Autokey de Cloud KMS

En esta página se muestra cómo crear recursos protegidos con claves creadas por Autokey de Cloud KMS para el cifrado. Para obtener más información sobre Autokey, consulta el resumen de Autokey.

Antes de empezar

Para poder crear recursos protegidos con Autokey, debes completar los siguientes pasos:

  1. Si aún no tienes un proyecto de recursos en la carpeta Autokey, debes crear un proyecto para alojar los recursos que quieras crear.
  2. Para obtener los permisos que necesitas para usar Autokey y crear claves protegidas, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Usuario de Autokey de Cloud KMS (roles/cloudkms.autokeyUser) en la carpeta o el proyecto. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

    También puedes conseguir los permisos necesarios a través de roles personalizados u otros roles predefinidos.

  3. También necesitas permisos de creación de recursos en la carpeta Autokey o en un proyecto de recursos de la carpeta. Para obtener más información sobre los permisos necesarios para crear cada recurso, consulta la documentación específica del servicio. Para consultar esta documentación, busca el servicio en la tabla de integraciones de CMEK y visita el enlace del tipo de recurso que quieras crear.

Usar Autokey con recursos de Compute Engine

Autokey crea una clave para cada disco, imagen e imagen de máquina en la misma ubicación que el recurso que se está creando.

Autokey no crea claves nuevas para las instantáneas. Las capturas deben usar la misma clave que se ha usado para cifrar el disco. Si creas una captura con la consolaGoogle Cloud , la clave de cifrado que usa el disco se aplica automáticamente a la captura. Si creas una captura mediante la CLI de gcloud, Terraform o la API de Compute Engine, debes identificar la clave usada para cifrar el disco y usarla para cifrar la captura.

Para obtener más información sobre cómo usar CMEK con capturas, consulta Crear una captura a partir de un disco cifrado con CMEK.

Crear un recurso de Compute Engine protegido

Consola

Para crear un disco, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Discos.

    Ir a Discos

  2. Haz clic en Crear disco e introduce las propiedades del nuevo disco.

  3. En Encriptado, selecciona Clave de Cloud KMS.

  4. En Tipo de clave, selecciona Cloud KMS con Autokey y, a continuación, haz clic en Solicitar una clave nueva. Aparecerá un mensaje que indica cuándo se ha creado correctamente la llave y está lista para usarse.

  5. Para terminar de crear el disco, haz clic en Crear.

Puedes seguir un proceso similar para crear recursos de instancias de VM, imágenes e imágenes de máquina protegidos.

Terraform

El siguiente ejemplo de Terraform crea un identificador de clave y usa la clave devuelta para proteger un nuevo recurso de disco persistente:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "KEY_HANDLE"
  location               = "LOCATION"
  resource_type_selector = "compute.googleapis.com/Disk"
}

resource "google_compute_disk" "persistent_disk" {
  project = "RESOURCE_PROJECT_ID"
  name    = "DISK_NAME"
  type    = "pd-ssd"
  zone    = "ZONE"
  size    = 30
  physical_block_size_bytes = 4096
  disk_encryption_key {
    kms_key_self_link = google_kms_key_handle.my_key_handle.kms_key
  }
}

Haz los cambios siguientes:

  • RESOURCE_PROJECT_ID: el ID del proyecto de recurso de la carpeta Autokey en la que quieras crear un recurso protegido.
  • KEY_HANDLE: un ID que se usará para el identificador de la clave.
  • LOCATION: la ubicación en la que quieres crear el recurso protegido.
  • DISK_NAME: el nombre del nuevo disco.
  • ZONE: la zona del recurso protegido. Debe ser una zona de la ubicación en la que crees el recurso. Por ejemplo, si creas el recurso en la ubicación us-central1, la zona podría ser us-central1-a.

Cloud KMS no permite eliminar recursos KeyHandle. Si usas un patrón de creación y destrucción, al intentar recrear un KeyHandle se produce un error ALREADY_EXISTS. Para evitar este problema, puedes importar un KeyHandle que hayas creado anteriormente. Para obtener más información, consulta el artículo Crear y eliminar patrones en Terraform de esta página.

API

  1. Solicita una nueva clave de Cloud KMS creando un KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • RESOURCE_TYPE: el tipo de recurso que quieres crear. Por ejemplo, compute.googleapis.com/Disk.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anota el OPERATION_ID de la salida. Necesitarás este valor para obtener el ID de recurso de la clave creada.

  2. Busca la clave de Cloud KMS asociada al identificador de clave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • OPERATION_ID: identificador de la operación de solicitud de controlador de clave de la salida del paso anterior.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    El valor del elemento kmsKey de la salida es el ID de recurso completo de la clave creada por Autokey para este recurso. Puedes usar este ID de recurso de la misma forma que usarías el ID de recurso de cualquier otro recurso de Cloud KMS.

  3. Crea un disco cifrado con el comando gcloud compute disks create y la marca --kms-key:

    gcloud compute disks create DISK_NAME \
      --kms-key projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME
    

    Haz los cambios siguientes:

    • DISK_NAME: el nombre del nuevo disco.
    • KEY_PROJECT_ID: el ID del proyecto de la clave.
    • LOCATION: la ubicación en la que quieres crear el recurso.
    • KEY_NAME: el nombre de la clave devuelta en la salida del paso anterior.

Usar Autokey con recursos de Cloud Storage

Autokey crea una clave en la misma ubicación que el segmento. La clave creada por Autokey se asigna como clave predeterminada del contenedor.

Autokey no crea claves para objetos. De forma predeterminada, los objetos creados en un segmento usan la clave predeterminada del segmento. Si quieres cifrar un objeto con una clave que no sea la predeterminada del segmento, puedes crear manualmente una CMEK y usarla al crear el objeto.

Si quieres cambiar la clave predeterminada asignada a un segmento, puedes usar cualquier CMEK que ya tengas, incluidas las claves creadas por Autokey.

Crear un recurso de Cloud Storage protegido

Consola

  1. En la Google Cloud consola, vaya a la página Crear un bucket.

    Ir a Crear un segmento

  2. Sigue las instrucciones para crear un nuevo contenedor hasta que llegues a Elige cómo proteger los datos de los objetos.

  3. En Elige cómo proteger los datos de los objetos, despliega la sección Encriptado de datos y, a continuación, selecciona Clave de Cloud KMS.

  4. En Tipo de clave, selecciona Cloud KMS con Autokey y, a continuación, haz clic en Solicitar una clave nueva. Aparecerá un mensaje que indica cuándo se ha creado correctamente la llave y está lista para usarse.

  5. Para terminar de crear el segmento, haz clic en Crear.

Terraform

El siguiente ejemplo de Terraform crea un identificador de clave y usa la clave devuelta para proteger un nuevo contenedor de almacenamiento:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "KEY_HANDLE"
  location               = "LOCATION"
  resource_type_selector = "storage.googleapis.com/Bucket"
}

resource "google_storage_bucket" "simple_bucket_name" {
  name                        = "BUCKET_NAME"
  location                    = "LOCATION"
  force_destroy               = true
  project                     = "RESOURCE_PROJECT_ID"
  uniform_bucket_level_access = true
  encryption {
    default_kms_key_name      = google_kms_key_handle.my_key_handle.kms_key
  }
}

Haz los cambios siguientes:

  • RESOURCE_PROJECT_ID: el ID del proyecto de recurso de la carpeta Autokey en la que quieras crear un recurso protegido.
  • KEY_HANDLE: un ID que se usará para el identificador de la clave.
  • LOCATION: la ubicación en la que quieres crear el recurso protegido.
  • BUCKET_NAME: el nombre del nuevo segmento.

Cloud KMS no permite eliminar recursos KeyHandle. Si usas un patrón de creación y destrucción, al intentar recrear un KeyHandle se produce un error ALREADY_EXISTS. Para evitar este problema, puedes importar un KeyHandle que hayas creado anteriormente. Para obtener más información, consulta el artículo Crear y eliminar patrones en Terraform de esta página.

API

  1. Solicita una nueva clave de Cloud KMS creando un KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • RESOURCE_TYPE: el tipo de recurso que quieres crear. Por ejemplo, storage.googleapis.com/Bucket.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anota el OPERATION_ID de la salida. Necesitarás este valor para obtener el ID de recurso de la clave creada.

  2. Busca la clave de Cloud KMS asociada al identificador de clave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • OPERATION_ID: identificador de la operación de solicitud de controlador de clave de la salida del paso anterior.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    El valor del elemento kmsKey de la salida es el ID de recurso completo de la clave creada por Autokey para este recurso. Puedes usar este ID de recurso del mismo modo que usarías el ID de recurso de cualquier otro recurso de Cloud KMS.

  3. Crea un segmento cifrado con el comando gcloud storage buckets create y la marca --default-encryption-key:

    gcloud storage buckets create gs://BUCKET_NAME \
        --location=LOCATION \
        --default-encryption-key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME
    

    Haz los cambios siguientes:

    • BUCKET_NAME: el nombre del nuevo segmento. El nombre del segmento debe cumplir los requisitos de nomenclatura de segmentos.
    • LOCATION: la ubicación en la que quieres crear el contenedor.
    • KEY_PROJECT_ID: el ID del proyecto de la clave.
    • LOCATION: la ubicación en la que quieres crear el recurso.
    • KEY_NAME: el nombre de la clave devuelta en la salida del paso anterior.

Usar Autokey con recursos de BigQuery

Cloud KMS está disponible en varias ediciones de BigQuery. Asegúrate de que la edición de BigQuery que utilizas sea compatible con Cloud KMS antes de intentar usar Autokey para proteger los recursos de BigQuery. Para obtener más información sobre las ediciones de BigQuery, consulta el artículo Información sobre las ediciones de BigQuery.

Por cada conjunto de datos nuevo, Autokey crea una clave en la misma ubicación que el recurso, que se convierte en la clave predeterminada del conjunto de datos.

Autokey no crea claves para tablas, consultas, tablas temporales ni modelos. De forma predeterminada, estos recursos están protegidos por la clave predeterminada del conjunto de datos. Si quieres proteger un recurso de un conjunto de datos con una clave que no sea la predeterminada del conjunto de datos, puedes crear manualmente una CMEK y usarla al crear el recurso.

En el caso de las consultas y las tablas temporales que no estén en un conjunto de datos, utilice las claves predeterminadas del proyecto. Usa una clave predeterminada de proyecto diferente para cada ubicación del proyecto que contenga recursos de BigQuery. Para obtener más información sobre cómo usar las claves predeterminadas de un proyecto, consulta Definir una clave predeterminada de un proyecto.

Para obtener más información sobre el uso de CMEK con BigQuery, consulta el artículo sobre las claves de Cloud KMS gestionadas por el cliente.

Crear un recurso de BigQuery protegido

Consola

Antes de intentar crear un conjunto de datos de BigQuery con Autokey, asegúrate de que tienes los permisos necesarios. Para obtener más información sobre cómo crear conjuntos de datos, consulta Crear conjuntos de datos.

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. Sigue las instrucciones para crear un conjunto de datos hasta que llegues a Opciones avanzadas > Cifrado.

  3. En Encriptado, selecciona Clave de Cloud KMS.

  4. En Tipo de clave, selecciona Cloud KMS con Autokey y, a continuación, haz clic en Solicitar una clave nueva. Aparecerá un mensaje que indica cuándo se ha creado correctamente la llave y está lista para usarse.

  5. Para terminar de crear el conjunto de datos, haz clic en Crear conjunto de datos.

Terraform

El siguiente ejemplo de Terraform crea un identificador de clave y usa la clave devuelta para proteger un nuevo conjunto de datos:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "test-key-handle"
  location               = "LOCATION"
  resource_type_selector = "bigquery.googleapis.com/Dataset"
}

resource "google_bigquery_dataset" "dataset" {
  project                     = "RESOURCE_PROJECT_ID"
  dataset_id                  = "DATASET_ID"
  friendly_name               = "DATASET_NAME"
  description                 = "DATASET_DESCRIPTION"
  location                    = "LOCATION"
  default_table_expiration_ms = 3600000

  default_encryption_configuration {
    kms_key_name = google_kms_key_handle.my_key_handle.kms_key
  }
}

Haz los cambios siguientes:

  • RESOURCE_PROJECT_ID: el ID del proyecto de recurso de la carpeta Autokey en la que quieras crear un recurso protegido.
  • LOCATION: la ubicación en la que quieres crear el recurso protegido.
  • DATASET_ID: el ID que se va a usar en el nuevo conjunto de datos.
  • DATASET_NAME: un nombre descriptivo para el nuevo conjunto de datos.
  • DATASET_DESCRIPTION: una descripción del nuevo conjunto de datos.

Cloud KMS no permite eliminar recursos KeyHandle. Si usas un patrón de creación y destrucción, al intentar recrear un KeyHandle se produce un error ALREADY_EXISTS. Para evitar este problema, puedes importar un KeyHandle que hayas creado anteriormente. Para obtener más información, consulta el artículo Crear y eliminar patrones en Terraform de esta página.

API

  1. Solicita una nueva clave de Cloud KMS creando un KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • RESOURCE_TYPE: el tipo de recurso que quieres crear. Por ejemplo, bigquery.googleapis.com/Dataset.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anota el OPERATION_ID de la salida. Necesitarás este valor para obtener el ID de recurso de la clave creada.

  2. Busca la clave de Cloud KMS asociada al identificador de clave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • OPERATION_ID: identificador de la operación de solicitud de controlador de clave de la salida del paso anterior.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    El valor del elemento kmsKey de la salida es el ID de recurso completo de la clave creada por Autokey para este recurso. Puedes usar este ID de recurso del mismo modo que usarías el ID de recurso de cualquier otro recurso de Cloud KMS.

  3. Crea un conjunto de datos cifrado con el bq mk comando y la marca --destination_kms_key.

    bq --location=LOCATION mk \
        --dataset \
        --default_kms_key=projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME \
        --default_table_expiration=TABLE_EXPIRATION \
        --description="DATASET_DESCRIPTION" \
        RESOURCE_PROJECT_ID:DATASET_ID
    

    Haz los cambios siguientes:

    • LOCATION: la ubicación en la que quieres crear el conjunto de datos.
    • KEY_PROJECT_ID: el ID del proyecto de la clave.
    • KEY_NAME: el nombre de la clave devuelta en la salida del paso anterior.
    • TABLE_EXPIRATION: tiempo de vida predeterminado de las tablas nuevas de este conjunto de datos, en segundos.
    • DATASET_DESCRIPTION: una descripción del nuevo conjunto de datos.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • DATASET_ID: el ID del conjunto de datos que vas a crear.

    Para obtener más información sobre la herramienta bq, consulta Explorar la herramienta de línea de comandos bq.

Usar Autokey con recursos de Secret Manager

Autokey crea una sola clave para proteger todos los secretos del mismo proyecto y ubicación. Cuando se rota la clave, los nuevos secretos que se añadan al proyecto usarán la nueva versión principal de la clave.

Secret Manager solo es compatible con Autokey de Cloud KMS cuando se crean recursos con Terraform o la API REST.

Crear un recurso protegido de Secret Manager

Terraform

El siguiente ejemplo de Terraform crea un identificador de clave y usa la clave devuelta para proteger un nuevo secreto con replicación automática:

resource "google_kms_key_handle" "my_key_handle" {
  provider               = google-beta
  project                = "RESOURCE_PROJECT_ID"
  name                   = "test-key-handle"
  location               = "global"
  resource_type_selector = "secretmanager.googleapis.com/Secret"
}

resource "google_secret_manager_secret" "my_secret" {
  project   = "RESOURCE_PROJECT_ID"
  secret_id = "SECRET_ID"

  replication {
    auto {
      customer_managed_encryption {
        kms_key_name = google_kms_key_handle.my_key_handle.kms_key
      }
    }
  }
}

Haz los cambios siguientes:

  • RESOURCE_PROJECT_ID: el ID del proyecto de recurso de la carpeta Autokey en la que quieras crear un recurso protegido.
  • SECRET_ID: el ID que se va a usar para el nuevo secreto.

Si intentas crear un identificador de clave para un secreto en el mismo proyecto y ubicación para los que ya existe un identificador de clave, se devolverá un mensaje de error con los detalles del identificador de clave. Si esto ocurre, asegúrate de que solo haya un bloque que cree el identificador de clave. Puedes reutilizar el identificador de clave con su ID (KEY_HANDLE) para crear secretos adicionales que deban compartir la clave.

Cloud KMS no permite eliminar recursos KeyHandle. Si usas un patrón de creación y destrucción, al intentar recrear un KeyHandle se produce un error ALREADY_EXISTS. Para evitar este problema, puedes importar un KeyHandle que hayas creado anteriormente. Para obtener más información, consulta el artículo Crear y eliminar patrones en Terraform de esta página.

API

  1. Solicita una nueva clave de Cloud KMS creando un KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "RESOURCE_TYPE"}'
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • RESOURCE_TYPE: el tipo de recurso que quieres crear. Por ejemplo, secretmanager.googleapis.com/Secret.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anota el OPERATION_ID de la salida. Necesitarás este valor para obtener el ID de recurso de la clave creada.

    Si intentas crear un identificador de clave para un secreto en el mismo proyecto y ubicación para los que ya existe un identificador de clave, se devolverá un mensaje de error con los detalles del identificador de clave. En este caso, omite el siguiente paso y usa el ID de recurso de la clave en el campo existingKmsKey para proteger tu nuevo secreto.

  2. Busca la clave de Cloud KMS asociada al identificador de clave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • OPERATION_ID: identificador de la operación de solicitud de controlador de clave de la salida del paso anterior.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    El valor del elemento kmsKey de la salida es el ID de recurso completo de la clave creada por Autokey para este recurso. Puedes usar este ID de recurso del mismo modo que usarías el ID de recurso de cualquier otro recurso de Cloud KMS.

  3. Crea un secreto cifrado con replicación automática mediante el comando gcloud secrets create con la marca --kms-key-name.

    gcloud secrets create "SECRET_ID" \
        --replication-policy "automatic" \
        --kms-key-name "projects/KEY_PROJECT_ID/locations/global/keyRings/autokey/cryptoKeys/KEY_NAME" \
        --project "RESOURCE_PROJECT_ID"
    

    Haz los cambios siguientes:

    • SECRET_ID: el ID que se va a usar para el nuevo secreto.
    • KEY_PROJECT_ID: el ID del proyecto de la clave.
    • KEY_NAME: el nombre de la clave devuelta en la salida del paso anterior.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.

Usar Autokey con recursos de Dataflow

Autokey se puede usar para crear una sola clave para cada tarea de Dataflow.

API

  1. Solicita una nueva clave de Cloud KMS creando un KeyHandle:

    curl -H "Content-Type: application/json" \
        -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X POST https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles \
        -d '{"resource_type_selector": "dataflow.googleapis.com/Job"}'
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.CreateKeyHandleMetadata"
      }
    }
    

    Anota el OPERATION_ID de la salida. Necesitarás este valor para obtener el ID de recurso de la clave creada.

  2. Busca la clave de Cloud KMS asociada al identificador de clave:

    curl -H "X-Goog-User-Project: USER_PROJECT" \
        -H "Authorization: Bearer TOKEN" \
        -X GET https://cloudkms.googleapis.com/v1/projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID
    

    Haz los cambios siguientes:

    • USER_PROJECT: el proyecto al que se le facturarán los cargos asociados a esta solicitud.
    • RESOURCE_PROJECT_ID: el ID del proyecto del recurso del proyecto de la carpeta Autokey en el que quieras crear un recurso protegido.
    • LOCATION: la ubicación en la que quieres crear el recurso protegido.
    • OPERATION_ID: identificador de la operación de solicitud de controlador de clave de la salida del paso anterior.

    El resultado debería ser similar al siguiente:

    {
      "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/operations/OPERATION_ID",
      "done": true,
      "response": {
        "@type": "type.googleapis.com/google.cloud.kms.v1.KeyHandle",
        "name": "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE",
        "kmsKey": "projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/autokey/cryptoKeys/KEY_NAME",
        "resourceTypeSelector": "RESOURCE_TYPE"
      }
    }
    

    El valor del elemento kmsKey de la salida es el ID de recurso completo de la clave creada por Autokey para este recurso. Puedes usar este ID de recurso de la misma forma que usarías el ID de recurso de cualquier otro recurso de Cloud KMS.

Patrones de creación y destrucción en Terraform

Cloud KMS no permite eliminar recursos KeyHandle. Si usas Terraform y un patrón de creación y eliminación, al intentar volver a crear un KeyHandle, se produce un error ALREADY_EXISTS. Para evitar este problema, utiliza un bloque import. Inserta el siguiente bloque antes del bloque resource del recurso google_kms_key_handle:

import {
  to = google_kms_key_handle.KEY_HANDLE
  id = "projects/RESOURCE_PROJECT_ID/locations/LOCATION/keyHandles/KEY_HANDLE"
}

Siguientes pasos