Crie um segredo

Esta página descreve como criar um segredo. Um Secret contém uma ou mais versões do Secret, juntamente com metadados, como etiquetas e políticas de replicação. O conteúdo real de um segredo é armazenado numa versão do segredo.

Antes de começar

  1. Ative a API Secret Manager.

  2. Configurar autenticação.

    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

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

    Funções necessárias

    Para receber as autorizações de que precisa para criar um segredo, peça ao seu administrador para lhe conceder a função IAM de administrador do Secret Manager (roles/secretmanager.admin) no projeto, na pasta ou na organização. Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

    Crie um segredo

    Pode criar segredos através da Google Cloud consola, da Google Cloud CLI, da API Secret Manager ou das bibliotecas cliente do Secret Manager.

    Consola

    1. Na Google Cloud consola, aceda à página Secret Manager.

      Aceda ao Secret Manager

    2. Na página Secret Manager, clique em Criar segredo.

    3. Na página Criar segredo, introduza um nome para o segredo no campo Nome. Um nome de secret pode conter letras maiúsculas e minúsculas, números, hífenes e sublinhados. O comprimento máximo permitido para um nome é de 255 carateres.

    4. Introduza um valor para o segredo (por exemplo, abcd1234). O valor do segredo pode estar em qualquer formato, mas não pode ser superior a 64 KiB. Também pode carregar um ficheiro de texto que contenha o valor secreto através da opção Carregar ficheiro. Esta ação cria automaticamente a versão do Secret.

    5. Clique em Criar segredo.

    gcloud

    Antes de usar qualquer um dos dados de comandos abaixo, faça as seguintes substituições:

    • SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
    • REPLICATION_POLICY: a política de replicação do segredo, que pode ser automática ou gerida pelo utilizador.

    Execute o seguinte comando:

    Linux, macOS ou Cloud Shell

    gcloud secrets create SECRET_ID \
        --replication-policy="REPLICATION_POLICY"

    Windows (PowerShell)

    gcloud secrets create SECRET_ID `
        --replication-policy="REPLICATION_POLICY"

    Windows (cmd.exe)

    gcloud secrets create SECRET_ID ^
        --replication-policy="REPLICATION_POLICY"

    REST

    Antes de usar qualquer um dos dados do pedido, faça as seguintes substituições:

    • PROJECT_ID: o Google Cloud ID do projeto
    • SECRET_ID: o ID do segredo ou o identificador totalmente qualificado do segredo
    • REPLICATION_POLICY: a política de replicação do segredo, que pode ser automática ou gerida pelo utilizador.

    Método HTTP e URL:

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

    Corpo JSON do pedido:

    {
      "replication": {
        "REPLICATION_POLICY": {}
      }
    }
    

    Para enviar o seu pedido, escolha uma destas opções:

    curl

    Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

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

    PowerShell

    Guarde o corpo do pedido num ficheiro com o nome request.json, e execute o seguinte comando:

    $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.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

    Deve receber uma resposta JSON semelhante à seguinte:

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

    C#

    Para executar este código, primeiro configure um ambiente de programação em C# e instale o SDK em C# do Secret Manager. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.

    
    using Google.Api.Gax.ResourceNames;
    using Google.Cloud.SecretManager.V1;
    
    public class CreateSecretSample
    {
        public Secret CreateSecret(
          string projectId = "my-project", string secretId = "my-secret")
        {
            // Create the client.
            SecretManagerServiceClient client = SecretManagerServiceClient.Create();
    
            // Build the parent resource name.
            ProjectName projectName = new ProjectName(projectId);
    
            // Build the secret.
            Secret secret = new Secret
            {
                Replication = new Replication
                {
                    Automatic = new Replication.Types.Automatic(),
                },
            };
    
            // Call the API.
            Secret createdSecret = client.CreateSecret(projectName, secretId, secret);
            return createdSecret;
        }
    }

    Go

    Para executar este código, primeiro configure um ambiente de desenvolvimento Go e instale o SDK Go do Secret Manager. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.

    import (
    	"context"
    	"fmt"
    	"io"
    
    	secretmanager "cloud.google.com/go/secretmanager/apiv1"
    	"cloud.google.com/go/secretmanager/apiv1/secretmanagerpb"
    )
    
    // 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 createSecret(w io.Writer, parent, id string) error {
    	// parent := "projects/my-project"
    	// id := "my-secret"
    
    	// Create the client.
    	ctx := context.Background()
    	client, err := secretmanager.NewClient(ctx)
    	if err != nil {
    		return fmt.Errorf("failed to create secretmanager client: %w", err)
    	}
    	defer client.Close()
    
    	// Build the request.
    	req := &secretmanagerpb.CreateSecretRequest{
    		Parent:   parent,
    		SecretId: id,
    		Secret: &secretmanagerpb.Secret{
    			Replication: &secretmanagerpb.Replication{
    				Replication: &secretmanagerpb.Replication_Automatic_{
    					Automatic: &secretmanagerpb.Replication_Automatic{},
    				},
    			},
    		},
    	}
    
    	// Call the API.
    	result, err := client.CreateSecret(ctx, req)
    	if err != nil {
    		return fmt.Errorf("failed to create secret: %w", err)
    	}
    	fmt.Fprintf(w, "Created secret: %s\n", result.Name)
    	return nil
    }
    

    Java

    Para executar este código, primeiro configure um ambiente de desenvolvimento Java e instale o SDK Java do Secret Manager. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.

    import com.google.cloud.secretmanager.v1.ProjectName;
    import com.google.cloud.secretmanager.v1.Replication;
    import com.google.cloud.secretmanager.v1.Secret;
    import com.google.cloud.secretmanager.v1.SecretManagerServiceClient;
    import com.google.protobuf.Duration;
    import java.io.IOException;
    
    public class CreateSecret {
    
      public static void createSecret() throws IOException {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "your-project-id";
        String secretId = "your-secret-id";
        createSecret(projectId, secretId);
      }
    
      // Create a new secret with automatic replication.
      public static void createSecret(String projectId, String secretId) throws IOException {
        // 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. After completing all of your requests,
        // call the "close" method on the client to safely clean up any remaining background resources.
        try (SecretManagerServiceClient client = SecretManagerServiceClient.create()) {
          // Build the parent name from the project.
          ProjectName projectName = ProjectName.of(projectId);
    
          // Optionally set a TTL for the secret. This demonstrates how to configure
          // a secret to be automatically deleted after a certain period. The TTL is
          // specified in seconds (e.g., 900 for 15 minutes). This can be useful
          // for managing sensitive data and reducing storage costs.
          Duration ttl = Duration.newBuilder().setSeconds(900).build();
    
          // Build the secret to create.
          Secret secret =
              Secret.newBuilder()
                  .setReplication(
                      Replication.newBuilder()
                          .setAutomatic(Replication.Automatic.newBuilder().build())
                          .build())
                  .setTtl(ttl)
                  .build();
    
          // Create the secret.
          Secret createdSecret = client.createSecret(projectName, secretId, secret);
          System.out.printf("Created secret %s\n", createdSecret.getName());
        }
      }
    }

    Node.js

    Para executar este código, primeiro configure um ambiente de desenvolvimento do Node.js e instale o SDK do Node.js do Secret Manager. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.

    /**
     * TODO(developer): Uncomment these variables before running the sample.
     */
    // const parent = 'projects/my-project';
    // const secretId = 'my-secret';
    // const ttl = undefined // Optional: Specify TTL in seconds (e.g., '900s' for 15 minutes).
    
    // Imports the Secret Manager library
    const {SecretManagerServiceClient} = require('@google-cloud/secret-manager');
    
    // Instantiates a client
    const client = new SecretManagerServiceClient();
    
    async function createSecret() {
      const secretConfig = {
        replication: {
          automatic: {},
        },
      };
    
      // Add TTL to the secret configuration if provided
      if (ttl) {
        secretConfig.ttl = {
          seconds: parseInt(ttl.replace('s', ''), 10),
        };
        console.log(`Secret TTL set to ${ttl}`);
      }
    
      const [secret] = await client.createSecret({
        parent: parent,
        secretId: secretId,
        secret: secretConfig,
      });
    
      console.log(`Created secret ${secret.name}`);
    }
    
    createSecret();

    PHP

    Para executar este código, saiba primeiro como usar o PHP no Google Cloud e instale o SDK PHP do Secret Manager. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.

    // Import the Secret Manager client library.
    use Google\Cloud\SecretManager\V1\CreateSecretRequest;
    use Google\Cloud\SecretManager\V1\Replication;
    use Google\Cloud\SecretManager\V1\Replication\Automatic;
    use Google\Cloud\SecretManager\V1\Secret;
    use Google\Cloud\SecretManager\V1\Client\SecretManagerServiceClient;
    
    /**
     * @param string $projectId Your Google Cloud Project ID (e.g. 'my-project')
     * @param string $secretId  Your secret ID (e.g. 'my-secret')
     */
    function create_secret(string $projectId, string $secretId): void
    {
        // Create the Secret Manager client.
        $client = new SecretManagerServiceClient();
    
        // Build the resource name of the parent project.
        $parent = $client->projectName($projectId);
    
        $secret = new Secret([
            'replication' => new Replication([
                'automatic' => new Automatic(),
            ]),
        ]);
    
        // Build the request.
        $request = CreateSecretRequest::build($parent, $secretId, $secret);
    
        // Create the secret.
        $newSecret = $client->createSecret($request);
    
        // Print the new secret name.
        printf('Created secret: %s', $newSecret->getName());
    }

    Python

    Para executar este código, primeiro configure um ambiente de desenvolvimento Python e instale o SDK Python do Secret Manager. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.

    # Import the Secret Manager client library.
    from google.cloud import secretmanager
    
    
    def create_secret(
        project_id: str, secret_id: str, ttl: Optional[str] = None
    ) -> secretmanager.Secret:
        """
        Create 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.
    
         Args:
            project_id (str): The project ID where the secret is to be created.
            secret_id (str): The ID to assign to the new secret. This ID must be unique within the project.
            ttl (Optional[str]): An optional string that specifies the secret's time-to-live in seconds with
                                 format (e.g., "900s" for 15 minutes). If specified, the secret
                                 versions will be automatically deleted upon reaching the end of the TTL period.
    
        Returns:
            secretmanager.Secret: An object representing the newly created secret, containing details like the
                                  secret's name, replication settings, and optionally its TTL.
    
        Example:
            # Create a secret with automatic replication and no TTL
            new_secret = create_secret("my-project", "my-new-secret")
    
            # Create a secret with a TTL of 30 days
            new_secret_with_ttl = create_secret("my-project", "my-timed-secret", "7776000s")
        """
    
        # Create the Secret Manager client.
        client = secretmanager.SecretManagerServiceClient()
    
        # Build the resource name of the parent project.
        parent = f"projects/{project_id}"
    
        # Create the secret.
        response = client.create_secret(
            request={
                "parent": parent,
                "secret_id": secret_id,
                "secret": {"replication": {"automatic": {}}, "ttl": ttl},
            }
        )
    
        # Print the new secret name.
        print(f"Created secret: {response.name}")

    Ruby

    Para executar este código, primeiro configure um ambiente de desenvolvimento Ruby e instale o SDK Ruby do Secret Manager. No Compute Engine ou no GKE, tem de autenticar-se com o âmbito cloud-platform.

    # project_id = "YOUR-GOOGLE-CLOUD-PROJECT"  # (e.g. "my-project")
    # secret_id  = "YOUR-SECRET-ID"             # (e.g. "my-secret")
    
    # Require the Secret Manager client library.
    require "google/cloud/secret_manager"
    
    # Create a Secret Manager client.
    client = Google::Cloud::SecretManager.secret_manager_service
    
    # Build the resource name of the parent project.
    parent = client.project_path project: project_id
    
    # Create the secret.
    secret = client.create_secret(
      parent:    parent,
      secret_id: secret_id,
      secret:    {
        replication: {
          automatic: {}
        }
      }
    )
    
    # Print the new secret name.
    puts "Created secret: #{secret.name}"

    Para selecionar a política de replicação certa para o seu segredo, consulte o artigo Escolha uma política de replicação.

    Adicione uma versão do segredo

    O Secret Manager cria automaticamente versões dos dados secretos através de versões do Secret. As operações de chaves, como acesso, destruição, desativação e ativação, são aplicadas a versões secretas específicas. Com o Secret Manager, pode associar segredos a versões específicas, como 42, ou a alias dinâmicos, como latest. Para saber mais, consulte o artigo Adicione uma versão secreta.

    Aceda a uma versão do Secret

    Para aceder aos dados secretos de uma versão secreta específica para uma autenticação bem-sucedida, consulte o artigo Aceda a uma versão secreta.

    O que se segue?