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

Odpowiedz Nowy wątek
2019-05-20 08:20

Rejestracja: 1 rok temu

Ostatnio: 1 dzień temu

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ę.

Pozostało 580 znaków

2019-05-20 08:33

Rejestracja: 17 lat temu

Ostatnio: 3 minuty temu

Lokalizacja: Kraków

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


It's easy to hate code you didn't write, without an understanding of the context in which it was written.
edytowany 1x, ostatnio: neves, 2019-05-20 08:35

Pozostało 580 znaków

2019-05-20 08:45

Rejestracja: 1 rok temu

Ostatnio: 1 dzień temu

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?

edytowany 1x, ostatnio: AngryProgrammer, 2019-05-20 08:46

Pozostało 580 znaków

2019-05-20 09:01

Rejestracja: 17 lat temu

Ostatnio: 3 minuty temu

Lokalizacja: Kraków

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", 
  }
}

It's easy to hate code you didn't write, without an understanding of the context in which it was written.

Pozostało 580 znaków

Odpowiedz

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