Crear un conjunto de claves

En esta página se explica cómo crear un conjunto de claves en Cloud KMS. Un conjunto de claves es el recurso raíz de las claves y las versiones de claves de Cloud KMS. Cada llavero existe en una ubicación determinada. Para obtener más información sobre los recursos de Cloud KMS, consulta Recursos de Cloud KMS.

Antes de empezar

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

  • Un recurso de proyecto para contener tus recursos de Cloud KMS. Google Cloud Este proyecto se denomina proyecto de claves. Te recomendamos que tu proyecto clave no contenga ningún otroGoogle Cloud recurso. Habilita la API Cloud KMS en tu proyecto de claves.

    Activar la API

  • El nombre de la ubicación en la que quieres crear el llavero. Elige una ubicación que esté cerca de 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.

Roles obligatorios

Para obtener los permisos que necesitas para crear conjuntos de claves, pide a tu administrador que te asigne el rol de gestión de identidades y accesos Administrador de Cloud KMS (roles/cloudkms.admin) en el proyecto o en un recurso principal. Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Este rol predefinido contiene los permisos necesarios para crear conjuntos de claves. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para crear conjuntos de claves, se necesitan los siguientes permisos:

  • cloudkms.keyRings.create
  • cloudkms.keyRings.get
  • cloudkms.keyRings.list
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

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

Crear un conjunto de claves

Sigue estos pasos para crear un conjunto de claves para tu nueva clave. Si quieres usar un conjunto de claves que ya tengas, puedes crear una clave.

Consola

  1. Ve a la página Gestión de claves de la Google Cloud consola.

    Ir a Administración de claves

  2. Haz clic en Crear conjunto de claves.

  3. En Nombre del conjunto de claves, introduce el nombre que quieras darle al conjunto de claves.

  4. En Ubicación del conjunto de claves, selecciona una ubicación como "us-east1".

  5. Haz clic en Crear.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

  2. En tu entorno, ejecuta el comando gcloud kms keyrings create:

    gcloud kms keyrings create KEY_RING \
        --location LOCATION
    

    Haz los cambios siguientes:

    • KEY_RING: el nombre del conjunto de claves que contiene la clave.
    • LOCATION: la ubicación de Cloud KMS del conjunto de claves.

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

  3. 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.Api.Gax.ResourceNames;
    using Google.Cloud.Kms.V1;
    
    public class CreateKeyRingSample
    {
        public KeyRing CreateKeyRing(
          string projectId = "my-project", string locationId = "us-east1",
          string id = "my-key-ring")
        {
            // Create the client.
            KeyManagementServiceClient client = KeyManagementServiceClient.Create();
    
            // Build the parent location name.
            LocationName locationName = new LocationName(projectId, locationId);
    
            // Build the key ring.
            KeyRing keyRing = new KeyRing { };
    
            // Call the API.
            KeyRing result = client.CreateKeyRing(locationName, id, keyRing);
    
            // Return the result.
            return result;
        }
    }

    Go

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

    import (
    	"context"
    	"fmt"
    	"io"
    
    	kms "cloud.google.com/go/kms/apiv1"
    	"cloud.google.com/go/kms/apiv1/kmspb"
    )
    
    // createKeyRing creates a new ring to store keys on KMS.
    func createKeyRing(w io.Writer, parent, id string) error {
    	// parent := "projects/PROJECT_ID/locations/global"
    	// id := "my-key-ring"
    
    	// Create the client.
    	ctx := context.Background()
    	client, err := kms.NewKeyManagementClient(ctx)
    	if err != nil {
    		return fmt.Errorf("failed to create kms client: %w", err)
    	}
    	defer client.Close()
    
    	// Build the request.
    	req := &kmspb.CreateKeyRingRequest{
    		Parent:    parent,
    		KeyRingId: id,
    	}
    
    	// Call the API.
    	result, err := client.CreateKeyRing(ctx, req)
    	if err != nil {
    		return fmt.Errorf("failed to create key ring: %w", err)
    	}
    	fmt.Fprintf(w, "Created key ring: %s\n", result.Name)
    	return nil
    }
    

    Java

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

    import com.google.cloud.kms.v1.KeyManagementServiceClient;
    import com.google.cloud.kms.v1.KeyRing;
    import com.google.cloud.kms.v1.LocationName;
    import java.io.IOException;
    
    public class CreateKeyRing {
    
      public void createKeyRing() throws IOException {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "your-project-id";
        String locationId = "us-east1";
        String id = "my-asymmetric-signing-key";
        createKeyRing(projectId, locationId, id);
      }
    
      // Create a new key ring.
      public void createKeyRing(String projectId, String locationId, String id) throws IOException {
        // Initialize client that will be used to send requests. This client only
        // needs to be created once, and can be reused for multiple requests. After
        // completing all of your requests, call the "close" method on the client to
        // safely clean up any remaining background resources.
        try (KeyManagementServiceClient client = KeyManagementServiceClient.create()) {
          // Build the parent name from the project and location.
          LocationName locationName = LocationName.of(projectId, locationId);
    
          // Build the key ring to create.
          KeyRing keyRing = KeyRing.newBuilder().build();
    
          // Create the key ring.
          KeyRing createdKeyRing = client.createKeyRing(locationName, id, keyRing);
          System.out.printf("Created key ring %s%n", createdKeyRing.getName());
        }
      }
    }

    Node.js

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

    //
    // TODO(developer): Uncomment these variables before running the sample.
    //
    // const projectId = 'my-project';
    // const locationId = 'us-east1';
    // const id = 'my-key-ring';
    
    // Imports the Cloud KMS library
    const {KeyManagementServiceClient} = require('@google-cloud/kms');
    
    // Instantiates a client
    const client = new KeyManagementServiceClient();
    
    // Build the parent location name
    const locationName = client.locationPath(projectId, locationId);
    
    async function createKeyRing() {
      const [keyRing] = await client.createKeyRing({
        parent: locationName,
        keyRingId: id,
      });
    
      console.log(`Created key ring: ${keyRing.name}`);
      return keyRing;
    }
    
    return createKeyRing();

    PHP

    Para ejecutar este código, primero debes consultar información sobre cómo usar PHP en Google Cloud e instalar el SDK de PHP de Cloud KMS.

    use Google\Cloud\Kms\V1\Client\KeyManagementServiceClient;
    use Google\Cloud\Kms\V1\CreateKeyRingRequest;
    use Google\Cloud\Kms\V1\KeyRing;
    
    function create_key_ring(
        string $projectId = 'my-project',
        string $locationId = 'us-east1',
        string $id = 'my-key-ring'
    ): KeyRing {
        // Create the Cloud KMS client.
        $client = new KeyManagementServiceClient();
    
        // Build the parent location name.
        $locationName = $client->locationName($projectId, $locationId);
    
        // Build the key ring.
        $keyRing = new KeyRing();
    
        // Call the API.
        $createKeyRingRequest = (new CreateKeyRingRequest())
            ->setParent($locationName)
            ->setKeyRingId($id)
            ->setKeyRing($keyRing);
        $createdKeyRing = $client->createKeyRing($createKeyRingRequest);
        printf('Created key ring: %s' . PHP_EOL, $createdKeyRing->getName());
    
        return $createdKeyRing;
    }

    Python

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

    from google.cloud import kms
    
    
    def create_key_ring(
        project_id: str, location_id: str, key_ring_id: str
    ) -> kms.CryptoKey:
        """
        Creates a new key ring in Cloud KMS
    
        Args:
            project_id (string): Google Cloud project ID (e.g. 'my-project').
            location_id (string): Cloud KMS location (e.g. 'us-east1').
            key_ring_id (string): ID of the key ring to create (e.g. 'my-key-ring').
    
        Returns:
            KeyRing: Cloud KMS key ring.
    
        """
    
        # Create the client.
        client = kms.KeyManagementServiceClient()
    
        # Build the parent location name.
        location_name = f"projects/{project_id}/locations/{location_id}"
    
        # Build the key ring.
        key_ring = {}
    
        # Call the API.
        created_key_ring = client.create_key_ring(
            request={
                "parent": location_name,
                "key_ring_id": key_ring_id,
                "key_ring": key_ring,
            }
        )
        print(f"Created key ring: {created_key_ring.name}")
        return created_key_ring
    
    

    Ruby

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

    # TODO(developer): uncomment these values before running the sample.
    # project_id  = "my-project"
    # location_id = "us-east1"
    # id = "my-key-ring"
    
    # Require the library.
    require "google/cloud/kms"
    
    # Create the client.
    client = Google::Cloud::Kms.key_management_service
    
    # Build the parent location name.
    location_name = client.location_path project: project_id, location: location_id
    
    # Build the key ring.
    key_ring = {}
    
    # Call the API.
    created_key_ring = client.create_key_ring parent: location_name, key_ring_id: id, key_ring: key_ring
    puts "Created key ring: #{created_key_ring.name}"

    API

    En estos ejemplos se usa curl como cliente HTTP para mostrar cómo se usa la API. Para obtener más información sobre el control de acceso, consulta el artículo sobre cómo acceder a la API Cloud KMS.

    curl "https://cloudkms.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/keyRings?key_ring_id=KEY_RING" \
        --request "POST" \
        --header "authorization: Bearer TOKEN"
    

    Haz los cambios siguientes:

    • PROJECT_ID: el ID del proyecto que contiene el conjunto de claves.
    • KEY_RING: el nombre del conjunto de claves que contiene la clave.
    • LOCATION: la ubicación de Cloud KMS del conjunto de claves.

    Para obtener más información, consulta la documentación de la API KeyRing.create.

Siguientes pasos