Armazenando segredos arbitrários

É possível usar o IBM Cloud® Secrets Manager para armazenar segredos arbitrários que são usados para acessar sistemas protegidos que estão dentro ou fora do IBM Cloud.

Um segredo arbitrário é um tipo de segredo do aplicativo que pode ser usado para conter dados estruturados ou não estruturados, como uma chave, um arquivo de configuração ou qualquer outra parte de informações confidenciais. Depois de criar o segredo, é possível usá-lo para conectar seu aplicativo a um recurso protegido, como um app ou banco de dados de terceiros. Seu segredo é armazenado de forma segura em sua instância de serviço dedicada do Secrets Manager, na qual é possível gerenciar centralmente seu ciclo de vida.

Para saber mais sobre os tipos de segredos que podem ser gerenciados no Secrets Manager, consulte O que é um segredo?

Antes de Iniciar

Antes de começar, certifique-se de ter o nível de acesso necessário. Para criar ou incluir segredos, é necessária a função de serviço Gravador ou superior.

Criando segredos arbitrários na IU

Para incluir um segredo arbitrário usando a IU do Secrets Manager, conclua as etapas a seguir.

  1. No console, clique no ícone Menu Ícone do menu > Lista de Recursos.

  2. Na lista de serviços, selecione sua instância do Secrets Manager.

  3. Na tabela Segredos, clique em Incluir.

  4. Na lista de tipos de segredo, clique no quadro Outro tipo de segredo.

  5. Clique em Avançar.

  6. Inclua um nome e uma descrição para identificar facilmente o segredo.

  7. Selecione o grupo secretoO ambiente e as restrições que contêm segredos em uma instância devem estar em conformidade com ele. Um usuário pode ser associado a um grupo de segredos para ativar o acesso e a colaboração. que você deseja atribuir ao segredo.

    Você não tem um grupo de segredos? No campo Grupo de segredos, é possível clicar em Criar para fornecer um nome e uma descrição para um novo grupo. Seu segredo é incluído no novo grupo automaticamente. Para obter mais informações sobre grupos de segredos, confira Organizando seus segredos.

  8. Opcional: inclua rótulos para ajudar a procurar segredos semelhantes em sua instância.

  9. Opcional: inclua metadados em seu segredo ou em uma versão específica do seu segredo.

    1. Faça o upload de um arquivo ou insira os metadados e os metadados da versão no formato JSON.
  10. Clique em Avançar.

  11. Selecione um arquivo ou insira o valor do segredo que você deseja associar ao segredo.

O Secrets Manager suporta cargas úteis baseadas em texto apenas para segredos arbitrários. Se você selecionar um arquivo para atribuir a um segredo arbitrário, o serviço usará a codificação Base64 para armazenar os dados em sua instância. Para acessar esse segredo posteriormente, será necessário decodificá-lo em base64. Considere a possibilidade de atribuir um rótulo ao seu segredo com dados codificados, como encode:base64, para que você possa rastrear os segredos que exigem a decodificação de base64.

  1. Opcional: Ative a expiração para controlar a vida útil do segredo.
  2. Para configurar uma data de expiração para o segredo, alterne o comutador de expiração para Sim.
  3. Clique em Avançar.
  4. Revise os detalhes do segredo.
  5. Clique em Incluir.

Criando segredos arbitrários por meio da CLI

Antes de começar, siga os documentos da CLI para definir seu endpoint de API.

Para criar um segredo arbitrário usando o plug-in da CLI do Secrets Manager, execute o comando ibmcloud secrets-manager secret-create. É possível especificar o tipo de segredo usando a opção --secret-type arbitrary. Por exemplo, o comando a seguir cria um segredo arbitrário e armazena secret-data como seu valor.

O Secrets Manager suporta cargas úteis baseadas em texto apenas para segredos arbitrários. Se você precisar fazer upload de um arquivo binário, primeiro deve-se codificar os dados em base64 para que você possa transmiti-los para a CLI do Secrets Manager em uma sequência de caracteres de linha única. Para acessar esse segredo posteriormente em sua forma original, será preciso decodificá-lo em base64. Considere a possibilidade de atribuir um rótulo ao seu segredo com dados codificados, como encode:base64, para que você possa rastrear os segredos que exigem a decodificação de base64.

ibmcloud secrets-manager secret-create \
    --secret-name example-arbitrary-secret \
    --secret-description "Description of my arbitrary secret." \
    --secret-type arbitrary \
    --secret-group-id default \
    --secret-labels dev,us-south \
    --secret-expiration-date 2023-10-05T11:49:42Z \
    --arbitrary-payload secret-data \
    --secret-custom-metadata '{"anyKey": "anyValue"}' \
    --secret-version-custom-metadata '{"anyKey": "anyValue"}'

O comando gera o valor do ID do segredo, além de outros metadados. Para obter mais informações sobre as opções de comando, consulte ibmcloud secrets-manager secret-create.

Criando segredos arbitrários com a API

É possível criar segredos arbitrários programaticamente chamando a API do Secrets Manager.

O exemplo a seguir mostra uma consulta que pode ser usada para criar e armazenar um segredo arbitrário. Ao chamar a API, substitua as variáveis de ID e o token IAM pelos valores que são específicos para a sua instância do Secrets Manager.

Você pode armazenar metadados que são relevantes para as necessidades de sua organização com os parâmetros de solicitação custom_metadata e version_custom_metadata. Os valores do version_custom_metadata são retornados apenas para as versões de um segredo. Os metadados personalizados do seu segredo são armazenados como todos os outros metadados, para versões de até 50 bits e você não deve incluir dados confidenciais.

O Secrets Manager suporta cargas úteis baseadas em texto apenas para segredos arbitrários. Se você precisar fazer upload de um arquivo binário, primeiro deve-se codificar os dados em base64 para que você possa transmiti-los para a API do Secrets Manager em uma sequência de caracteres de linha única. Para acessar esse segredo posteriormente em sua forma original, será preciso decodificá-lo em base64. Considere a possibilidade de atribuir um rótulo ao seu segredo com dados codificados, como encode:base64, para que você possa rastrear os segredos que exigem a decodificação de base64.

curl -X POST
    -H "Authorization: Bearer {iam_token}" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d '{
          "custom_metadata": {
            "metadata_custom_key": "metadata_custom_value"
          },
          "description": "Description of my arbitrary secret.",
          "expiration_date": "2023-10-05T11:49:42Z",
          "labels": [
            "dev",
            "us-south"
          ],
          "name": "example-arbitrary-secret",
          "payload": "secret-data",
          "secret_group_id": "67d025e1-0248-418f-83ba-deb0ebfb9b4a",
          "secret_type": "arbitrary",
          "version_custom_metadata": {
          "custom_version_key": "custom_version_value"} }' \
      "https://{instance_ID}.{region}.secrets-manager.appdomain.cloud/api/v2/secrets"

Uma resposta bem-sucedida retorna o valor de ID do segredo, além de outros metadados. Para obter mais informações sobre os parâmetros de solicitação opcionais e necessários, confira a Referência de API.

Criando segredos arbitrários com o Terraform

É possível criar segredos arbitrários programaticamente usando o Terraform para Secrets Manager.

Siga as melhores práticas do Terraform para proteger variáveis de entrada sensíveis como credenciais secretas. Para obter mais informações, consulte Proteger variáveis de entrada sensíveis.

O exemplo a seguir mostra uma configuração que pode ser usada para criar um segredo arbitrário, configurando valores sensíveis em um arquivo terraform.tfvars

  1. Defina uma variável de entrada para a carga útil secreta arbitrária em um arquivo variables.tf.

    		variable "arbitrary_secret_payload" {
    			description = "Arbitrary secret payload"
    			type        = string
    			sensitive   = true
    		}
    
  2. Designe um valor à variável arbitrary_secret_payload em um arquivo terraform.tfvars.

    Ao configurar valores com um arquivo .tfvars, é possível separar valores sensíveis do restante de seus valores de variáveis e assegurar que seus usuários que trabalham com sua configuração saibam quais valores são sensíveis. Para propósitos de segurança, deve-se manter e compartilhar o arquivo .tfvars apenas com seus usuários que possuem o acesso apropriado Você também deve ter cuidado para não armazenar arquivos .tfvars com valores sensíveis no controle de versão, como Github, em texto não criptografado.

    	arbitrary_secret_payload = "my sensitive arbitrary payload"
    
  3. Crie o segredo arbitrário no arquivo main.tf..

    	resource "ibm_sm_arbitrary_secret" "sm_arbitrary_secret" {
    		instance_id = local.instance_id
    		region = local.region
    		description = "Extended description for this arbitrary secret"
    		labels = [ "tf-resource"]
    		name = "test-arbitrary-secret"
    		secret_group_id = ibm_sm_secret_group.sm_secret_group_test.secret_group_id
    		payload = var.arbitrary_secret_payload
    	}
    

Como alternativa, você pode usar os Terraform IBM Modules (TIM) pré-construídos, de código aberto e prontos para a empresa para Secrets Manager Secret para criar segredos arbitrários com o Terraform. Saiba mais sobre o Terraform IBM Modules.