Przechowywanie haseł na produkcji - .NetCore

0

Cześć. Próbuję znaleźć informacje na temat przechowywania haseł w aplikacji. Wiem jak to robić w fazie rozwoju, ale jak to robić prawidłowo w fazie produkcji?
Czy faktycznie wystarczy, jeśli umieszczę na serwerze plik appsettings.production.json i w nim będę trzymał wszystkie hasła i klucze otwartym tekstem? Czy lepiej by było jakoś ten plik zabezpieczyć. A jeśli tak, to ja to zrobić technicznie?

Czy taka droga jest prawidłowa?
Stworzyć sobie narzędzie, które podczas releasowej kompilacji weźmie mi zawartość pliku secrets.json (ewentualnie jakiegoś innego pliku), zakoduje go i stworzy z niego appsettings.production.json? Czy użycie tego będzie ok: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/using-data-protection?

0

Plik appsettings.json nie jest dostępny z punktu widzenia serwera WWW, jeżeli poprawnie go skonfigurujesz, stąd jest bezpieczny na tyle, na ile masz bezpieczny serwer.

Aczkolwiek ja nie używam appsettings, ale zmiennych środowiskowych (do przechowywania kluczy JWT i connection stringów do bazy) - ustawia je skrypt, który uruchamia usługę, ale też w zasadzie te rzeczy są w nim zapisane czystym tekstem. Teoretycznie zgodne z https://docs.microsoft.com/en-us/aspnet/core/security/app-secrets choć oczywiście w Microsofcie najbardziej by chcieli, abyś używał Azure Key Vault.

Możesz obejrzeć szyfrowany provider appsettings, który znalazłem na jakimś blogu, i który szyfruje te JSON-y jeszcze zewnętrznym kluczem.

0

A to nie można w webconfigu -> appsettings?

0

do czego są te hasła ? Bo możesz zrobić to tak żeby żadne hasła nie były wymagane, np. zamiast hasła do SQL użyć trusted connection na użytkowniku który uruchamia aplikacje. Innym sposobem są certyfikaty a samym appsettings podajesz tylko warunki do wyszukania tego certyfikatu. Są też klucze sprzętowe (choć może net core tego nie ogarnie).

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