Configuração do CLI

Entenda como o CriptEnv organiza seus dados localmente, como funciona a senha mestra e como personalizar o comportamento via variáveis de ambiente e arquivo de configuração.

Estrutura do Diretório

O CriptEnv armazena todos os dados locais em ~/.criptenv/. Após executar criptenv init, a estrutura é a seguinte:

text
~/.criptenv/
├── vault.db          # Banco de dados SQLite com segredos criptografados
├── config.toml       # Arquivo de configuração do CLI
├── session.json      # Token de sessão atual (se autenticado)
└── logs/
    └── criptenv.log  # Logs de operações

vault.db

O coração do CriptEnv. Um banco de dados SQLite que armazena todos os segredos criptografados localmente com AES-256-GCM. Cada segredo é versionado, permitindo rotação sem perder o histórico.

Info

Nunca compartilhe ou faça backup do vault.db para locais inseguros. O arquivo contém dados criptografados, mas a segurança depende da força da sua senha mestra.

Tabelas internas do banco:

ParâmetroTipoDescrição
secretstabelaSegredos criptografados com metadados (chave, valor cifrado, IV, salt, versão, ambiente, projeto, data de expiração)
environmentstabelaAmbientes registrados (dev, staging, production, etc.)
projectstabelaProjetos e suas configurações
rotation_historytabelaHistórico de rotações de segredos
audit_logtabelaLog de auditoria de operações

Senha Mestra

A senha mestra é usada para derivar a chave de criptografia do vault usando PBKDF2 com 600.000 iterações. Ela nunca é armazenada em disco — é mantida em memória apenas durante a sessão.

1

Derivação de Chave

A senha é processada com PBKDF2-SHA512 usando um salt único gerado durante o init. O resultado é uma chave AES-256 de 32 bytes.
2

Desbloqueio do Vault

A cada operação que acessa o vault, o CLI solicita a senha mestra (a menos que a sessão esteja em cache). A senha é validada contra um hash armazenado no banco.
3

Cache de Sessão

Por padrão, a sessão fica em cache por 15 minutos após o último uso. O timeout pode ser configurado no config.toml.
bash
# Alterar a senha mestra
criptenv init --force

# Limpar cache de sessão (força nova solicitação de senha)
criptenv logout

Variáveis de Ambiente

Todas as opções do CLI podem ser controladas via variáveis de ambiente com o prefixo CRIPTENV_. Variáveis têm prioridade sobre o arquivo de configuração.

ParâmetroTipoDescrição
CRIPTENV_HOMEstringDiretório base (padrão: ~/.criptenv)
CRIPTENV_MASTER_PASSWORDstringSenha mestra (não recomendado para produção)
CRIPTENV_SESSION_TIMEOUTnumberTimeout de sessão em segundos (padrão: 900)
CRIPTENV_DEFAULT_ENVstringAmbiente padrão (padrão: development)
CRIPTENV_DEFAULT_PROJECTstringProjeto padrão
CRIPTENV_API_URLstringURL da API (padrão: https://api.criptenv.com)
CRIPTENV_NO_COLORbooleanDesabilita cores no output
CRIPTENV_LOG_LEVELstringNível de log: debug, info, warn, error
CRIPTENV_CIbooleanHabilita modo CI/CD (desabilita interações)
bash
# Exemplo: usar o CriptEnv em um script com sessão de 30 minutos
export CRIPTENV_SESSION_TIMEOUT=1800
export CRIPTENV_DEFAULT_ENV=production

criptenv get DATABASE_URL

Info

Evite definir CRIPTENV_MASTER_PASSWORD em variáveis de ambiente em servidores compartilhados. Prefira a leitura interativa da senha.

Arquivo de Configuração

O arquivo ~/.criptenv/config.toml permite personalizar o comportamento do CLI. Todas as opções possuem valores padrão sensatos.

toml
# ~/.criptenv/config.toml

[general]
# Ambiente padrão ao omitir --env
default_env = "development"
# Projeto padrão ao omitir --project
default_project = ""
# Timeout de sessão em segundos
session_timeout = 900
# Modo de output: text, json
output_mode = "text"

[security]
# Iterações do PBKDF2 (padrão: 600000)
pbkdf2_iterations = 600000
# Algoritmo de criptografia (não alterar)
algorithm = "AES-256-GCM"

[cloud]
# URL da API do CriptEnv
api_url = "https://api.criptenv.com"
# Timeout de requisições em segundos
request_timeout = 30

[alerts]
# Alertar N dias antes da expiração
default_alert_days = 7
# Canais de alerta: email, slack, webhook
channels = ["email"]

[logs]
# Nível de log: debug, info, warn, error
level = "info"
# Reter logs por N dias
retention_days = 30

Opções de Configuração

ParâmetroTipoDescrição
default_envstringAmbiente padrão (development)
default_projectstringProjeto padrão
session_timeoutnumberTimeout de sessão em segundos (900)
output_modestringModo de saída: text ou json
ParâmetroTipoDescrição
pbkdf2_iterationsnumberIterações do PBKDF2 (600000)
algorithmstringAlgoritmo de criptografia (AES-256-GCM)
ParâmetroTipoDescrição
api_urlstringURL da API (https://api.criptenv.com)
request_timeoutnumberTimeout de requisições em segundos (30)
ParâmetroTipoDescrição
default_alert_daysnumberDias de antecedência para alertas (7)
channelsarrayCanais de alerta: email, slack, webhook
ParâmetroTipoDescrição
levelstringNível de log: debug, info, warn, error
retention_daysnumberDias de retenção dos logs (30)

Info

Variáveis de ambiente com prefixo CRIPTENV_ sempre sobrescrevem os valores do arquivo de configuração. Use criptenv doctor para verificar a configuração efetiva.