DevOps Secret Manager CLI

Prev Next

O Segura DevOps Secret Manager Command-Line Interface (dsmcli) é uma ferramenta que permite a administração dos serviços oferecidos pelo senhasegura através da linha de comando, facilitando a automação via scripts. Este utilitário é agnóstico, podendo ser integrado a diversos ambientes e ferramentas de CI/CD, permitindo a interceptação de variáveis de ambiente e a inserção de secrets em sistemas e pipelines de CI/CD.

Este documento vai indicar o passo-a-passo para utilizar o dsmcli.

Baixe o DSMCLI

Configure da Aplicação e Autorização

  • Crie uma aplicação e uma autorização no Segura.
  • Adicione os secrets que deseja injetar no alvo em sua autorização.

Defina as variáveis de ambiente ou arquivo de configuração

  • Configure as seguintes variáveis de ambiente:
    • SENHASEGURA_URL: URL ou IP da instância do Segura.
    • SENHASEGURA_CLIENT_ID: client ID da autorização criada.
    • SENHASEGURA_CLIENT_SECRET: client Secret da autorização criada.
  • Alternativamente, crie um arquivo de configuração .config.yaml com as mesmas informações.

Execute o DSMCLI

Para injetar os secrets configurados, execute o comando:

  ./dsm-linux-amd64 runb -a <nome_da_aplicação> -s <sistema> -e <ambiente> -v

A saída deste comando será parecida com o exemplo (note que não passamos um arquivo de configuração nesse exemplo):

No config file provided, proceeding...
Registering Application on DevSecOps
Trying to authenticate on senhasegura DevSecOps API
Authenticated successfully
Application register success
The parameter SENHASEGURA_MAPPING_FILE is empty
Mapping file not found, proceeding...
Posting variables in senhasegura...
Trying to authenticate on senhasegura DevSecOps API
Authenticated successfully
Posting variables successfully
Finding secrets from application
Trying to authenticate on senhasegura DevSecOps API
Authenticated successfully
Injecting secrets!
Injecting secret into .runb.vars: host.....Success!
Injecting secret into .runb.vars: user.....Success!
Injecting secret into .runb.vars: additional_information.....Success!
Injecting secret into .runb.vars: VALUE3.....Success!
Injecting secret into .runb.vars: VALUE1.....Success!
Injecting secret into .runb.vars: VALUE2.....Success!
Injecting secret into .runb.vars: pass.....Success!
Injecting secret into .runb.vars: ip.....Success!
Secrets injected!
Deleting linux variables...
Is not possible to delete linux variables!
Finish

Coletar secrets do sistema executor

É possível fazer o caminho inverso, ou seja, coletar os secrets presentes no sistema executor e inseri-los no senhasegura.

Por padrão, o dsm-cli cria secrets de todas as variáveis de ambiente no momento da execução. No entanto, para organizar essas informações de maneira estruturada, usamos a variável SENHASEGURA_MAPPING_FILE, que deve apontar para um arquivo de mapeamento no formato JSON.

Exemplo de arquivo de mapeamento

{
  "access_keys": [
    {
      "name": "ACCESS_KEY_VARIABLES",
      "type": "aws",
      "fields": {
        "access_key_id": "AWS_ACCESS_KEY_ID_VARIABLE",
        "secret_access_key": "AWS_SECRET_ACCESS_KEY_VARIABLE"
      }
    }
  ],
  "credentials": [
    {
      "name": "CREDENCIAL_VARIABLES",
      "fields": {
        "user": "USER_PRD",
        "password": "USER_PASS",
        "host": "USER_HOST"
      }
    }
  ],
  "key_value": [
    {
      "name": "GENERIC_VARIABLES",
      "fields": ["MYPASSPROD","MYACCESSKEY"]
    }
  ]
}

Criar variáveis de ambiente para injeção no senhasegura DSM

MYPASSPROD=HBJI546561JKB
MYACCESSKEY=nkjdfgojgdfdhgf51fdmjksndafjiafm
USER_PRD=superuser
USER_PASS=kfds*_uHUI3
USER_HOST=access.prod.com

export MYPASSPROD MYACCESSKEY USER_PRD USER_PASS USER_HOST

Agora, você pode executar o dsm-cli e visualizar as secrets corretamente cadastradas no senhasegura.

Utilizar um arquivo de configuração para definir variáveis de execução

Uma boa prática, para evitar definir as variáveis manualmente toda vez que você for executar o dsm-cli, é utilizar um arquivo .yml:

SENHASEGURA_URL: "https://<url_da_instancia>"
SENHASEGURA_CLIENT_ID: "<client_id>"
SENHASEGURA_CLIENT_SECRET: "<client_secret>"
SENHASEGURA_MAPPING_FILE: "/caminho/para/map.json"
SENHASEGURA_SECRETS_FILE: ".vars"

Por padrão, o dsm-cli procurará um arquivo de configuração na home do usuário chamado .config.yml. Caso deseje especificar um arquivo diferente, use a opção -c:

./dsm-linux-amd64 runb -a Access -s test -e test -c data.yml -v

Você ainda tem dúvidas? Entre em contato com a Comunidade Segura.