Zautomatyzowany deployment na produkcję, jak przechowywać hasła

0

Cześć,
Bawię się ostatnio trochę w .Net Core i zastanawia mnie jedna rzecz, jak przechowywać hasła, klucze, connection stringi na produkcji, jeżeli chce się mieć w pełni zautomatyzowane CI/CD, tzn.
-push do odpowiedniego brancha
-testy
-build
-deploy na odpowiednie środowisko

Nie korzystam z Azure, repo mam na Gitlabie i wykorzystuje CI jakie on oferuje i widzę generalnie dwie opcje:

  1. Mogę zdefiniować w Gitlabie zmienne i przed buildem puścić skrypt który podmieni wartości w moim appsettings.json na wartości które mam zdefiniowane w Gitlabie. Minusem jest to, że z tego co się orientuje, bardziej skomplikowane hasła (ze specjalnymi znakami) nie będą zaszyfrowane i będą latać plain textem po konsoli.
  2. W ogóle nie robię tego w fazie deploymentu, na docelowe środowiska wrzucam wcześniej przygotowany plik appsettings.json przez ftp, ewentualnie robię tutaj rożne konfigurację per środowisko i commitując zmieniam jeden parametr - environment, który wskazuje z którego pliku aplikacja ma czerpać konfigurację.
2

Zauważ że możesz również wykorzystać zmienne środowiskowe na systemie na który robisz deploy, żadnych plików wtedy nie trzeba edytować. Domyślne ustawienia asp net core zresztą są takie że zmienne środowiskowe nadpisują to co jest w appsettings.json.

zresztą jest to jedno z zaleceń z The Twelve Factors App - III. Config

0

Jeżeli dobrze rozumiem:
-na docelowych środowiskach ustawiam zmienną systemową ASPNETCORE_ENVIRONMENT - to o tym mówisz?
-tworzę appsettings.{env}.json per środowisko, wrzucam to przez ftpa i zapominam do czasu aż nie muszę zmienić tej konfiguracji
-pisze kawałek kodu

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{  
    if (env.IsDevelopment())
    {
        // use appsettings.dev.json
    }  

    if (env.IsProduction())
    {
        // use appsettings.prod.json
    }
} 

I gotowe?

1

No nie do końca, w zmiennych środowiskowych ustawiasz hasła/klucze np:

Environment=Jwt__Key="4880E111-xxxx-xxxx-xxxx-F1111775CA27"

i one nadpisują to co masz w appsettings.json

{ 
  "Jwt": {
    "Key": "196A813D-xxxx-xxxx-xxxx-E90DE807BBDD", 
  }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1