{"id":21163,"date":"2021-09-15T18:27:24","date_gmt":"2021-09-15T16:27:24","guid":{"rendered":"https:\/\/blog.mi.hdm-stuttgart.de\/?p=21163"},"modified":"2023-06-18T17:58:11","modified_gmt":"2023-06-18T15:58:11","slug":"cloud-basierter-password-manager","status":"publish","type":"post","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/","title":{"rendered":"Cloud basierter Password Manager"},"content":{"rendered":"\n<p><strong>von Benjamin Schweizer (bs103) und Max Eichinger (me110)<\/strong><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Abstract <\/strong><\/p>\n\n\n\n<p>K\u00f6nnen Passwort Manager Anbieter meine Passw\u00f6rter lesen? Wir wollten auf Nummer sichergehen und haben unseren Eigenen entwickelt. Dieser Artikel zeigt auf welche Schritte wir hierf\u00fcr unternehmen mussten.<br>Dabei haben wir unser Frontend mittels Flutter und unser Backend in AWS umgesetzt. Au\u00dferdem gehen wir auf <a href=\"https:\/\/en.wikipedia.org\/wiki\/Infrastructure_as_code\" target=\"_blank\" rel=\"noreferrer noopener\">IaC <\/a>mittels Terraform ein. Am Ende teilen wir unsere Probleme bei der Umsetzung sowie Erweiterungsm\u00f6glichkeiten, welche in Zukunft umgesetzt werden k\u00f6nnten. <br><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Mobile App<\/strong><\/p>\n\n\n\n<p>F\u00fcr die Umsetzung des Frontends haben wir uns f\u00fcr das <a href=\"https:\/\/flutter.dev\/docs\/resources\/architectural-overview\">Flutter<\/a> Framework entschieden. Durch Flutter konnten wir eine gemeinsame Codebasis f\u00fcr alle unsere Zielplattformen (iOS, Android) verwenden. Daher konnten neue Features schnell implementiert und \u00c4nderungen konnten sofort auf unterschiedlichen Ger\u00e4ten getestet werden. Au\u00dferdem wurde durch einen Integrationstest sichergestellt, dass die App auf beiden Plattformen fehlerfrei l\u00e4uft.<\/p>\n\n\n\n<p><br>Die App bietet eine einfache Benutzeroberfl\u00e4che, in welcher folgende Aktionen m\u00f6glich sind:<br><\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Login und Registrierung eines Nutzers<\/li><li>Hinzuf\u00fcgen und L\u00f6schen eines Passworts<\/li><li>\u00c4ndern von Passw\u00f6rtern<\/li><\/ul>\n\n\n\n<p>Diese Funktionen sind in folgenden Benutzeroberfl\u00e4chen abgebildet<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-5 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"473\" height=\"1024\" data-attachment-id=\"21193\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image0-5\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4.png\" data-orig-size=\"1284,2778\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image0\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Login&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-473x1024.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-473x1024.png\" alt=\"\" data-id=\"21193\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21193\" class=\"wp-image-21193\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-473x1024.png 473w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-139x300.png 139w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-768x1662.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-710x1536.png 710w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4-947x2048.png 947w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-4.png 1284w\" sizes=\"auto, (max-width: 473px) 100vw, 473px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"321\" height=\"695\" data-attachment-id=\"21188\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image0-4\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-3.png\" data-orig-size=\"321,695\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image0\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Passwort Liste &amp;#8211; White Mode&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-3.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-3.png\" alt=\"\" data-id=\"21188\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-3.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21188\" class=\"wp-image-21188\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-3.png 321w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image0-3-139x300.png 139w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"321\" height=\"695\" data-attachment-id=\"21190\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image2-6\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image2.png\" data-orig-size=\"321,695\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image2\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Passwort Liste &amp;#8211; Dark Mode&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image2.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image2.png\" alt=\"\" data-id=\"21190\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image2.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21190\" class=\"wp-image-21190\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image2.png 321w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image2-139x300.png 139w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"321\" height=\"695\" data-attachment-id=\"21192\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image3-4\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image3.png\" data-orig-size=\"321,695\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image3\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Password hinzuf\u00fcgen&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image3.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image3.png\" alt=\"\" data-id=\"21192\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image3.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21192\" class=\"wp-image-21192\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image3.png 321w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image3-139x300.png 139w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image4.png\"><img loading=\"lazy\" decoding=\"async\" width=\"321\" height=\"695\" data-attachment-id=\"21191\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image4-3\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image4.png\" data-orig-size=\"321,695\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image4\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Password \u00e4ndern&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image4.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image4.png\" alt=\"\" data-id=\"21191\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image4.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21191\" class=\"wp-image-21191\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image4.png 321w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image4-139x300.png 139w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p>Die Oberfl\u00e4che ist auf Android und iOS identisch.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Architektur<\/strong><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"21197\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image-1-5\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-1.png\" data-orig-size=\"516,650\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-1.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-1.png\" alt=\"\" class=\"wp-image-21197\" width=\"368\" height=\"464\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-1.png 516w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-1-238x300.png 238w\" sizes=\"auto, (max-width: 368px) 100vw, 368px\" \/><\/a><\/figure><\/div>\n\n\n\n<p>Grundlegend ist unsere Architektur in Frontend und Backend aufgeteilt. Dabei wird, wie bereits erw\u00e4hnt das Frontend mit Flutter umgesetzt und das Backend \u00fcber die AWS-Cloud realisiert.<br>Alle Anfragen an das Backend werden mit HTTP-Requests an das API-Gateway-Service gesendet.<br>Die Anfragen der Nutzer m\u00fcssen einen validen JWT (JSON Web Token) enthalten.<br>Diesen Session Token bekommt der Nutzer bei erfolgreichem Log-in \u00fcber den Cognito-Service.<br>Durch den Token kann in den Lambda Funktionen sichergestellt werden, das Nutzer nur Daten \u00e4ndern k\u00f6nnen, f\u00fcr die Sie eine Berechtigung haben.<br>Die Lambda Funktionen evaluieren die Anfragen und \u00c4ndern die Passwortdaten im DynamoDB-Service.<br>Alle Passwortdaten, welche an das Backend \u00fcbertragen werden, sind bereits lokal vom Client verschl\u00fcsselt worden, um Missbrauch zu verhindern.<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>AWS Services<\/strong><\/p>\n\n\n\n<p>Da wir dieses Semester bereits in einem anderen Studienfach Erfahrung mit AWS in Verbindung mit IoT sammeln konnten, war AWS unsere erste Wahl. Au\u00dferdem waren wir uns am Anfang des Projektes sicher, das AWS alle unsere Anforderungen erf\u00fcllt. <\/p>\n\n\n\n<p><strong>DynamoDB<\/strong><br>AWS DynamoDB ist ein vollst\u00e4ndig verwalteter NoSQL-Datenbankservice. Dort werden alle Passwortdaten gespeichert.<br>Um schnelle Query Anfragen zu erm\u00f6glichen, ist unsere Tabelle in folgende Felder aufgeteilt:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Partitionsschl\u00fcssel: User_Id (Eine eindeutige ID f\u00fcr jeden Nutzer)<\/li><li>Sortierschl\u00fcssel: PasswordName<\/li><li>Passwort (in verschl\u00fcsselter Form)<\/li><li>Beschreibung<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"276\" data-attachment-id=\"21223\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image-2-6\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2.png\" data-orig-size=\"1248,336\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2-1024x276.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2-1024x276.png\" alt=\"\" class=\"wp-image-21223\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2-1024x276.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2-300x81.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2-768x207.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-2.png 1248w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><strong>API-Gateway<\/strong><\/p>\n\n\n\n<p>Um HTTP-Anfragen an unsere Lambda Funktionen weiterzuleiten, nutzen wir den API-Gateway-Service. Dieser validiert Nutzeranfragen auf erforderliche Parameter und lehnt bei fehlenden Daten die Anfrage ab. Au\u00dferdem wird hier der Token mithilfe von Cognito gepr\u00fcft.<br>Wir nutzen 3 verschiedene HTTP-Methoden, um unsere Client-Anfragen zu bearbeiten. Zudem sind alle Methoden \u00fcber einen API-Key gesichert.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"189\" data-attachment-id=\"21227\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image-3-6\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3.png\" data-orig-size=\"1280,236\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3-1024x189.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3-1024x189.png\" alt=\"\" class=\"wp-image-21227\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3-1024x189.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3-300x55.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3-768x142.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-3.png 1280w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<ul class=\"wp-block-list\"><li>Die DELETE Methode l\u00f6scht ein Password von einem Nutzer.<\/li><li>Die GET Methode gibt alle Passw\u00f6rter eines Nutzers zur\u00fcck.<\/li><li>Die PUT Methode erstellt oder \u00fcberschreibt ein Passwort.<br><\/li><\/ul>\n\n\n\n<p><strong>Lambda<\/strong><br>Innerhalb jeder unserer Lambda Funktionen haben wir Zugriff auf den Cognito Authorizer. Dieser bietet uns die M\u00f6glichkeit, direkt auf die Daten (User_Id, Username etc.) des Nutzers zuzugreifen, welcher den Request geschickt hat.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-4.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"21278\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image-4-5\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-4.png\" data-orig-size=\"599,716\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-4\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-4.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-4.png\" alt=\"\" class=\"wp-image-21278\" width=\"449\" height=\"537\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-4.png 599w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-4-251x300.png 251w\" sizes=\"auto, (max-width: 449px) 100vw, 449px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>PUT Methode:<\/strong><\/p>\n\n\n\n<p>In der PUT Methode werden neue Passw\u00f6rter gespeichert oder schon vorhandene \u00fcberschrieben.<\/p>\n\n\n\n<p>Durch das in API-Gateway angelegte JSON-Schema k\u00f6nnen wir pr\u00fcfen, ob der HTTP-Body die erforderlichen Parameter enth\u00e4lt. <br>Trotzdem kann es sein, dass vom Nutzer ein leerer String (&#8220;&#8221;) geschickt wird.<br>Dies ist der erste Validierungsschritt, welcher in der Lambda Funktion ausgef\u00fchrt wird.<\/p>\n\n\n\n<p><br>Mithilfe der User_Id und der Passwortdaten k\u00f6nnen wir nun einen neuen Eintrag in DynamoDB erstellen.<br>Falls der Passwortname bereits in der Datenbank steht, wird das Passwort \u00fcberschrieben.<\/p>\n\n\n\n<p><br><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-5.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"21280\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image-5-4\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-5.png\" data-orig-size=\"537,712\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-5\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-5.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-5.png\" alt=\"\" class=\"wp-image-21280\" width=\"443\" height=\"587\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-5.png 537w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-5-226x300.png 226w\" sizes=\"auto, (max-width: 443px) 100vw, 443px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>GET Methode:<\/strong><\/p>\n\n\n\n<p>Die GET Methode liefert alle Passw\u00f6rter eines Nutzers zur\u00fcck.<\/p>\n\n\n\n<p>Durch die User_Id k\u00f6nnen wir an DynamoDB eine Query schicken, welche uns alle Daten von einem einzigen Nutzer zur\u00fcckliefert.<br>Dadurch wird sichergestellt, dass ein Nutzer nur auf seine eigenen Passwortdaten zugriff hat.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-full is-resized\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-6.png\"><img loading=\"lazy\" decoding=\"async\" data-attachment-id=\"21281\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image-6-3\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-6.png\" data-orig-size=\"541,712\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-6\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-6.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-6.png\" alt=\"\" class=\"wp-image-21281\" width=\"440\" height=\"579\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-6.png 541w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-6-228x300.png 228w\" sizes=\"auto, (max-width: 440px) 100vw, 440px\" \/><\/a><\/figure><\/div>\n\n\n\n<p><\/p>\n\n\n\n<p><strong>DELETE Methode:<\/strong><\/p>\n\n\n\n<p>Die DETELE Methode l\u00f6scht ein Passwort eines Nutzers.<\/p>\n\n\n\n<p>Auch f\u00fcr diese Methode existiert in API-Gateway ein JSON-Schema, welches den Body validiert.<\/p>\n\n\n\n<p>Mithilfe des Authorizers und des Passwortnamens k\u00f6nnen wir nun f\u00fcr diesen Nutzer das Passwort l\u00f6schen. Daf\u00fcr m\u00fcssen wir den Partitionsschl\u00fcssel (User_Id) und den Sortierschl\u00fcssel (PasswordName) angeben und diese Anfrage an DynamoDB senden.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><br><strong>Verschl\u00fcsselung<\/strong><\/p>\n\n\n\n<p>Um sicherzustellen, dass alle Passw\u00f6rter sicher sind und nur von dem Nutzer gelesen werden k\u00f6nnen, welcher die Passw\u00f6rter auch angelegt hat, nutzen wir lokale Verschl\u00fcsselung.<br>Damit der Nutzer die App auf mehreren Ger\u00e4ten gleichzeitig verwenden kann, muss es gemeinsamen Schl\u00fcssel geben.<br><br>Dieser Schl\u00fcssel basiert bei uns auf dem Login-Passwort. Dieser Schl\u00fcssel wird bei erfolgreichem Einloggen auf dem Ger\u00e4t in einem sicheren Bereich gespeichert.<\/p>\n\n\n\n<p>Bei iOS wird der <a href=\"https:\/\/developer.apple.com\/documentation\/security\/keychain_services#\/\/apple_ref\/doc\/uid\/TP30000897-CH203-TP1\" title=\"https:\/\/developer.apple.com\/documentation\/security\/keychain_services#\/\/apple_ref\/doc\/uid\/TP30000897-CH203-TP1\">&#8220;Keychain Service&#8221;<\/a> und bei Android das <a href=\"https:\/\/developer.android.com\/training\/articles\/keystore\">&#8220;Android keystore system&#8221;<\/a> genutzt. Das Login-Passwort wird zuvor zu einem Hash konvertiert.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-7.png\"><img loading=\"lazy\" decoding=\"async\" width=\"720\" height=\"170\" data-attachment-id=\"21282\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/image-7-3\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-7.png\" data-orig-size=\"720,170\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-7\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-7.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-7.png\" alt=\"\" class=\"wp-image-21282\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-7.png 720w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/image-7-300x71.png 300w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/a><\/figure>\n\n\n\n<p>Beim Ver- und Entschl\u00fcsseln wird ein AES Algorithmus verwendet. Die verschl\u00fcsselten Bytes m\u00fcssen danach nur noch zu einem String encodiert werden, damit man das Passwort leichter zu einem JSON serialisieren kann.<\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-2 wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"712\" height=\"263\" data-attachment-id=\"21285\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/bild1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild1.png\" data-orig-size=\"712,263\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bild1\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild1.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild1.png\" alt=\"\" data-id=\"21285\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21285\" class=\"wp-image-21285\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild1.png 712w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild1-300x111.png 300w\" sizes=\"auto, (max-width: 712px) 100vw, 712px\" \/><\/a><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"522\" height=\"290\" data-attachment-id=\"21286\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/bild2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild2.png\" data-orig-size=\"522,290\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bild2\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild2.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild2.png\" alt=\"\" data-id=\"21286\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild2.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21286\" class=\"wp-image-21286\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild2.png 522w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bild2-300x167.png 300w\" sizes=\"auto, (max-width: 522px) 100vw, 522px\" \/><\/a><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><br><strong>Testing in Flutter<\/strong><\/p>\n\n\n\n<p>Um alle Funktionen in Flutter leicht testen zu k\u00f6nnen, haben wir uns f\u00fcr einen Integrationstest entschieden. Damit k\u00f6nnen wir herausfinden, ob alle wichtigen Funktionen richtig funktionieren. Unsere Hauptfunktionen, welche wir getestet haben sind:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>Login eines Nutzers<\/li><li>Hinzuf\u00fcgen und L\u00f6schen eines Passworts<\/li><li>\u00c4ndern von Passw\u00f6rtern<\/li><li>Ver- und Entschl\u00fcsselung<\/li><\/ul>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bildschirmfoto-2021-09-14-um-18.01.28.png\"><img loading=\"lazy\" decoding=\"async\" width=\"549\" height=\"388\" data-attachment-id=\"21289\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/bildschirmfoto-2021-09-14-um-18-01-28\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bildschirmfoto-2021-09-14-um-18.01.28.png\" data-orig-size=\"549,388\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Bildschirmfoto-2021-09-14-um-18.01.28\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bildschirmfoto-2021-09-14-um-18.01.28.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bildschirmfoto-2021-09-14-um-18.01.28.png\" alt=\"\" class=\"wp-image-21289\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bildschirmfoto-2021-09-14-um-18.01.28.png 549w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Bildschirmfoto-2021-09-14-um-18.01.28-300x212.png 300w\" sizes=\"auto, (max-width: 549px) 100vw, 549px\" \/><\/a><figcaption>Die Login Prozedur pr\u00fcft ob die App die richtigen Daten anzeigt, sobald der Nutzer eingeloggt wurde.  <\/figcaption><\/figure>\n\n\n\n<p class=\"has-medium-font-size\"><br><strong>Terraform<\/strong><\/p>\n\n\n\n<p>Wir haben in unserem Projekt Terraform eingesetzt. In unser Ziel war es hierbei, das jeder einfach dieses Projekt bei sich zu Hause nachbilden kann. Dadurch war es aber auch m\u00f6glich, schnell den AWS Account oder die Region zu \u00e4ndern und s\u00e4mtliche Infrastruktur \u00c4nderungen zu versionieren. <\/p>\n\n\n\n<figure class=\"wp-block-gallery alignright columns-2 wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/main_tf.png\"><img loading=\"lazy\" decoding=\"async\" width=\"254\" height=\"300\" data-attachment-id=\"21317\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/main_tf\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/main_tf.png\" data-orig-size=\"698,823\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"main_tf\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;main.tf&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/main_tf.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/main_tf-254x300.png\" alt=\"\" data-id=\"21317\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/main_tf.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21317\" class=\"wp-image-21317\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/main_tf-254x300.png 254w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/main_tf.png 698w\" sizes=\"auto, (max-width: 254px) 100vw, 254px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">main.tf<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/var-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"240\" data-attachment-id=\"21324\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/var-1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/var-1.png\" data-orig-size=\"335,268\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"var-1\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;variables.tf&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/var-1.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/var-1-300x240.png\" alt=\"\" data-id=\"21324\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/var-1.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21324\" class=\"wp-image-21324\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/var-1-300x240.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/var-1.png 335w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">variables.tf<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/dynamodb.png\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"264\" data-attachment-id=\"21320\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/dynamodb\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/dynamodb.png\" data-orig-size=\"599,528\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"dynamodb\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;dynamodb.tf&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/dynamodb.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/dynamodb-300x264.png\" alt=\"\" data-id=\"21320\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/dynamodb.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21320\" class=\"wp-image-21320\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/dynamodb-300x264.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/dynamodb.png 599w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">dynamodb.tf<\/figcaption><\/figure><\/li><\/ul><\/figure>\n\n\n\n<p><strong>Main und Cognito<\/strong><\/p>\n\n\n\n<p>Grunds\u00e4tzlich haben wir unseren Terraform Code in mehrere Files aufgeteilt. Dabei werden in der main.tf vor allem die Standard Terraform Parameter gesetzt und zus\u00e4tzlich wird hier noch der Cognito Service aufgesetzt.<\/p>\n\n\n\n<p><strong>Variablen<\/strong><br><br>Im variable.tf File werden f\u00fcr Terraform die AWS AccountID und die Region festgelegt. Diese Daten werden von Terraform ben\u00f6tigt, um die richtigen Account und Region f\u00fcr die Cloud Infrastruktur zu finden.<\/p>\n\n\n\n<p><strong>DynamoDB<\/strong><br><br>Dienst und die Tabellen dem dynamodb.tf File werden, wie zu erwarten, alle DynamoDB Einstellungen \u00fcbernommen. Hier wird also der AWS Dienst und die Tabellen Felder angelegt.<\/p>\n\n\n\n<figure class=\"wp-block-gallery aligncenter columns-3 is-cropped wp-block-gallery-4 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"751\" height=\"463\" data-attachment-id=\"21327\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/api1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api1.png\" data-orig-size=\"751,463\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"API Service\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;API Gateway in Terraform&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api1.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api1.png\" alt=\"\" data-id=\"21327\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api1.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21327\" class=\"wp-image-21327\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api1.png 751w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api1-300x185.png 300w\" sizes=\"auto, (max-width: 751px) 100vw, 751px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">API Gateway in Terraform<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"826\" height=\"882\" data-attachment-id=\"21328\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/api2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2.png\" data-orig-size=\"826,882\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"API Methoden\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Methoden f\u00fcr API Gateway in Terraform&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2.png\" alt=\"\" data-id=\"21328\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21328\" class=\"wp-image-21328\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2.png 826w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2-281x300.png 281w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api2-768x820.png 768w\" sizes=\"auto, (max-width: 826px) 100vw, 826px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">Methoden f\u00fcr API Gateway in Terraform<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung.png\"><img loading=\"lazy\" decoding=\"async\" width=\"853\" height=\"711\" data-attachment-id=\"21336\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/api_lambda-verbindung\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung.png\" data-orig-size=\"853,711\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"api_lambda-verbindung\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Lambda API Verbindung&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung.png\" alt=\"\" data-id=\"21336\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21336\" class=\"wp-image-21336\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung.png 853w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung-300x250.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_lambda-verbindung-768x640.png 768w\" sizes=\"auto, (max-width: 853px) 100vw, 853px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">Lambda API Verbindung<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response.png\"><img loading=\"lazy\" decoding=\"async\" width=\"855\" height=\"680\" data-attachment-id=\"21340\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/api_response\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response.png\" data-orig-size=\"855,680\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"api_response\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;API Methode Response&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response.png\" alt=\"\" data-id=\"21340\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21340\" class=\"wp-image-21340\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response.png 855w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response-300x239.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_response-768x611.png 768w\" sizes=\"auto, (max-width: 855px) 100vw, 855px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">API Methode Response<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy.png\"><img loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"1024\" data-attachment-id=\"21342\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/api_deploy\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy.png\" data-orig-size=\"635,1040\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"API Deployment\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;API Deployment in AWS&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy-625x1024.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy-625x1024.png\" alt=\"\" data-id=\"21342\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21342\" class=\"wp-image-21342\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy-625x1024.png 625w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy-183x300.png 183w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_deploy.png 635w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">API Deployment in AWS<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"918\" data-attachment-id=\"21343\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/api_models_and_auth\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth.png\" data-orig-size=\"1069,958\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"api_models_and_auth\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;API Models und Authorizer&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth-1024x918.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth-1024x918.png\" alt=\"\" data-id=\"21343\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21343\" class=\"wp-image-21343\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth-1024x918.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth-300x269.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth-768x688.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/api_models_and_auth.png 1069w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">API Models und Authorizer<\/figcaption><\/figure><\/li><\/ul><figcaption class=\"blocks-gallery-caption\">API Gateway Terraform  Code<\/figcaption><\/figure>\n\n\n\n<p><strong>API Gateway<\/strong><br><br>Im api.tf wird zun\u00e4chst der normale AWS API Gateway Dienst eingestellt. Danach werden die Methoden der API definiert. F\u00fcr jede Methode muss zudem angegeben werden welche Lambda Funktion ausgef\u00fchrt werden soll, zus\u00e4tzlich kann hier ein Template f\u00fcr die Request hinzugef\u00fcgt werden. Dadurch wird unter anderem auch der Lambda Code vereinfacht. Jetzt wo in den Methoden alles Wichtige eingestellt ist, wird im tf File die Response erstellt.<br>Als N\u00e4chstes wird in Terraform definiert, wie die API bereitgestellt wird. Dadurch spart der Entwickler die Zeit sp\u00e4ter in AWS API Gateway den Deploy Butten von Hand zu dr\u00fccken. Am Ende vom api.tf File wird noch f\u00fcr jede API Methode ein Model \/ Schema f\u00fcr die JSON Daten angeben. Das hat den Vorteil das Request an die API, ohne diese ben\u00f6tigten Daten, automatisch abgelehnt werden. Und zum Schluss wird noch der Authorizer von Cognito f\u00fcr die API richtig eingerichtet.<\/p>\n\n\n\n<p> <br><\/p>\n\n\n\n<figure class=\"wp-block-gallery columns-3 is-cropped wp-block-gallery-5 is-layout-flex wp-block-gallery-is-layout-flex\"><ul class=\"blocks-gallery-grid\"><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"912\" height=\"829\" data-attachment-id=\"21349\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/lambda1\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1.png\" data-orig-size=\"912,829\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Lambda Funktion\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Lambda in Terraform&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1.png\" alt=\"\" data-id=\"21349\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21349\" class=\"wp-image-21349\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1.png 912w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1-300x273.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda1-768x698.png 768w\" sizes=\"auto, (max-width: 912px) 100vw, 912px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">Lambda in Terraform<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"625\" height=\"1024\" data-attachment-id=\"21350\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/lambda2\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2.png\" data-orig-size=\"711,1165\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"Lambda Policy\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Policy f\u00fcr Lambda&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2-625x1024.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2-625x1024.png\" alt=\"\" data-id=\"21350\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21350\" class=\"wp-image-21350\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2-625x1024.png 625w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2-183x300.png 183w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda2.png 711w\" sizes=\"auto, (max-width: 625px) 100vw, 625px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">Policy f\u00fcr Lambda<\/figcaption><\/figure><\/li><li class=\"blocks-gallery-item\"><figure><a href=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"723\" data-attachment-id=\"21351\" data-permalink=\"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/15\/cloud-basierter-password-manager\/lambda-permissions\/\" data-orig-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions.png\" data-orig-size=\"1125,794\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"lambda-permissions\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Permissions f\u00fcr Lambda&lt;\/p&gt;\n\" data-large-file=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions-1024x723.png\" src=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions-1024x723.png\" alt=\"\" data-id=\"21351\" data-full-url=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions.png\" data-link=\"https:\/\/blog.mi.hdm-stuttgart.de\/?attachment_id=21351\" class=\"wp-image-21351\" srcset=\"https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions-1024x723.png 1024w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions-300x212.png 300w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions-768x542.png 768w, https:\/\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/lambda-permissions.png 1125w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"blocks-gallery-item__caption\">Permissions f\u00fcr Lambda<\/figcaption><\/figure><\/li><\/ul><figcaption class=\"blocks-gallery-caption\">AWS Lambda Terraform Code<\/figcaption><\/figure>\n\n\n\n<p><strong>Lambda<\/strong><br><br>Alle Lambda Funktionen m\u00fcssen lokal gespeichert sein. Im lambda.tf File wird dann der Pfad zur Funktion definiert, beim Ausf\u00fchren von Terraform wird dann ein zip File von jeder Funktion erstellt und in AWS Lambda hochgeladen.<br>Danach wird werden noch die Policies f\u00fcr das Logging mit Cloudwatch und die Access Rechte f\u00fcr DynamoDB geben.<br>Am Ende werden noch Permissions f\u00fcr API Gateway und Cognito an die richtigen Lambda Funktionen verteilt.<br><\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Probleme<\/strong><\/p>\n\n\n\n<p>Jedes Projekt hat seine Probleme, so auch unseres. Direkt am Anfang hatten wir viel mit AWS zu k\u00e4mpfen, den wenn man f\u00fcr die Cloud entwickelt ist Debugging nicht mehr so einfach wie in einer IDE. Man kann dadurch kaum mehr nachvollziehen, was das AWS Setup oder der Lambda Code macht. Am Ende konnten wir das Problem \u00fcber den Service Cloudwatch l\u00f6sen. Hier werden alle Aktion geloggt, dadurch k\u00f6nnen Fehler schnell gefunden und gel\u00f6st werden.<\/p>\n\n\n\n<p>Weitere Schwierigkeiten sind beim Arbeiten mit Terraform aufgetaucht. So sollte Terraform eigentlich von alleine alle Dienste in der richtigen Reihenfolge anlegen. Leider geht dies oft schief, und wir mussten im Terraform File von Hand mittels depens_on, die Reihenfolge einstellen. Ein weiteres Problem war, dass AWS beim Erstellen von Services viele Optionen im Hintergrund von alleine einstellt. Sp\u00e4ter mit Terraform raus zu finden, welche Einstellungen man jetzt genau braucht, war nur \u00fcber das ausf\u00fchrliche Lesen der Dokumentation m\u00f6glich.<\/p>\n\n\n\n<p>Beim Arbeiten mit den AWS Dienst Cognito hatten wir Schwierigkeiten mit dem Best\u00e4tigen eines Nutzers. Denn Cognito legt zwar alleine alle Nutzer an, aber die Best\u00e4tigung des Accounts muss man von Hand gemacht werden. Jedoch konnten wir dieses Problem schnell \u00fcber eine eigene Lambda Funktion l\u00f6sen, welche automatisch jeden Nutzer verifiziert.<\/p>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Erweiterungen<\/strong><\/p>\n\n\n\n<p>Das Projekt wurde von Anfang an mit dem Zeitlimit eines Semesters geplant. Jedoch k\u00f6nnte man mit weiterem zeitlichen Investment noch viele wichtige Features umsetzen:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>So funktioniert Flutter auch im Web, leider haben wir innerhalb des Codes viele Abh\u00e4ngigkeiten zu iOS \/ Android. Jedoch w\u00e4re der Aufwand, die App auch als Web App laufen zu lassen, \u00fcberschaubar.<\/li><li>Momentan sind die Passw\u00f6rter in der Detailansicht noch sichtbar, in Zukunft sollte man diese verbergen und ein Kopierbutton hinzuf\u00fcgen. So k\u00f6nnte man die Passw\u00f6rter noch besser sch\u00fctzen.<\/li><li>Zudem k\u00f6nnte man Power-Usern das Leben vereinfachen, in dem man eine Passwortsuche einbauen w\u00fcrde, so k\u00f6nnten Nutzer aus einem Berg von Passw\u00f6rtern schnell das Richtige finden.<\/li><li>Ein weiter Feature w\u00e4re das \u00c4ndern des Masterpassworts, hier w\u00e4re aber der Aufwand sehr gro\u00df. Da jedes Passwort des Nutzers in der Datenbank mittels des Masterpassworts verschl\u00fcsselt ist, m\u00fcsste jedes Passwort neu verschl\u00fcsselt werden.<\/li><\/ul>\n\n\n\n<p class=\"has-medium-font-size\"><strong>Lessons Learned<\/strong><\/p>\n\n\n\n<p>Wie im Projekt bereits zu erkennen ist, haben wir viel Erfahrung mit den AWS Diensten: IAM, Cognito, Lambda, API Gateway, Cloudwatch und DynamoDB, sammeln k\u00f6nnen. Dank Terraform ist uns auch das Konzept der IaC (Infrastructure as Code) jetzt viel greifbarer geworden, zus\u00e4tzlich hat uns Terraform fast schon gezwungen, von jedem benutztem AWS Service, die wichtigste Einstellung zu kennen. Au\u00dferdem konnten wir erste Kenntnisse in der App Entwicklung sammeln. Zuletzt haben wir unser Wissen im Bereich Testing um das Thema Integrations Tests erweitert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>von Benjamin Schweizer (bs103) und Max Eichinger (me110) Abstract K\u00f6nnen Passwort Manager Anbieter meine Passw\u00f6rter lesen? Wir wollten auf Nummer sichergehen und haben unseren Eigenen entwickelt. Dieser Artikel zeigt auf welche Schritte wir hierf\u00fcr unternehmen mussten.Dabei haben wir unser Frontend mittels Flutter und unser Backend in AWS umgesetzt. Au\u00dferdem gehen wir auf IaC mittels Terraform [&hellip;]<\/p>\n","protected":false},"author":1051,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[120,656,650],"tags":[524,147,84,295,83,7,522,521,523,282,514],"ppma_author":[857],"class_list":["post-21163","post","type-post","status-publish","format-standard","hentry","category-cloud-technologies","category-databases","category-scalable-systems","tag-aes","tag-android","tag-aws","tag-aws-gateway-api","tag-aws-lambda","tag-cloud","tag-cognito","tag-dynamodb","tag-flutter","tag-ios","tag-terraform"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack-related-posts":[{"id":23679,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2022\/08\/31\/jobsuche-portal\/","url_meta":{"origin":21163,"position":0},"title":"Jobsuche Portal","author":"ag164","date":"31. August 2022","format":false,"excerpt":"SS22 - Dev4Cloud Projekt - von Robin H\u00e4rle und Anton Gerdts Ideenfindung \u00a0\u00a0\u00a0 Zu Beginn der Ideenfindungsphase f\u00fcr unser Projekt sahen wir uns die verschiedenen Apis auf Bund.dev an, um uns von der Thematik der verf\u00fcgbaren Daten inspirieren zu lassen. Wir entschieden uns ohne lange abzuw\u00e4gen daf\u00fcr ein Jobsuche-Portal mit\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":25800,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2023\/09\/14\/splid-2-0-die-zukunft-des-gemeinsamen-ausgabenmanagements\/","url_meta":{"origin":21163,"position":1},"title":"Splid 2.0 &#8211; Die Zukunft des gemeinsamen Ausgabenmanagements","author":"David Christoph Scheifers","date":"14. September 2023","format":false,"excerpt":"Im Rahmen der Vorlesung \u201cSoftware Development for Cloud Computing\u201d haben wir uns daf\u00fcr entschieden, einen Klon der App Splid auf Basis unterschiedlicher Cloud Technologien als Web App zu entwickeln, um uns so die Grundkenntnisse des Cloud Computings anzueignen. Projektidee Bei gemeinsamen Aktivit\u00e4ten und Gruppenausgaben ist es sehr hilfreich, einfache und\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2023\/09\/image6.jpg?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":28021,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/09\/13\/multiplayer-web-game-mit-aws-schiffe-versenken\/","url_meta":{"origin":21163,"position":2},"title":"Multiplayer Web-Game mit AWS | Schiffe versenken","author":"Leon Obertopp","date":"13. September 2025","format":false,"excerpt":"Projektidee: Im Rahmen der Vorlesung \"Software Development for Cloud Computing\" sollen die Studierenden in Gruppen ein eigenes Projekt, mit Hilfe von in der Vorlesung gezeigten Cloud Technologien umsetzen. Wir hatten Anfangs Probleme ein geeignetes Thema zu finden, da unser Wissenstand im Thema Cloud nicht besonders gro\u00df war. Letztendlich haben wir\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image-4.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image-4.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image-4.png?resize=525%2C300&ssl=1 1.5x"},"classes":[]},{"id":21683,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2021\/09\/18\/ynstagram-cloud-computing-mit-aws-serverless\/","url_meta":{"origin":21163,"position":3},"title":"Ynstagram &#8211; Cloud Computing mit AWS &amp; Serverless","author":"ns144","date":"18. September 2021","format":false,"excerpt":"Im Rahmen der Vorlesung \u201cSoftware Development for Cloud Computing\u201d haben wir uns hinsichtlich des dortigen Semesterprojektes zum Ziel gesetzt einen einfachen Instagram Klon zu entwerfen um uns die Grundkenntnisse des Cloud Computings anzueignen. Grundkonzeption \/ Ziele des Projektes Da wir bereits einige Erfahrung mit React aufgrund anderer studentischer Projekte sammeln\u2026","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=1050%2C600&ssl=1 3x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2021\/09\/Prasentation_CC_01.png?resize=1400%2C800&ssl=1 4x"},"classes":[]},{"id":28011,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2025\/09\/11\/cloud-native-security-scanner\/","url_meta":{"origin":21163,"position":4},"title":"Cloud-native Security Scanner","author":"Tim Ruff","date":"11. September 2025","format":false,"excerpt":"Dieses Projekt wurde im Rahmen der Vorlesung \u201eSoftware Development for Cloud Computing\u201c umgesetzt. Ausgangslage und Projektidee Unser bisheriger Fokus im Studium lag haupts\u00e4chlich auf Themen der IT-Security und Machine Learning, weshalb wir beide bis auf die grundlegenden Vorlesungen zum Thema Software Entwicklung kaum Erfahrungen in diesem Bereich gesammelt haben. Aus\u2026","rel":"","context":"In &quot;Allgemein&quot;","block_context":{"text":"Allgemein","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/allgemein\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=350%2C200&ssl=1","width":350,"height":200,"srcset":"https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=350%2C200&ssl=1 1x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=525%2C300&ssl=1 1.5x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=700%2C400&ssl=1 2x, https:\/\/i0.wp.com\/blog.mi.hdm-stuttgart.de\/wp-content\/uploads\/2025\/09\/image.jpeg?resize=1050%2C600&ssl=1 3x"},"classes":[]},{"id":12032,"url":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/2020\/09\/30\/admin-panel-web-app-in-der-aws-cloud\/","url_meta":{"origin":21163,"position":5},"title":"Admin Panel (Web App) in der AWS Cloud","author":"ss447","date":"30. September 2020","format":false,"excerpt":"1. Einleitung Im Rahmen der Vorlesung \u201eSoftware Development for Cloud Computing\u201c haben wir uns als Gruppe dazu entschieden aufbauend auf teilweise bereits vorhandener Codebasis an einem Startup-Projekt weiterzuarbeiten. Der Hauptfokus lag bei uns auf dem Ausbau von DevOps-Aspekten und auf dem eines stabilen und sicheren Systems, welches auch in der\u2026","rel":"","context":"In &quot;Cloud Technologies&quot;","block_context":{"text":"Cloud Technologies","link":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/category\/scalable-systems\/cloud-technologies\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/img.youtube.com\/vi\/qw9ZkWnvR4M\/0.jpg?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_sharing_enabled":true,"authors":[{"term_id":857,"user_id":1051,"is_guest":0,"slug":"bs103","display_name":"bs103","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/8c739a1c1834a6c3f490079209d74208f77dae2cedb055899ef25a3747dc6956?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/21163","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/users\/1051"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/comments?post=21163"}],"version-history":[{"count":49,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/21163\/revisions"}],"predecessor-version":[{"id":23398,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/posts\/21163\/revisions\/23398"}],"wp:attachment":[{"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/media?parent=21163"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/categories?post=21163"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/tags?post=21163"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blog.mi.hdm-stuttgart.de\/index.php\/wp-json\/wp\/v2\/ppma_author?post=21163"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}