1
resposta

[Dúvida] Dados sensíveis no application-dev.yml

Bom dia!

Existe alguma forma de não armazenar as credenciais de banco de dados, por exemplo, no application-dev.yml? Já vi em outras soluções que essas informações ficam referenciadas em variáveis de ambiente por exemplo.

1 resposta

Como vc mesmo mencionou, vc pode utilizar variáveis de ambiente para armazenar estas informações. Na verdade, na maiorias das aplicações reais que tive a oportunidade de trabalhar sempre os dados mais sensíveis como credenciais de APIs, chaves de seguranças dentre outras são armazenadas em variáveis de ambiente.

Outra abordagem interessante que eu conheci recentemente foi a utlização do Github secrets para armazenar estas informações, é bem legal. Você pode incluir as secrets no repositório da aplicação e obt-las através de workflows do Github Actions.

Pra te ajudar contei com a ajuda do nosso amigo ChatGPT para exemplificar como vc pode fazer isso na prática:

  1. Armazenamento de credenciais no Github Secrets:

    • Vá para o seu repositório no Github e clique em "Settings".
    • Clique em "Secrets" na barra de navegação à esquerda.
    • Clique em "New repository secret".
    • Insira um nome para a chave secreta, como "DB_PASSWORD".
    • Insira o valor correspondente, como a senha do banco de dados.
    • Clique em "Add secret" para salvar a chave secreta.
  2. Acesso às credenciais no código Kotlin:

    fun main() {
     val password = System.getenv("DB_PASSWORD")
     println("Password: $password")
    }
  3. Configuração do Github Actions:

    • No seu repositório Github, clique em "Actions".
    • Clique em "New workflow".
    • Selecione "Set up a workflow yourself".
    • Insira o seguinte código YAML:
name: CI

    on:
      push:
        branches:
          - main

    env:
      DB_PASSWORD: ${{ secrets.DB_PASSWORD }}

    jobs:
      build:
        runs-on: ubuntu-latest

        steps:
        - name: Checkout code
          uses: actions/checkout@v2

        - name: Set up JDK
          uses: actions/setup-java@v1
          with:
            java-version: 11

        - name: Build with Gradle
          run: ./gradlew build

        - name: Run application
          run: ./gradlew run

Neste exemplo, estamos configurando um fluxo de trabalho chamado "CI" que será acionado a cada push para o branch principal. O Github Actions está definindo a variável de ambiente "DB_PASSWORD" com o valor armazenado no Github Secrets. Em seguida, o fluxo de trabalho compila e executa sua aplicação Kotlin. Ao executar sua aplicação, você poderá acessar a senha do banco de dados através da variável de ambiente "DB_PASSWORD".