Zum Inhalt

RDS MySQL Instanz erstellen

Ziele

  • Authentifizierung an der Datenbank mit dynamischen Credentials aus einer IAM Rolle

Hilfsmittel

  • Sollten Sie Probleme haben die Aufgaben zu lösen, finden Sie bei jeder Aufgabe einen ausklappbaren Block, in dem der Lösungsweg beschrieben wird.
  • Versuchen Sie die Aufgaben erst einmal ohne die Lösungshilfen zu bearbeiten.

Aufgabe 1 - IAM Authentifizierung aktivieren

Erstellen Sie eine neue Datenbank oder nutzen Sie eine aktuell laufende. Für die Datenbank sollte "Password and IAM database authentication" aktiviert sein.

Achtung

Die Datenbankinstanz muss mindestens die Größe db.r5.large haben, da sonst die Funkton "Password and IAM database authentication" nicht verfügbar ist.

Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Falls Sie nicht im RDS Bereich sein sollten, navigieren Sie über die Suche dort hin.
  2. Wählen Sie im linken Menü den Eintrag Datenbanken aus.
  3. Orangener Button Datenbank erstellen anklicken.
  4. Im neuen Fenster diese Einstellungen anwenden:

    Datenbank Instanz Einstellungen
    • Type: Amazon Aurora
    • Edition: Amazon Aurora MySQL-Compatible Edition
    • Capacity Type: Provisioned
    • DB cluster identifier: None-labs-mysql-db
    • Master username: Sie können admin verwenden oder auch anpassen, notieren Sie sich den Usernamen.
    • Master password: Vergeben Sie ein Passwort und notieren Sie es sich.
    Beachten - WICHTIG!

    Das Passwort kann nachträglich nicht mehr geändert werden! Wenn Sie das Passwort vergessen, muss die Instanz neu erstellt werden.

    Richtlinien für das Passwort: mindestens 8 Zeichen. Nicht erlaubte Zeichen: / (slash), '(single quote), "(double quote) und @ (at Zeichen)

    • Master password confirm: Tragen Sie das Passwort nochmals ein zur Bestätigung.

    Multi AZ deployment: Don't create an Aurora Replica auswählen.

    • Virtual private cloud (VPC): None-labs-vpc
    • Subnet Groups: Wählen Sie die Subnetz Gruppe None-labs-rds-subnet-group aus.
    • VPC security groups: Wählen Sie die Security Gruppe None-labs-rds-sec-group aus und entfernen Sie die Gruppe default.
    • Wählen Sie: Password and IAM database authentication
  5. Überprüfen Sie nochmals ihre Angaben und bestätigen Sie das Erstellen der Instanz mit einem Klick auf: create database

Aufgabe 2 - IAM Rolle für die EC2 Instanz

Damit die EC2 Instanz Zugriff auf die Datenbank erhält, muss dieser die entsprechende Rolle zugewiesen werden. Wir erstellen dazu zuerst die Policy und mit dieser anschließend die Rolle.

IAM Policy Erstellen

Erstellen Sie eine Policy, die die Authentifizierung via IAM für den Datenbankcluster erlaubt.

Achtung

Der in der IAM Policy referenzierte Nutzer darf nicht der bisher schon vorhandene Datenbank-Administrator sein.

Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Tippen Sie IAM in die Suchleiste am oberen Bildschrimrand und wählen Sie den entsprechenden Menüpunkt aus, um auf die IAM Einstellungsseite zu gelangen.
  2. Klicken Sie am linken Bildschirmrand auf Policies.
  3. Klicken Sie auf Create Policy.
  4. Klicken Sie auf Choose a service.
  5. Suchen Sie nach RDS.
  6. Wählen Sie RDS IAM Authentication.
  7. Klappen Sie unter "Access level" das Permission management aus.
  8. Wählen Sie connect.
  9. Klappen Sie "Resources" aus.
  10. Klicken Sie Add ARN.
  11. Bei region tragen Sie eu-central-1 ein.
  12. Die Db resource id finden Sie im Datenbankcluster im Reiter Configuration.
  13. Bei Db user name tragen Sie einen Namen ein und merken Sie ihn sich. Er sollte nicht dem DB Admin user entsprechen.
  14. Klicken Sie auf Next: Tags
  15. Klicken Sie auf Next: Review
  16. Vergeben Sie einen tollen Namen :)

IAM Rolle Erstellen

Erstellen Sie eine Rolle für den EC2 Zugriff auf RDS mit der zuvor konfigurierten Policy.

Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Tippen Sie IAM in die Suchleiste am oberen Bildschrimrand und wählen Sie den entsprechenden Menüpunkt aus, um auf die IAM Einstellungsseite zu gelangen.
  2. Klicken Sie am linken Bildschirmrand auf Roles.
  3. Klicken Sie auf Create role.
  4. Wählen Sie bei "Trusted entity type" AWS service aus.
  5. Bei "Use case" wählen Sie EC2 aus.
  6. Klicken Sie Next.
  7. Suchen Sie nach ihrer zuvor erstellten Policy und wählen Sie sie aus.
  8. Klicken Sie Next.
  9. Geben Sie einen tollen Namen ein :)
  10. Klicken Sie Create role.

IAM Rolle an EC2 Instanz anfügen

Fügen Sie die gerade erstelle IAM Rolle an die laufende EC2 Instanz None-labs-vscode-instance an.

Lösung (Klicken Sie auf den Pfeil, falls Sie nicht weiterkommen)
  1. Tippen Sie EC2 in die Suchleiste am oberen Bildschrimrand und wählen Sie den entsprechenden Menüpunkt aus, um auf die EC2 Einstellungsseite zu gelangen.
  2. Klicken Sie im Menü am linken Bildschirmrand auf Instances.
  3. Wählen Sie die Instanz None-labs-vscode-instance aus.
  4. Klicken Sie auf Actions Security Modify IAM role.
  5. Wählen Sie die gerade erstellte Rolle aus.
  6. Klicken Sie save.

IAM User in der Datenbank hinterlegen

Verbinden Sie sich auf der VisualStudio Code Instanz zur Datenbank mit dem Datenbank Admin User und führen Sie folgendes SQL Statement aus:

CREATE USER <iam user> IDENTIFIED WITH AWSAuthenticationPlugin AS 'RDS';

Wobei iam user der in der IAM Policy spezifizierte Nutzer ist.

Datenbankzugriff per IAM Rolle

Da die IAM Authentifizierung zwingend per SSL erfolgen muss, brauchen wir noch das entsprechende Zertifikat. Laden Sie es mit folgemdem Befehl herunter:

curl https://truststore.pki.rds.amazonaws.com/ca-central-1/ca-central-1-bundle.pem > ca-central-1-bundle.pem

Wir können uns nun mit der IAM Rolle zu Datenbank verbinden:

  1. Passen Sie im Skript run_rds_iam_auth.sh die Variablen an.
  2. Führen Sie das Skipt aus.

Sie sind jetzt mit der Datenbank per IAM Authentifizierung verbunden 🚀