write on ansible
This commit is contained in:
parent
7950098865
commit
f3a1cb1ea9
@ -210,8 +210,47 @@ Ein Beispiel mit dem im Rahmen dieser Ausarbeitung bereitgestellten Filtermodul
|
|||||||
\label{fig:flowchart-filtermodule-resolve-1p-secret}
|
\label{fig:flowchart-filtermodule-resolve-1p-secret}
|
||||||
\end{nicepic}
|
\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}
|
\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
|
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
|
\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.
|
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 <UUID>} 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.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user