write stuff
This commit is contained in:
parent
f3a1cb1ea9
commit
d0a48376e0
@ -210,45 +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.
|
\subsection{Akzeptierte Formate}
|
||||||
Diese sind:
|
Das Filtermodul akzeptiert mehrere, verschiedene Eingabeformate und ist rückwärtskompatibil.
|
||||||
\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:<...>}
|
\subsubsection*{Kein erkanntes Format}
|
||||||
Beginnt der Wert mit \enquote{1P:}, so wird alles nach danach als \ac{UUID} interpretiert.
|
Wird kein bekanntes Format erkannt, wird der Wert unverändert zurückgegeben. Das ermöglicht Rückwärtskompatibilät,
|
||||||
|
sodass nach-wie-vor hardgecodede Secrets funktionieren, und nicht versehentlich als \ac{UUID} interpretiert werden.
|
||||||
|
Das gewährleistet eine flüssigere Migration der Host-Konfigurationen, da somit bestehende Dateien weiterhin valide sind.
|
||||||
|
|
||||||
|
\subsubsection*{1P:<...>}
|
||||||
|
Beginnt der Wert mit \enquote{1P:}, so wird alles Nachfolgende als \ac{UUID} interpretiert.
|
||||||
Es wird versucht, das Feld \enquote{password} aus diesem Eintrag zu dereferenzieren.
|
Es wird versucht, das Feld \enquote{password} aus diesem Eintrag zu dereferenzieren.
|
||||||
|
|
||||||
\subsection*{Objektformat}
|
\subsubsection*{Objektformat}
|
||||||
Wird ein Yaml-Objekt übergeben, werden die Keys \enquote{1P\_secret\_uuid} und \enquote{1P\_field\_id} erwartet,
|
Wird ein Yaml-Objekt übergeben, so 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
|
Diese definieren die Werte der Eintrags-\ac{UUID} und der Feld-ID in der ein Secret steht. 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.
|
Eintrages abzufragen, anstelle nur des Passworts. Ist keine Feld-ID gegeben, so wird auf das Standardfeld \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 private \ac{UUID} zu ermitteln, die zu der öffentlichen \ac{UUID} gehört, die in der Host-Konfiguration steht,
|
||||||
\ac{UUID} zu ermitteln, frägt das Filtermodul zunächst den Mapping-Eintrag aus dem Entwickler*innen-Vault ab und schlägt
|
frägt das Filtermodul den Mapping-Eintrag aus dem jeweiligen Entwickler*innen-Vault an und schlägt die öffentliche \ac{UUID} darin nach.
|
||||||
hierin die öffentliche \ac{UUID} nach.
|
Die daraus resultierende \ac{UUID} kann von einem*r externen Entwickler*in angefragt werden.
|
||||||
|
|
||||||
\subsection{Unterscheidung zwischen internen und externen Entwickler*innen}
|
\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 in der Docker-Ansible-Konfigurationsdatei eine Entwickler*innen-Vault-\ac{UUID} definiert, so 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
|
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.
|
von einem*r interne*n Entwickler*in ausgegangen. Sind beide Konfigurationen zugleich 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.
|
Ist ein*e interne*r Entwickler*in angenommen, so wird der Mapping-Schritt übersprungen. Der verbleibende Prozess bleibt unberührt.
|
||||||
|
|
||||||
\subsection{Kommunikation mit 1Password}
|
\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.
|
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.
|
Dieser Aufruf ist: \textit{op item get <UUID>} mit dem Zusatz \textit{--format json}, um die Ausgabe programmatisch auswerten zu können.
|
||||||
|
|
||||||
\subsection{Performanz und Benchmarks}
|
\subsection{Performanz und Benchmarks}
|
||||||
Um diese Konfiguration zu testen, werden in einem Testszenario fünf Werte aus \ac{1P} ausgelesen:
|
Um diese Konfiguration zu testen, werden in einem Testszenario fünf Werte aus \ac{1P} ausgelesen:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item[Datenbank-Host]
|
\item Datenbank-Host
|
||||||
\item[Datenbank-Port]
|
\item Datenbank-Port
|
||||||
\item[Datenbank-Benutzername]
|
\item Datenbank-Benutzername
|
||||||
\item[Datenbank-Passwort]
|
\item Datenbank-Passwort
|
||||||
\item[Datenbank-Name]
|
\item Datenbank-Name
|
||||||
\end{itemize}
|
\end{itemize}
|
||||||
Diese Einträge abzufragen dauert durch das imperformante \ac{1P}-CLI rund 17 Sekunden.
|
Diese Einträge abzufragen dauert durch das imperformante \ac{1P}-CLI rund 17 Sekunden.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user