Ganzheitlich betrachtet gibt es mehrere Dinge zu beachten:
- Wird der GitLab-Server im selben Netzwerk wie die Zielumgebung gehostet?
- Haben Sie Benutzernamen und Passwörter in Ihren Konfigurationsdateien?
- Können Sie die Sicherheitskonfiguration von der normalen Anwendungskonfiguration trennen?
Das erste Anliegen hat mit der Politik zu tun. Wenn die Software in einem separaten Netzwerk bereitgestellt wird, können Richtlinienprobleme auftreten, selbst wenn Ihre Konfigurationen verschlüsselt sind.
Vermeiden sensibler Informationen
Seien Sie genau darüber, was empfindlich ist. Beispielsweise ist der Domänenname eines Servers möglicherweise nicht vertraulich, die IP-Adresse jedoch möglicherweise (oder die Zuordnung der beiden). In der Regel sind Benutzernamen und Kennwörter sowie Client-IDs und geheime Schlüssel (OAuth2) vertraulich.
Ihre besten Optionen sind:
- Verwenden Sie Verbindungszeichenfolgen, für die kein Benutzername / Kennwort erforderlich ist (siehe unten).
- Trennen Sie vertrauliche Informationen von der Haupt-Web.config
- Verwenden Sie das Dateiattribut in AppSettings , um eine externe Konfigurationsdatei zu lesen
In einigen Datenbanken können Sie eine Verbindungszeichenfolge verwenden, bei der Benutzername und Kennwort nicht Teil des Inhalts sind. Sie können Ihre App beispielsweise unter einem Domänendienstkonto ausführen, um mithilfe integrierter Sicherheit eine Verbindung zu SQL Server herzustellen. Sie können auch Oracle Wallet verwenden, um den Benutzernamen / das Kennwort auf dem Zielcomputer geheim zu halten. Bei einigen OAuth2-Diensten können Sie eine CSV- oder JSON-Datei verwenden, die auf dem Computer an einem Standardspeicherort gespeichert ist.
Mit anderen Worten, tun Sie alles, um zu vermeiden, dass vertrauliche Informationen dort aufbewahrt werden, wo sie nicht hingehören. Wenn Sie Änderungen an Ihrer App vornehmen müssen, um an einem Speicherort auf der Festplatte nach den vertraulichen Bits zu suchen, können Sie diese einmal auf jedem Zielserver einrichten und einfach aus Ihrer App lesen.
Konfigurationsserver
Steeltoe hat bestimmte Spring-Integrationsbibliotheken nach C # portiert und unterstützt sogar Spring Cloud Config- Server. Der Spring Cloud Config-Server erfordert ein Git-Repository im Bereitstellungsnetzwerk , ermöglicht es Ihnen jedoch, die Konfiguration dort anzupassen, wo sie benötigt wird. Wenn Ihre Anwendung komplex genug ist (z. B. Mikrodienste), sollten Sie dies prüfen, um die Servernamen in derselben Umgebung zu schützen, in der sich die Server befinden.
Endeffekt
Sie möchten nur die Notwendigkeit vertraulicher Informationen so weit wie möglich vermeiden, aber die nicht vertraulichen Konfigurationen in der Quellcodeverwaltung beibehalten. Wenn Sie den Benutzernamen / das Kennwort in Ihrer Konfigurationsdatei nicht vermeiden können (dh eine andere Datenbank, die nicht der integrierten Sicherheit entspricht), laden Sie nur ein kleines Stück aus einer externen Datei.