Quando criamos automações com Shell Scripts, muitas vezes precisamos armazenar credenciais, como login e senha, para acessar APIs, bancos de dados ou sistemas remotos. Entretanto, deixar essas informações expostas no código pode representar um grande risco de segurança. Neste artigo, vou apresentar as melhores práticas para proteger suas credenciais em scripts Shell.
Por que evitar armazenar credenciais diretamente no código?
Se você incluir login e senha diretamente no script, qualquer pessoa que tiver acesso ao arquivo poderá visualizar suas credenciais. Além disso, se o script for armazenado em um repositório Git, as credenciais podem ser expostas publicamente caso o repositório seja comprometido.
Para evitar esses riscos, a melhor estratégia é criptografar as credenciais e usá-las dinamicamente no script. Vamos explorar algumas abordagens seguras.
1️⃣ Usando GPG para Armazenamento Seguro
O GPG (GNU Privacy Guard) é uma excelente ferramenta para criptografar senhas de forma segura.
🔹 Passo 1: Criptografando a Senha
Antes de executar o script, primeiro precisamos criptografar a senha e armazená-la em um arquivo protegido:
echo "MinhaSenhaSecreta" | gpg --symmetric --cipher-algo AES256 --output senha.gpg
Esse comando pedirá que você defina uma senha para criptografar a informação. O arquivo gerado (senha.gpg
) conterá a senha protegida.
Para aumentar a segurança, limite as permissões do arquivo:
chmod 600 senha.gpg
🔹 Passo 2: Recuperando a Senha no Script
Agora, dentro do seu Shell Script, podemos descriptografar a senha dinamicamente:
#!/bin/bash
LOGIN="meu_usuario"
SENHA=$(gpg --decrypt senha.gpg 2>/dev/null)
echo "Autenticando..."
curl -u "$LOGIN:$SENHA" "https://meuservico.com/api/login"
Nota: O
gpg
pedirá a senha de descriptografia durante a execução. Se quiser evitar isso, use um agente GPG.
2️⃣ Usando OpenSSL para Criptografar a Senha
Outra alternativa segura é utilizar o OpenSSL para criptografar as credenciais.
🔹 Passo 1: Criptografando a Senha
echo -n "MinhaSenhaSecreta" | openssl enc -aes-256-cbc -pbkdf2 -salt -base64 -pass pass:"ChaveSecreta" > senha.enc
🔹 Passo 2: Recuperando a Senha no Script
#!/bin/bash
LOGIN="meu_usuario"
SENHA=$(openssl enc -aes-256-cbc -pbkdf2 -salt -base64 -d -pass pass:"ChaveSecreta" < senha.enc)
echo "Autenticando..."
curl -u "$LOGIN:$SENHA" "https://meuservico.com/api/login"
Essa abordagem permite armazenar credenciais de forma segura, mas é fundamental proteger o arquivo senha.enc
com permissões restritivas.
3️⃣ Usando Variáveis de Ambiente
Se não quiser armazenar credenciais em arquivos, uma opção mais simples é utilizar variáveis de ambiente:
🔹 Definir as credenciais antes de rodar o script
export MEU_LOGIN="meu_usuario"
export MINHA_SENHA="MinhaSenhaSecreta"
🔹 No script, utilizar as variáveis
#!/bin/bash
LOGIN="$MEU_LOGIN"
SENHA="$MINHA_SENHA"
echo "Autenticando..."
curl -u "$LOGIN:$SENHA" "https://meuservico.com/api/login"
Atenção: Variáveis de ambiente podem ser expostas caso um usuário mal-intencionado liste os processos em execução.
Conclusão
Se precisar armazenar credenciais em um Shell Script, siga estas boas práticas:
✅ Mais seguro: GPG para criptografia de senhas. ✅ Boa segurança: OpenSSL para armazenar credenciais protegidas. ✅ Alternativa prática: Variáveis de ambiente, com risco reduzido.
Se o nível de segurança exigido for ainda maior, considere usar gerenciadores de segredos como HashiCorp Vault, AWS Secrets Manager ou Azure Key Vault.
Comments are closed