write for technische umsetzung ansible
This commit is contained in:
parent
01a0a603d3
commit
8c88e3a1f2
@ -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.
|
Somit ist gewährleistet, dass selbst bei einer fatalen Fehlkonfiguration kein Datenverlust entseht.
|
||||||
|
|
||||||
\section{Integration in Ansible}
|
\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 \}\}}.
|
||||||
|
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
\acro{YAML}[YAML]{Yet Another Markup Language}
|
\acro{YAML}[YAML]{Yet Another Markup Language}
|
||||||
\acro{UUID}[UUID]{Universally Unique Identifier}
|
\acro{UUID}[UUID]{Universally Unique Identifier}
|
||||||
\acroplural{UUID}[UUIDs]{Universally Unique Identifiers}
|
\acroplural{UUID}[UUIDs]{Universally Unique Identifiers}
|
||||||
|
\acro{1PSA}[1PSA]{1Password Secrets Automation}
|
||||||
%
|
%
|
||||||
%
|
%
|
||||||
\end{acronym}
|
\end{acronym}
|
||||||
|
@ -26,3 +26,11 @@
|
|||||||
year = {2025},
|
year = {2025},
|
||||||
note = {Zugriff: Februar 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}
|
||||||
|
}
|
||||||
|
BIN
images/docker-ansible-structure.png
Normal file
BIN
images/docker-ansible-structure.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
Loading…
x
Reference in New Issue
Block a user