Créer un secret régional

Cette page explique comment créer un secret régional. Un secret contient une ou plusieurs versions de secret, ainsi que des métadonnées telles que des libellés et des annotations. Le contenu réel d'un secret est stocké dans une version de secret.

Avant de commencer

  1. Activez l'API Secret Manager.

  2. Configurez Secret Manager pour utiliser un point de terminaison régional.

  3. Configurez l'authentification.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

      In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

      At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

      REST

      Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud .

      Rôles requis

      Pour obtenir les autorisations nécessaires pour créer un secret, demandez à votre administrateur de vous accorder le rôle IAM Administrateur Secret Manager (roles/secretmanager.admin) sur le projet, le dossier ou l'organisation. Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

      Vous pouvez également obtenir les autorisations requises avec des rôles personnalisés ou d'autres rôles prédéfinis.

      Créer un secret régional

      Vous pouvez créer des secrets à l'aide de la console Google Cloud , de Google Cloud CLI, de l'API Secret Manager ou des bibliothèques clientes Secret Manager.

      Console

      1. Dans la console Google Cloud , accédez à la page Secret Manager.

        Accéder à Secret Manager

      2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis sur Créer un secret régional.

      3. Sur la page Créer un secret régional, saisissez un nom pour le secret dans le champ Nom. Un nom de secret peut contenir des lettres majuscules et minuscules, des chiffres, des traits d'union et des traits de soulignement. La longueur maximale autorisée pour un nom est de 255 caractères.

      4. Saisissez une valeur pour le secret (par exemple, abcd1234). La valeur du secret peut être indiquée dans n'importe quel format, mais elle ne doit pas dépasser 64 Kio. Vous pouvez également importer un fichier texte contenant la valeur du secret à l'aide de l'option Importer un fichier. Cette action crée automatiquement la version du secret.

      5. Dans la liste Région, sélectionnez l'emplacement où vous souhaitez stocker votre secret régional.

      6. Cliquez sur Créer un secret.

      gcloud

      Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

      • SECRET_ID : ID du secret ou identifiant complet du secret
      • LOCATION : Google Cloud emplacement du secret

      Exécutez la commande suivante :

      Linux, macOS ou Cloud Shell

      gcloud secrets create SECRET_ID \
          --location=LOCATION

      Windows (PowerShell)

      gcloud secrets create SECRET_ID `
          --location=LOCATION

      Windows (cmd.exe)

      gcloud secrets create SECRET_ID ^
          --location=LOCATION

      REST

      Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

      • LOCATION : Google Cloud emplacement du secret
      • PROJECT_ID : ID du projet Google Cloud
      • SECRET_ID : ID du secret ou identifiant complet du secret

      Méthode HTTP et URL :

      POST https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID

      Corps JSON de la requête :

      {}
      

      Pour envoyer votre requête, choisissez l'une des options suivantes :

      curl

      Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d @request.json \
      "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"

      PowerShell

      Enregistrez le corps de la requête dans un fichier nommé request.json, puis exécutez la commande suivante :

      $cred = gcloud auth print-access-token
      $headers = @{ "Authorization" = "Bearer $cred" }

      Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

      Vous devriez recevoir une réponse JSON de ce type :

      {
        "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
        "createTime": "2024-03-25T08:24:13.153705Z",
        "etag": "\"161477e6071da9\""
      }
      

      Go

      Pour exécuter ce code, commencez par configurer un environnement de développement Go et installez le SDK Secret Manager pour Go. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.

      import (
      	"context"
      	"fmt"
      	"io"
      
      	secretmanager "cloud.google.com/go/secretmanager/apiv1"
      	"cloud.google.com/go/secretmanager/apiv1/secretmanagerpb"
      	"google.golang.org/api/option"
      )
      
      // createSecret creates a new secret with the given name. A secret is a logical
      // wrapper around a collection of secret versions. Secret versions hold the
      // actual secret material.
      func CreateRegionalSecret(w io.Writer, projectId, locationId, id string) error {
      	// parent := "projects/my-project/locations/my-location"
      	// id := "my-secret"
      
      	// Create the client.
      	ctx := context.Background()
      
      	//Endpoint to send the request to regional server
      	endpoint := fmt.Sprintf("secretmanager.%s.rep.googleapis.com:443", locationId)
      	client, err := secretmanager.NewClient(ctx, option.WithEndpoint(endpoint))
      	if err != nil {
      		return fmt.Errorf("failed to create secretmanager client: %w", err)
      	}
      	defer client.Close()
      
      	parent := fmt.Sprintf("projects/%s/locations/%s", projectId, locationId)
      
      	// Build the request.
      	req := &secretmanagerpb.CreateSecretRequest{
      		Parent:   parent,
      		SecretId: id,
      	}
      
      	// Call the API.
      	result, err := client.CreateSecret(ctx, req)
      	if err != nil {
      		return fmt.Errorf("failed to create regional secret: %w", err)
      	}
      	fmt.Fprintf(w, "Created regional secret: %s\n", result.Name)
      	return nil
      }
      

      Java

      Pour exécuter ce code, commencez par configurer un environnement de développement Java et installez le SDK Secret Manager pour Java. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.

      import com.google.cloud.secretmanager.v1.LocationName;
      import com.google.cloud.secretmanager.v1.Secret;
      import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;
      import com.google.cloud.secretmanager.v1.SecretManagerServiceSettings;
      import java.io.IOException;
      
      public class CreateRegionalSecret {
      
        public static void main(String[] args) throws IOException {
          // TODO(developer): Replace these variables before running the sample.
      
          // Your GCP project ID.
          String projectId = "your-project-id";
          // Location of the secret.
          String locationId = "your-location-id";
          // Resource ID of the secret to create.
          String secretId = "your-secret-id";
          createRegionalSecret(projectId, locationId, secretId);
        }
      
        // Create a new regional secret 
        public static Secret createRegionalSecret(
            String projectId, String locationId, String secretId) 
            throws IOException {
      
          // Endpoint to call the regional secret manager sever
          String apiEndpoint = String.format("secretmanager.%s.rep.googleapis.com:443", locationId);
          SecretManagerServiceSettings secretManagerServiceSettings =
              SecretManagerServiceSettings.newBuilder().setEndpoint(apiEndpoint).build();
      
          // Initialize the client that will be used to send requests. This client only needs to be
          // created once, and can be reused for multiple requests.
          try (SecretManagerServiceClient client = 
              SecretManagerServiceClient.create(secretManagerServiceSettings)) {
            // Build the parent name from the project.
            LocationName location = LocationName.of(projectId, locationId);
      
            // Build the regional secret to create.
            Secret secret =
                Secret.newBuilder().build();
      
            // Create the regional secret.
            Secret createdSecret = client.createSecret(location.toString(), secretId, secret);
            System.out.printf("Created regional secret %s\n", createdSecret.getName());
      
            return createdSecret;
          }
        }
      }

      Node.js

      Pour exécuter ce code, commencez par configurer un environnement de développement Node.js, puis installez le SDK Secret Manager pour Node.js. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.

      /**
       * TODO(developer): Uncomment these variables before running the sample.
       */
      // const projectId = 'my-project'
      // const locationId = 'locationId';
      // const secretId = 'my-secret';
      const parent = `projects/${projectId}/locations/${locationId}`;
      
      // Imports the Secret Manager libray
      
      const {SecretManagerServiceClient} = require('@google-cloud/secret-manager');
      
      // Adding the endpoint to call the regional secret manager sever
      const options = {};
      options.apiEndpoint = `secretmanager.${locationId}.rep.googleapis.com`;
      // Instantiates a client
      const client = new SecretManagerServiceClient(options);
      
      async function createRegionalSecret() {
        const [secret] = await client.createSecret({
          parent: parent,
          secretId: secretId,
        });
      
        console.log(`Created regional secret ${secret.name}`);
      }
      
      createRegionalSecret();

      Python

      Pour exécuter ce code, commencez par configurer un environnement de développement Python et installez le SDK Secret Manager pour Python. Sur Compute Engine ou GKE, vous devez vous authentifier avec le champ d'application cloud-platform.

      from google.cloud import secretmanager_v1
      
      
      def create_regional_secret(
          project_id: str,
          location_id: str,
          secret_id: str,
          ttl: Optional[str] = None,
      ) -> secretmanager_v1.Secret:
          """
          Creates a new regional secret with the given name.
          """
      
          # Endpoint to call the regional secret manager sever
          api_endpoint = f"secretmanager.{location_id}.rep.googleapis.com"
      
          # Create the Secret Manager client.
          client = secretmanager_v1.SecretManagerServiceClient(
              client_options={"api_endpoint": api_endpoint},
          )
      
          # Build the resource name of the parent project.
          parent = f"projects/{project_id}/locations/{location_id}"
      
          # Create the secret.
          response = client.create_secret(
              request={
                  "parent": parent,
                  "secret_id": secret_id,
                  "secret": {"ttl": ttl},
              }
          )
      
          # Print the new secret name.
          print(f"Created secret: {response.name}")
      
          return response
      
      

      Ajouter une version de secret

      Secret Manager gère automatiquement les versions des données secrètes à l'aide de versions de secrets. Les opérations sur les clés, telles que l'accès, la destruction, la désactivation et l'activation, sont appliquées à des versions de secrets spécifiques. Avec Secret Manager, vous pouvez associer des secrets à des versions spécifiques, telles que 42, ou à des alias dynamiques, tels que latest. Pour en savoir plus, consultez Ajouter une version secrète.

      Accéder à une version de secret

      Pour accéder aux données secrètes d'une version de secret spécifique afin de vous authentifier, consultez Accéder à une version régionale d'un secret.

      Étapes suivantes