Crear clave

En esta página se explica cómo crear una clave en Cloud KMS. Una clave puede ser una clave de cifrado simétrica o asimétrica, una clave de firma asimétrica o una clave de firma MAC.

Cuando creas una clave, la añades a un llavero de claves en una ubicación de Cloud KMS específica. Puedes crear un nuevo llavero o usar uno que ya tengas. En esta página, se genera una clave de Cloud KMS o Cloud HSM y se añade a un llavero de claves. Para crear una clave de Cloud EKM, consulta Crear una clave externa. Para importar una clave de Cloud KMS o Cloud HSM, consulta Importar una clave.

Antes de empezar

Antes de completar las tareas de esta página, necesitas lo siguiente:

  1. Un recurso de proyecto que contenga tus recursos de Cloud KMS. Google Cloud Te recomendamos que uses un proyecto independiente para tus recursos de Cloud KMS que no contenga ningún otro recurso de Google Cloud .
  2. El nombre y la ubicación del conjunto de claves en el que quieras crear la clave. Elige un llavero en una ubicación cercana a tus otros recursos y que admita el nivel de protección que hayas elegido. Para ver las ubicaciones disponibles y los niveles de protección que admiten, consulta Ubicaciones de Cloud KMS. Para crear un conjunto de claves, consulta Crear un conjunto de claves.
  3. Opcional: Para usar la CLI de gcloud, prepara tu entorno.

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    Roles obligatorios

    Para obtener los permisos que necesitas para crear claves, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto o en un recurso principal:

    Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar acceso a proyectos, carpetas y organizaciones.

    Estos roles predefinidos contienen los permisos necesarios para crear claves. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

    Permisos obligatorios

    Para crear claves, se necesitan los siguientes permisos:

    • cloudkms.cryptoKeys.create
    • cloudkms.cryptoKeys.get
    • cloudkms.cryptoKeys.list
    • cloudkms.cryptoKeyVersions.create
    • cloudkms.cryptoKeyVersions.get
    • cloudkms.cryptoKeyVersions.list
    • cloudkms.keyRings.get
    • cloudkms.keyRings.list
    • cloudkms.locations.get
    • cloudkms.locations.list
    • resourcemanager.projects.get
    • Para obtener una clave pública, sigue estos pasos: cloudkms.cryptoKeyVersions.viewPublicKey
    • Para crear claves de HSM de un solo inquilino, sigue estos pasos:
      • cloudkms.singleTenantHsmInstances.get
      • cloudkms.singleTenantHsmInstances.use

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

    Crear una clave de cifrado simétrica

    Consola

    1. En la consola de Google Cloud , ve a la página Gestión de claves.

      Ir a Administración de claves

    2. Haga clic en el nombre del conjunto de claves para el que creará una clave.

    3. Haz clic en Crear clave.

    4. En Nombre de la clave, introduce el nombre que quieras darle a la clave.

    5. En Nivel de protección, selecciona Software, HSM o HSM de un solo arrendatario.

    6. Si has seleccionado HSM de único propietario, selecciona la instancia de HSM de único propietario en la que quieras crear la clave.

    7. En Material de la clave, selecciona Clave generada.

    8. En Propósito, selecciona Encriptado y desencriptado simétrico.

    9. Acepta los valores predeterminados de Periodo de rotación y Empezar el.

    10. Haz clic en Crear.

    gcloud

    Para usar Cloud KMS en la línea de comandos, primero instala o actualiza a la versión más reciente de la CLI de Google Cloud.

    Para crear una clave de software o de Cloud HSM multiinquilino, usa el comando kms keys create:

    gcloud kms keys create KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --purpose "encryption" \
        --protection-level "PROTECTION_LEVEL"
    

    Haz los cambios siguientes:

    • KEY_NAME: el nombre de la clave.
    • KEY_RING: el nombre del conjunto de claves que contiene la clave.
    • LOCATION: la ubicación de Cloud KMS del conjunto de claves.
    • PROTECTION_LEVEL: el nivel de protección que se va a usar para la clave (por ejemplo, software o hsm). Puedes omitir la marca --protection-level en las claves software.

    Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

    Para crear una clave de Cloud HSM de un solo inquilino, añade la marca --crypto-key-backend al comando kms keys create:

    gcloud kms keys create KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --purpose "encryption" \
        --protection-level "hsm-single-tenant" \
        --crypto-key-backend="projects/INSTANCE_PROJECT/locations/LOCATION/singleTenantHsmInstances/INSTANCE_NAME"
    

    Haz los cambios siguientes:

    • INSTANCE_PROJECT: identificador del proyecto en el que se encuentra tu instancia de Cloud HSM de un solo inquilino.
    • INSTANCE_NAME: nombre de la instancia de Single-tenant Cloud HSM en la que quieres crear la clave. Para obtener más información sobre las instancias de Cloud HSM de un solo inquilino, consulta el artículo Crear y gestionar una instancia de Cloud HSM de un solo inquilino.

    Para obtener información sobre todas las marcas y los valores posibles, ejecuta el comando con la marca --help.

    C#

    Para ejecutar este código, primero debes configurar un entorno de desarrollo de C# e instalar el SDK de Cloud KMS para C#.

    
    using Google.Cloud.Kms.V1;
    
    public class CreateKeySymmetricEncryptDecryptSample
    {
        public CryptoKey CreateKeySymmetricEncryptDecrypt(
          string projectId = "my-project", string locationId = "us-east1", string keyRingId = "my-key-ring",
          string id = "my-symmetric-encryption-key")
        {
            // Create the client.
            KeyManagementServiceClient client = KeyManagementServiceClient.Create();
    
            // Build the parent key ring name.
            KeyRingName keyRingName = new KeyRingName(projectId