Serviços de TI requerem configuração. Parte dessa configuração são segredos que você não quer que sejam expostos. Exemplos comuns são credenciais de banco de dados ou valores aleatórios que protegem cookies de sessão ou credenciais de autenticação. Se você está desenvolvendo software, as coisas tendem a piorar com pipelines de build, certificados de distribuição e chaves de acesso.
Segredos comprometidos podem levar a sequestro de contas de usuários, roubo de dados, ataques à cadeia de construção e outros problemas custosos. Má reputação, perda de propriedade intelectual e potencialmente enormes taxas legais são apenas uma fração dos possíveis custos.
Psono oferece com a última versão do psonoci ambientes protegidos. Ambientes protegidos permitem que você execute processos e os configure através de variáveis de ambiente sem expô-los ao sistema. Essas variáveis de ambiente são carregadas de forma segura do Psono, nunca armazenadas em qualquer lugar no servidor e são expostas apenas a um único processo.
Primeiro você precisa criar um segredo de variáveis de ambiente. Observe que um único segredo pode conter múltiplas variáveis de ambiente, assim você pode agrupar variáveis de ambiente por exemplo, por um ambiente ou apenas por pertencerem juntas, como um usuário de banco de dados e uma senha de banco de dados.
Em seguida, você cria uma chave de API e permite que essa chave de API acesse seu novo segredo de variáveis de ambiente.
Agora observe os segredos da chave de API, pois esses parâmetros são os únicos parâmetros que são diretamente expostos ao sistema.
Instale o psono ci no seu servidor ou no seu pipeline de build com um único comando:
curl https://get.psono.com/psono/psono-ci/x86_64-linux/psonoci --output psonoci && chmod +x psonoci
E ao invés de apenas rodar ./some_command
você inicia seu processo assim:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./some_command
Para simplificar, passamos os parâmetros como --api-key-id
ou --api-secret-key-hex
como argumentos, mas você também pode configurar um arquivo de configuração.
Para fins de demonstração, criamos este pequeno script em Python service.py
que imprime todas as variáveis de ambiente e argumentos que foram passados ao script.
#!/usr/bin/python3
import os
import sys
print("args: {}".format(sys.argv))
print("environment: {}".format(os.environ))
Em vez de executar, por exemplo, ./service.py --whatever=argument_1
podemos executá-lo assim:
psonoci \
--api-key-id eaee77c6-169f-4873-9be3-f2613149baa9 \
--api-secret-key-hex c8321d7a8e5b1f5ec3d969ecb5054c7548a1c709ddab2edae2ff7ff028538917 \
--server-url https://example.com/server \
run -- ./service.py --whatever=argument_1
Obtemos a seguinte saída:
args: ['service.py', '--whatever', 'argument_1']
environment: environ({'db_host': 'prd-db.example.com:5432', 'db_password': 'Df55sr2UQm7Wshv7', 'db_username': 'production'})
Como podemos ver, todos os argumentos foram passados corretamente e todas as variáveis de ambiente que configuramos anteriormente estavam disponíveis para o processo. Existem flags que permitem que você passe as variáveis de ambiente normais do sistema também e as estenda com as do Psono. Informações mais detalhadas podem ser encontradas em nossa documentação do psonoci.
Espero que você tenha gostado de nossa pequena demonstração mostrando como a Psono pode ajudar a proteger sua infraestrutura. Tudo isso não seria possível sem Bernd, o cérebro por trás desse recurso, então muito obrigado, Bernd!