From edaee1db5a33292681961f0445008e5e7af668e6 Mon Sep 17 00:00:00 2001 From: Leon Etienne Date: Mon, 3 Feb 2025 09:13:29 +0100 Subject: [PATCH] touchups --- chapters/anforderungen.tex | 11 ++++++----- chapters/einleitung/problemstellung.tex | 2 +- chapters/einleitung/zielsetzung.tex | 2 +- chapters/technische-umsetzung/main.tex | 2 +- main.pdf | Bin 968611 -> 968647 bytes 5 files changed, 9 insertions(+), 8 deletions(-) diff --git a/chapters/anforderungen.tex b/chapters/anforderungen.tex index ab0dd7b..e3aa15f 100644 --- a/chapters/anforderungen.tex +++ b/chapters/anforderungen.tex @@ -23,12 +23,13 @@ nicht-funktioniale Anforderungen zu unterteilen ist. \begin{tabular}{|p{14cm}|} \hline \textbf{Funktionale Anforderungen} \\ \hline - Entwickler*innen erhalten verschiedene Zugänge, definiert in einer YAML-Datei. \\ \hline + Entwickler*innen erhalten verschiedene Zugang zu verschiedenen \ac{1P}-Einträgen (Zugänge), + definiert in einer YAML-Datei. \\ \hline Wildcard-Matching auf den \ac{1P}-Eintragstitel für zusammenhängende Einträge. \\ \hline - \ac{1P}-Einträge sollen einzeln zuweisbar sein. \\ \hline - Nicht im YAML gelistete Zugänge sollen bei Anwendung entfernt werden. \\ \hline - Ansible Secrets müssen aus \ac{1P} dereferenziert werden können. \\ \hline - Einträge sollen auch manuell einsehbar sein. \\ \hline + \ac{1P}-Einträge sollen Entwickler*innen einzeln zuweisbar sein. \\ \hline + Nicht in der Konfugration gelistete Zugänge sollen bei Anwendung entfernt werden. \\ \hline + Ansible-Secrets müssen aus \ac{1P} dereferenziert werden können. \\ \hline + Einträge sollen für Entwickler*innen einsehbar sein. \\ \hline \textbf{Nicht-funktionale Anforderungen} \\ \hline Das System muss Berechtigungen von Entwickler*innen verwalten. \\ \hline Das System muss benutzerfreundlich sein. \\ \hline diff --git a/chapters/einleitung/problemstellung.tex b/chapters/einleitung/problemstellung.tex index 019ca41..5a0ab31 100644 --- a/chapters/einleitung/problemstellung.tex +++ b/chapters/einleitung/problemstellung.tex @@ -4,7 +4,7 @@ \section{Problemstellung} In der Arbeitsumgebung des Partnerunternehmens besteht zum Zeitpunkt der Themenfindung der hier beleuchteten Arbeit kein -Management für Secrets und Logindaten zwischen Entwickler*innenn. Logindaten zu den Projekten des Unternehmens liegen schlicht in einem \ac{1P}-Vault. +Management für Secrets und Logindaten zwischen Entwickler*innen. Logindaten zu den Projekten des Unternehmens liegen schlicht in einem \ac{1P}-Vault. \ac{1P} ist der vom Unternehmen verwendete Passwortmanager. Auf diesen Vault haben sämtliche internen Entwickler*innen Zugriff, jedoch keine externen Entwickler*innen. Das ist so, weil anderenfalls dLesezugriff auf sämtliche Einträge dieses Vaults gegeben werden müssten. \ac{1P} unterstützt keine Freigaben einzelner Einträge an andere Nutzer, ohne diese Einträge in einen eigenen Vault zu kopieren. diff --git a/chapters/einleitung/zielsetzung.tex b/chapters/einleitung/zielsetzung.tex index 2340cb6..f1f84bc 100644 --- a/chapters/einleitung/zielsetzung.tex +++ b/chapters/einleitung/zielsetzung.tex @@ -7,7 +7,7 @@ Ziel ist es, eine Umgebung zu schaffen, in der beliebigen Entwickler*innen besti \ac{1P}-Einträge zugewiesen werden können. Der Pflegeaufwand sollte hierbei überschaubar bleiben. Das heisst, dass z.B. ganze Gruppen von Einträgen Entwickler*innen zugewiesen werden können. -Wenn z.B. einem Projekt viele Einträge zugeordnet sind, sollten diese idealerweise mit einer einzigen Configzeile +Wenn z.B. einem Projekt viele Einträge zugeordnet sind, sollten diese idealerweise mit einer einzigen Konfigurationszeile einem*r Entwickler*in zugeordnet werden können. Außerdem sollte eine Möglichkeit ausgearbeitet werden, um \ac{1P}-Einträge in Ansible auszulesen, damit keine Secrets mehr in den beiliegenden Konfigurationsdateien stehen, die das Freigeben diff --git a/chapters/technische-umsetzung/main.tex b/chapters/technische-umsetzung/main.tex index 185795b..0e9713f 100644 --- a/chapters/technische-umsetzung/main.tex +++ b/chapters/technische-umsetzung/main.tex @@ -64,7 +64,7 @@ Diese Einträge können über feste Eintrags-IDs und über Regex bezogen auf die \begin{nicepic} \includegraphics[width=0.75\textwidth]{images/dev-stuff-python.png} - \captionof{figure}{Relationsdiagramm: Ansatz 2 | Python-Toolbox} + \captionof{figure}{Relationsdiagramm: Ansatz 3 | Python-Toolbox} \caption*{Quelle: Eigene Darstellung} \label{fig:ansatz-3-mit-python} \end{nicepic} diff --git a/main.pdf b/main.pdf index a83a127dd928fe6abc5ff79059fa987f3735fce0..184ec3a972423e81d2dc5166b23236f67cb528a9 100644 GIT binary patch delta 16094 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 delta 16073 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