Pensando nisso holisticamente, há várias coisas a considerar:
- O servidor GitLab está hospedado na mesma rede que o ambiente de destino?
- Você tem nomes de usuário e senhas em seus arquivos de configuração?
- Você pode separar a configuração de segurança da configuração normal do aplicativo?
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:
- Use cadeias de conexão que não exijam nome de usuário / senha (veja abaixo)
- Separe as informações confidenciais do Web.config principal
- Use o atributo file no AppSettings para ler um arquivo de configuração externo
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.