Sei que este tópico foi abordado bastante, mas não consigo encontrar uma resposta para minha situação específica.
Atualmente, estou usando .gitignore
para excluir conteúdo confidencial e mantê-lo (arquivos de configuração, etc.) separadamente. À medida que minha base de código se expande para mais e mais projetos, isso está se tornando bastante difícil de gerenciar e também não tenho como rastrear alterações ou fazer backup dos arquivos corretamente.
Existem algumas ferramentas para este problema, como git-secret
, Hashicorp Vault
e git-crypt
mas nenhum desses funcionar com o Windows, onde eu faço todo o meu desenvolvimento (por várias razões).
Atualmente, sou o único desenvolvedor que trabalha na minha empresa sem planos de expansão. O controle de origem (Gitlab) é usado principalmente para minha própria referência e capacidade de registrar alterações. Enviar algumas cadeias de conexão ou arquivos de configuração para o controle de origem seria um grande problema ou risco? Essas informações estão atualmente em uma unidade de rede, não seguras (exceto para permissões NTFS)
Eu entendo que a melhor prática é não levar essas coisas ao controle de origem, mas eu tenho uma instância do Gitlab hospedada em particular que não é acessível fora da rede local - isso significa que há menos riscos?
Respostas:
Pensando nisso holisticamente, há várias coisas a considerar:
A primeira preocupação tem a ver com política. Se o software for implantado em uma rede separada, você poderá encontrar problemas de política, mesmo que suas configurações sejam criptografadas.
Evitando informações confidenciais
Seja específico sobre o que é sensível. Por exemplo, o nome de domínio de um servidor pode não ser sensível, mas pode ser o endereço IP (ou a associação dos dois). Normalmente, nomes de usuário e senhas são confidenciais, bem como clientId e chaves secretas (OAuth2).
Suas melhores opções são:
Alguns bancos de dados permitem que você tenha uma cadeia de conexão em que nome de usuário e senha não façam parte do conteúdo. Por exemplo, você pode executar seu aplicativo em uma conta de serviço de domínio para se conectar ao SQL Server usando segurança integrada. Ou você pode usar a Oracle's Wallet para manter o nome de usuário / senha em segredo na máquina de destino. Alguns serviços OAuth2 permitem que você use um arquivo .csv ou .json armazenado na máquina em um local padrão.
Em outras palavras, faça o que puder para evitar manter informações confidenciais onde elas não pertencem. Se você precisar fazer alterações no seu aplicativo para procurar em um local no disco para ler os bits sensíveis, é possível configurá-lo uma vez em cada servidor de destino e apenas lê-lo no seu aplicativo.
Servidores de configuração
O Steeltoe tem portado determinadas bibliotecas de integração do Spring para C # e elas ainda têm suporte para servidores Spring Cloud Config . O servidor Spring Cloud Config requer um repositório Git na rede de implantação , mas permite que você personalize a configuração onde ela precisa estar. Se o seu aplicativo for suficientemente complexo (ou seja, microsserviços), isso seria algo que vale a pena examinar para manter os nomes dos servidores protegidos no mesmo ambiente em que os servidores estão localizados.
Bottom line
Você só quer evitar a necessidade de informações confidenciais o máximo possível, mas mantenha as configurações não confidenciais no controle de origem. Se você não puder evitar o nome de usuário / senha no seu arquivo de configuração (ou seja, um banco de dados diferente que não tenha equivalente à segurança integrada), carregue apenas um pouco de um arquivo externo.
fonte
O melhor local para armazenar informações confidenciais é uma loja criada para fins específicos,
Hashicorp Vault
que suporta o Windows.Se (por qualquer motivo) você não conseguir usar isso, também poderá usar o
git-secret
que também oferece suporte ao Windows. O suporte para Windows foi adicionado agit-secret
este PR: https://github.com/sobolevn/git-secret/pull/123git-crypt
também possui suporte experimental para Windows:https://github.com/AGWA/git-crypt/wiki/Installation
/programming/43040370/how-to-install-git-crypt-in-windows
fonte