Configura Key Access Justifications con Cloud HSM

En esta página, se describe cómo configurar Key Access Justifications con Cloud HSM para Assured Workloads Paquete de control de regiones de Japón.

Durante los pasos para crear una nueva carpeta de Assured Workloads para las regiones de Japón, tienes la opción de crear un proyecto nuevo y un llavero para tus claves criptográficas. Las claves de Cloud HSM se pueden agregar a este llavero, y también puedes configurar una política de Key Access Justifications para controlar el acceso a cada clave.

Antes de comenzar

  • La capacidad de usar Key Access Justifications con claves de Cloud HSM solo está disponible para el paquete de control de regiones de Japón en Assured Workloads.
  • Asegúrate de que tu administrador te haya otorgado uno de los Roles de Identity and Access Management (IAM) para crear y administrar las políticas de Key Access Justifications y las claves de Cloud HSM.

Permisos de IAM obligatorios

Para obtener los permisos que necesitas para crear y administrar claves de Cloud HSM y sus políticas de Key Access Justifications, solicita a tu administrador que te otorgue el Rol de IAM de administrador de Cloud KMS (roles/cloudkms.admin) en el proyecto que contiene el llavero de claves. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear y administrar las claves de Cloud HSM y sus políticas de Key Access Justifications. Para ver los permisos exactos que son necesarios, expande la sección Permisos requeridos:

Permisos necesarios

Se requieren los siguientes permisos para crear y administrar claves de Cloud HSM y sus políticas de Key Access Justifications:

  • cloudkms.cryptoKeys.create
  • cloudkms.cryptoKeys.update
  • cloudkms.cryptoKeys.get

También puedes obtener estos permisos con roles personalizados o con otros roles predefinidos.

Configura una clave de Cloud HSM con Key Access Justifications

Para configurar las justificaciones de acceso a claves con una clave de Cloud HSM, puedes incluir la política de acceso a claves como un parámetro cuando crees la clave, o bien puedes actualizar la clave con la política después de crearla.

Crea una clave y una política nuevas

REST

Crea una nueva clave y política con el cryptoKeys.create método:

POST https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys?crypto_key_id=KEY_NAME

En la solicitud, reemplaza los siguientes valores de marcador de posición:

  • PROJECT_ID: El ID del proyecto que contiene el llavero de claves en el que Si deseas agregar una clave, por ejemplo, 919698201234.
  • LOCATION: Es la ubicación del llavero de claves, por ejemplo, us-west1.
  • KEY_RING: Es el nombre del llavero de claves que especificaste cuando creaste el proyecto y el llavero de claves de la carpeta Assured Workloads, por ejemplo, my-key-ring.
  • KEY_NAME: Es el nombre de la clave de HSM que deseas crear Por ejemplo, my-hsm-key.

Cuerpo de la solicitud:

{
  "purpose": "PURPOSE",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "ALGORITHM"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      ALLOWED_ACCESS_REASONS
    ]
  }
}

En el cuerpo de la solicitud, reemplaza los siguientes valores de marcador de posición:

  • PURPOSE: El propósito de la clave. Para obtener una lista de los diferentes propósitos de clave, consulta Propósitos de clave (por ejemplo, ENCRYPT_DECRYPT).
  • ALGORITHM: Es el algoritmo de criptografía que se usará. Para obtener una lista de algoritmos disponibles, consulta Algoritmos de Cloud KMS, por ejemplo, GOOGLE_SYMMETRIC_ENCRYPTION
  • ALLOWED_ACCESS_REASONS: Es la política de Key Access Justifications que define cero o más códigos de justificación permitidos para acceder a la clave de encriptación, por ejemplo, CUSTOMER_INITIATED_ACCESS.

En el siguiente ejemplo, la solicitud y el cuerpo de la solicitud solo permiten justificaciones de acceso por algunos motivos:

POST https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/keyRings/my-key-ring/cryptoKeys?crypto_key_id=my-hsm-key
{
  "purpose": "ENCRYPT_DECRYPT",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      "CUSTOMER_INITIATED_ACCESS",
      "GOOGLE_INITIATED_SYSTEM_OPERATION"
    ]
  }
}

Actualiza la política de una clave existente

REST

Actualiza una clave existente en Cloud KMS con cryptoKeys.patch método:

PATCH https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME?update_mask=keyAccessJustificationsPolicy

En la solicitud, reemplaza los siguientes valores de marcador de posición:

  • PROJECT_ID: El ID del proyecto que contiene la clave anillo para la clave, por ejemplo, 919698201234.
  • LOCATION: Es la ubicación del llavero de claves, por ejemplo, us-west1.
  • KEY_RING: Es el nombre del llavero de claves que especificaste cuando Creaste el proyecto de administración de claves de tu carpeta de Assured Workloads y el llavero de claves, por ejemplo, my-key-ring.
  • KEY_NAME: Es el nombre de la clave de HSM que deseas actualizar Por ejemplo, my-hsm-key.

Cuerpo de la solicitud:

{
  "purpose": "PURPOSE",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "ALGORITHM"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      ALLOWED_ACCESS_REASONS
    ]
  }
}

En el cuerpo de la solicitud, reemplaza los siguientes valores de marcador de posición:

  • PURPOSE: El propósito de la clave. Para obtener una lista de claves para propósitos específicos, consulta Propósitos de clave, por ejemplo, ENCRYPT_DECRYPT
  • ALGORITHM: Es el algoritmo de criptografía que se usará. Para obtener una lista de los algoritmos disponibles, consulta algoritmos de Cloud KMS, por ejemplo, GOOGLE_SYMMETRIC_ENCRYPTION.
  • ALLOWED_ACCESS_REASONS: Es la política de Key Access Justifications que define cero o más códigos de justificación permitidos para acceder a la clave de encriptación, por ejemplo, CUSTOMER_INITIATED_ACCESS.

La siguiente solicitud de ejemplo y el cuerpo de la solicitud solo permiten acceso justificaciones por varias razones:

PATCH https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-hsm-key?keyAccessJustificationsPolicy
{
  "purpose": "ENCRYPT_DECRYPT",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      "CUSTOMER_INITIATED_ACCESS",
      "GOOGLE_INITIATED_SYSTEM_OPERATION"
    ]
  }
}

Cómo obtener la política de Key Access Justifications de una clave

REST

Obtén metadatos sobre una clave existente en Cloud KMS con el método cryptoKeys.get:

GET https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME

En los parámetros de solicitud, reemplaza los siguientes valores de marcador de posición por tus propio:

  • PROJECT_ID: Es el ID del proyecto que contiene el llavero de claves, por ejemplo, 919698201234.
  • LOCATION: Es la ubicación del llavero de claves, por ejemplo, us-west1.
  • KEY_RING: Es el nombre del llavero de claves que especificaste cuando creaste el proyecto y el llavero de claves de la carpeta Assured Workloads, por ejemplo, my-key-ring.
  • KEY_NAME: Es el nombre de la clave de HSM que deseas obtener, por ejemplo, my-hsm-key.

En la siguiente solicitud de ejemplo, se obtienen metadatos sobre una clave en Cloud KMS:

GET https://cloudkms.googleapis.com/v1/projects/919698201234/locations/us-west1/keyRings/my-key-ring/cryptoKeys/my-hsm-key

El cuerpo de la respuesta contiene metadatos sobre tu clave, incluido el keyAccessJustificationsPolicy Por ejemplo:

{
  "purpose": "ENCRYPT_DECRYPT",
  "versionTemplate": {
    "protectionLevel": "HSM",
    "algorithm": "GOOGLE_SYMMETRIC_ENCRYPTION"
  },
  "keyAccessJustificationsPolicy": {
    "allowedAccessReasons": [
      "CUSTOMER_INITIATED_ACCESS",
      "GOOGLE_INITIATED_SYSTEM_OPERATION"
    ]
  }
}