Boa noite a todos!
Estou com dúvida em relação se armazenar dados sensíveis como login/password de Banco de Dados ou ApiKeys em variáveis de ambiente.
Este método seria a única opção que trás como solução de segurança para criação do programa e/ou já ter o programa em produção?
Pergunto isto pois foi visto sugestão via fórum de criar arquivos .env para armazenar estes dados, utilizando o dotenv no Java para ler estes arquivos e ter acesso as variáveis.
Também verifiquei outra solução para o caso que seria a segregação das informações do arquivo application.properties, criando outros três arquivos como application-local.properties / application-dev.properties / application-prod.properties, onde deixaria os dados sensíveis nestes arquivos, deixando no application.propertiesapenas as informações abaixo, onde o spring.profiles.active seria o perfil responsável, por exemplo, de acessar o banco local ou de produção.
application.properties
spring.application.name=screenmatch
spring.profiles.active=local
application-local.properties
api.omdb.key=ApiKeyOMDBAqui
spring.datasource.url=jdbc:postgresql://localhost:5432/alura_series
spring.datasource.username=postgres
spring.datasource.password=password
spring.datasource.driver-class-name=org.postgresql.Driver
spring.jpa.database-platform=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
Na sugestão do application.properties, foi sugerido de manter no .gitignore a seguinte inclusão:
### Spring Boot / Configs sensíveis ###
application-local.properties
application-dev.properties
application-prod.properties
.env
Gostaria de saber se há problemas com cada abordagem e quais seriam as vantagens para cada uma delas.
Desde já, muito obrigado a todos!