diff --git a/chapters/technische-umsetzung/main.tex b/chapters/technische-umsetzung/main.tex index c790571..b5a0503 100644 --- a/chapters/technische-umsetzung/main.tex +++ b/chapters/technische-umsetzung/main.tex @@ -158,4 +158,46 @@ Wenn diese Vault-ID nun in der Liste der fest kodierten Nutzvault-IDs vorkommt, Somit ist gewährleistet, dass selbst bei einer fatalen Fehlkonfiguration kein Datenverlust entseht. \section{Integration in Ansible} +Es ist Anforderung, dass \ac{1P}-Einträge von Entwickler*innen innerhalb von Ansible-Playbooks +dereferenziert und verwendet werden können. + +\ac{1P} unterstützt nativ das Ersetzen von \ac{1P}-Referenzen in Dateien durch Secrets. +Diese Technik nennt sich \enquote{\ac{1PSA}}. +Diese Technologie ist jedoch nicht für die hier vorliegende Aufgabenstellung verwertbar, da die dem zugrunde liegende +Berechtigungsverwaltung auf Vault-Basis steht. Entweder hat ein*e Entwickler*in Zugriff auf einen gesamten Vault, oder er*sie keinen Zugriff auf den gesamten Vault. +Eine feingranularere Steuerung ist hier nicht möglich, jedoch für die hier gegebenen Anforderungen nötig. \cite{bib:1password-secrets-automation} +\ac{1PSA} erfasst \acp{UUID} und ist daher mit dem Konzept von Entwickler*innen-Vaults inkompatibel, da +Entwickler*innen hierbei eigene Kopien der originalen Einträge führen, die jeweils eigene \acp{UUID} haben. +Externe Entwickler*innen haben somit keinen Zugriff auf die originalen, öffentlichen \acp{UUID} und die privaten \acp{UUID}, die im Entwickler*innen-Vault +vorhanden sind, gelten jeweils nur für ein*e Entwickler*in. Das erfordert eine maßgeschneiderte, programmatische Lösung: + +\begin{nicepic} + \includegraphics[width=0.75\textwidth]{images/docker-ansible-structure.png} + \captionof{figure}{Relationsdiagramm: Docker-Ansible-Struktur, um \ac{1P}-Einträge zu dereferenzieren} + \caption*{Quelle: Eigene Darstellung} + \label{fig:docker-ansible-structure} +\end{nicepic} + +Die hierfür angedachte Architektur erfordert, dass öffentliche \acp{UUID} in Host-Konfigurationen in Docker-Ansible aufgeführt sind. +Also eine UUID, die für alle Entwickler*innen greifbar ist. + +Ab hier wird die Nutzergruppe \enquote{Entwickler*innen} in zwei Untergruppen strukturiert: +\begin{description} + \item [Interne Entwickler*innen] \hfill \\ + Interne, festangestellte Entwickler*innen haben Vollzugriff auf den \ac{1P} und somit auch Zugriff auf die + in den Host-Konfigurationen vermerkte, öffentliche \ac{UUID} eines Eintrages. + Da diese Entwickler*innen keinen Entwickler*innen-Vault haben, müssen sie direkt auf diese notierte, öffentliche \ac{UUID} zugreifen. + \item [Externe Entwickler*innen] \hfill \\ + Externe Entwickler*innen verfügen über einen Entwickler*innen-Vault, nicht jedoch über direkten Zugriff auf die vermerkte, öffentliche \ac{UUID}. + Falls der*die jeweilige Entwickler*in Zugriff auf einen verlinkten Eintrag hat, dann nur auf eine Kopie des Eintrages in dessen*deren jeweiligen Entwickler*innen-Vaults. + Diese Kopie hat eine andere \ac{UUID} als die, die in der Host-Konfiguration steht. Sie ist ja auf technischer Ebene ein anderer Eintrag, nur mit identischem Inhalt. + Die in den Host-Konfigurationen vermerkten, öffentlichen \acp{UUID} müssen also zunächst in eine private, sich im Entwickler*innen-Vault befindliche, \ac{UUID} übersetzt werden. + Hierfür besitzen +\end{description} + +Um diese Problemstellung anzugehen, wird ein Ansible Filtermodul entworfen. Ein Filtermodul dient als +Texttransformator und kann in Jinja-Templates, wie sie von Ansible verwendet werden, wie folgt verwendet werden:\\ +\texttt{\{\{\ \enquote{hello world} | uppercase \}\}}. Dieses Beispiel führt das \enquote{uppercase}-Filtermodul an. +Ein Beispiel mit dem im Rahmen dieser Ausarbeitung bereitgestellten Filtermodul würde so aussehen:\\ +\texttt{\{\{ smtp.password | resolve\_1p\_secret \}\}}. diff --git a/dexes/acrodex.tex b/dexes/acrodex.tex index 83dddfd..87e0783 100644 --- a/dexes/acrodex.tex +++ b/dexes/acrodex.tex @@ -17,6 +17,7 @@ \acro{YAML}[YAML]{Yet Another Markup Language} \acro{UUID}[UUID]{Universally Unique Identifier} \acroplural{UUID}[UUIDs]{Universally Unique Identifiers} + \acro{1PSA}[1PSA]{1Password Secrets Automation} % % \end{acronym} diff --git a/dexes/literature.bib b/dexes/literature.bib index d128117..bc3c589 100644 --- a/dexes/literature.bib +++ b/dexes/literature.bib @@ -26,3 +26,11 @@ year = {2025}, note = {Zugriff: Februar 2025} } + +@misc{bib:1password-secrets-automation, + author = {{1Password}}, + howpublished = "\url{https://developer.1password.com/docs/secrets-automation/}", + title = {{ 1Password Secrets Automation }}, + year = {2025}, + note = {Zugriff: Februar 2025} +} diff --git a/images/docker-ansible-structure.png b/images/docker-ansible-structure.png new file mode 100644 index 0000000..e0910de Binary files /dev/null and b/images/docker-ansible-structure.png differ diff --git a/main.pdf b/main.pdf index fa08752..82c1fd6 100644 Binary files a/main.pdf and b/main.pdf differ