Ich weiß, dass dieses Thema viel behandelt wurde, aber ich kann keine Antwort auf meine spezifische Situation finden.
Derzeit verwende ich .gitignore
, um vertrauliche Inhalte auszuschließen und separat (Konfigurationsdateien usw.) aufzubewahren. Da sich meine Codebasis in immer mehr Projekte erweitert, wird dies immer schwieriger zu verwalten und ich habe auch keine wirkliche Möglichkeit, Änderungen zu verfolgen oder die Dateien ordnungsgemäß zu sichern.
Es gibt einige Werkzeuge für dieses Problem, wie git-secret
, Hashicorp Vault
und git-crypt
doch keines dieser Arbeit unter Windows, wo ich alles meiner Entwicklung zu tun (aus verschiedenen Gründen).
Derzeit bin ich der einzige Entwickler in meinem Unternehmen, der keine Expansionspläne hat. Die Quellcodeverwaltung (Gitlab) wird hauptsächlich für meine eigene Referenz und die Fähigkeit verwendet, Änderungen aufzuzeichnen. Wäre es ein großes Problem oder Risiko, ein paar Verbindungszeichenfolgen oder Konfigurationsdateien in die Quellcodeverwaltung zu verschieben? Diese Informationen befinden sich derzeit ungesichert auf einem Netzwerklaufwerk (mit Ausnahme von NTFS-Berechtigungen).
Ich habe die Idee, dass die beste Vorgehensweise darin besteht, dieses Material nicht zur Quellcodeverwaltung zu verschieben, aber ich habe eine privat gehostete Gitlab-Instanz, die außerhalb des lokalen Netzwerks nicht zugänglich ist. Bedeutet dies, dass das Risiko geringer ist?
Antworten:
Ganzheitlich betrachtet gibt es mehrere Dinge zu beachten:
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:
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.
quelle
Der beste Ort zum Speichern vertraulicher Informationen ist ein speziell erstellter Speicher,
Hashicorp Vault
der Windows unterstützt.Wenn Sie dies (aus welchen Gründen auch immer) nicht verwenden können, können Sie
git-secret
auch Windows verwenden, das auch Windows unterstützt.git-secret
In dieser PR wurde Unterstützung für Windows hinzugefügt : https://github.com/sobolevn/git-secret/pull/123git-crypt
hat auch experimentelle Unterstützung für Windows:https://github.com/AGWA/git-crypt/wiki/Installation
/programming/43040370/how-to-install-git-crypt-in-windows
quelle