From f3a1cb1ea97f386176d90c829c96c303e3375402 Mon Sep 17 00:00:00 2001 From: Leon Etienne Date: Tue, 11 Feb 2025 16:05:50 +0100 Subject: [PATCH] write on ansible --- chapters/technische-umsetzung/main.tex | 39 ++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/chapters/technische-umsetzung/main.tex b/chapters/technische-umsetzung/main.tex index 247d4c6..71e2242 100644 --- a/chapters/technische-umsetzung/main.tex +++ b/chapters/technische-umsetzung/main.tex @@ -210,8 +210,47 @@ Ein Beispiel mit dem im Rahmen dieser Ausarbeitung bereitgestellten Filtermodul \label{fig:flowchart-filtermodule-resolve-1p-secret} \end{nicepic} +Die generelle Funktionsweise des Filtermoduls ist es, drei Arten von Eingabeformaten zu unterstützen. +Diese sind: +\subsection*{Kein erkanntes Format} +Wird kein bekanntes Format, wird der Wert unverändert zurückgegeben. Das ermöglicht Rückwärtskompatibilät, dass +nach-wie-vor hardgecodede Secrets weiterhin funktionieren, und nicht versehentlich als \ac{UUID} interpretiert werden. + +\subsection*{1P:<...>} +Beginnt der Wert mit \enquote{1P:}, so wird alles nach danach als \ac{UUID} interpretiert. +Es wird versucht, das Feld \enquote{password} aus diesem Eintrag zu dereferenzieren. + +\subsection*{Objektformat} +Wird ein Yaml-Objekt übergeben, werden die Keys \enquote{1P\_secret\_uuid} und \enquote{1P\_field\_id} erwartet, +die die \ac{UUID} und eine Feld-ID für den Eintrag erwarten. Das ermöglicht z.B. auch den Benutzernamen (\textit{1P\_field\_id: username}) eines +Eintrages abzufragen, anstelle nur des Passworts. Ist keine Feld-ID gegeben, wird auf den Standardwert \enquote{password} zurückgefallen. + \subsection{Übersetzung der UUIDs} Um die für eine*n Entwickler*in gegebene, private \ac{UUID} für eine öffentliche, sich in der Host-Konfiguration gesetzte \ac{UUID} zu ermitteln, frägt das Filtermodul zunächst den Mapping-Eintrag aus dem Entwickler*innen-Vault ab und schlägt hierin die öffentliche \ac{UUID} nach. + +\subsection{Unterscheidung zwischen internen und externen Entwickler*innen} +Ist in der Docker-Ansible-Konfigurationsdatei eine Entwickler*innen-Vault-\ac{UUID} definiert, wird von einem*r externe*n Entwickler*in ausgegangen. +Ist stattdessen definiert, dass die in den Host-Konfigurationen angegebenen, öffentlichen \acp{UUID} direkt angefragt werden sollen, wird +von einem*r interne*n Entwickler*in ausgegangen. Sind beide Konfigurationen gegeben, wird ein Inkompatibilitätsfehler erhoben. +Ist ein*e interne*r Entwickler*in angenommen, so wird der Mapping-Schritt übersprungen. Der verbleibende Prozess bleibt unberührt. + +\subsection{Kommunikation mit 1Password} +Ist eine \ac{UUID} ermittelt, auf die der*ie Nutzer*in Zugriff hat, wird diese über das \ac{1P}-CLI angefragt. +Das geht via \textit{op item get } mit dem Zusatz \textit{--format json}, um die Ausgabe programmatisch auswertbar zu machen. + +\subsection{Performanz und Benchmarks} +Um diese Konfiguration zu testen, werden in einem Testszenario fünf Werte aus \ac{1P} ausgelesen: +\begin{itemize} + \item[Datenbank-Host] + \item[Datenbank-Port] + \item[Datenbank-Benutzername] + \item[Datenbank-Passwort] + \item[Datenbank-Name] +\end{itemize} +Diese Einträge abzufragen dauert durch das imperformante \ac{1P}-CLI rund 17 Sekunden. + +\subsection{Optimierung} +Es bieten sich einige Möglichkeiten an den in \fullref{fig:flowchart-resolve-1p-secret} zu beschleunigen.