So erzeugen und verwenden Sie Anwendungsinformationen über CLI auf CODE-DE

Sie können Ihre Anwendungen bei OpenStack keystone authentifizieren, indem Sie Anwendungsberechtigungen dafür erstellen. Sie können auch einzelne Rollen für ein Projekt auswählen und die entsprechenden Berechtigung zuweisen. Mit Application Credentials authentifizieren sich Apps mit der „Application Credential ID“ und einem „geheimen“ String, der nicht das Passwort des Benutzers ist. Dadurch wird das Kennwort des Benutzers nicht in die Konfiguration der Anwendung eingebettet, was besonders für Benutzer wichtig ist, deren Identitäten von einem externen System wie LDAP oder einem Single-Sign-On-System verwaltet werden.

Voraussetzungen

Nr. 1 Konto

Sie benötigen ein CODE-DE Konto mit Horizon-Schnittstelle https://cloud.fra1-1.cloudferro.com/auth/login/?next=/.

Nr. 2 Installation des OpenStack Client für Linux

Wie installiert man den OpenStackClient (Linux)?.

Nr. 3 Installation von OpenStack Client auf Windows

So installieren Sie den OpenStackClient (Windows) unter Verwendung von GitBash/Cygwin

Step 1 Zugriff auf Ihr Cloud-Projekt mit OpenStackClient

Unter Voraussetzungen Nr 2. oder 3. müssen Sie zuerst

  • Python installieren, dann seine

  • virtuelle Umgebung und schließlich

  • den Befehl source cloudXXX_openrc.sh verwenden, um den Zugriff auf Ihr Cloud-Projekt über openstack zu aktivieren. Zusammengefasst sehen diese Befehle wie folgt aus:

cd /Users/duskosavic/CloudFerroDocs
source bin/activate
source ./cloud_00341_1-openrc7.sh

wobei CloudFerroDocs der Ordner ist, in dem Python installiert ist, source bin/activate eine virtuelle Python-Umgebung aktiviert und der letzte Befehl alle erforderlichen Parameter für die Verbindung mit dem Cloud-Projekt cloud_00341_1 einrichtet.

Der dritte Befehl fragt nach einem Kennwort. Das ist das Kennwort, das Sie für den Zugang zur Cloud verwenden. Das kann in bestimmten Fällen äußerst unpraktisch sein, z.B. wenn es Sicherheitsbedenken gibt oder wenn die Identitäten der Nutzer von einem externen System wie LDAP verwaltet werden.

Im Terminal-Fenster sieht das so aus:

../_images/virtual_env.png

Die virtuelle Umgebung heißt hier (py3-sphinx).

Sie müssen diese Befehle zu Beginn jeder Sitzung im Terminal ausführen.

Um zu überprüfen, ob der Zugriff korrekt initialisiert wurde, geben Sie diesen Befehl ein:

openstack flavor list

Es wird eine Liste von Systemvarianten angezeigt:

../_images/flavor_list.png

Sie werden diesen Befehl am Ende dieses Artikels verwenden, um zu überprüfen, ob Sie OpenStack CLI ohne Aktivierung der virtuellen Python-Umgebung und ohne Eingabe des Passworts verwenden können.

Schritt 2 OpenStack CLI-Befehle für Anwendungsinformationen (Application Credentials)

Das Kommando

openstack application credential

listet vier verfügbare Befehle auf:

application credential create
application credential delete
application credential list
application credential show

Um die Parameter für diese Befehle anzuzeigen, fügen Sie –help am Ende hinzu:

openstack application credential create --help

Unter den Dutzenden von Zeilen, in denen alle möglichen Parameter beschrieben werden, sind die Befehle zum Erstellen von neuen Anwendungsinformationen besonders interessant:

../_images/credential_create_help.png

Bemerkung

Die Option –help erzeugt eine vim-ähnliche Ausgabe, geben Sie also q auf der Tastatur ein, um zur normalen Terminalzeile zurückzukehren.

Schritt 3 Der einfachste Weg, neue Anwendungsinformationen zu erstellen

Der einfachste Weg, neue Anwendungsinformationen zu erstellen, besteht darin, nur den Namen festzulegen - die restlichen Parameter werden automatisch für Sie definiert. Der folgende Befehl verwendet den Namen cred2:

openstack application credential create cred2

Die neuen Anwendungsdaten werden erzeugt und auf dem Bildschirm angezeigt:

../_images/create_new_with_name.png

Schritt 4 Verwenden aller Parameter zum Erstellen einer neuen Anwendungsberechtigung

Hier die Bedeutung der entsprechenden Parameter:

–secret

Für die Authentifizierung zu verwendender Geheimschlüssel. Wenn nicht angegeben, wird er automatisch generiert.

–role

Zu autorisierende Rollen. Wenn nichts angegeben wird, werden alle Rollen des aktuellen Benutzers kopiert. Wiederholen Sie diesen Parameter, um eine weitere Rolle anzugeben, die Teil des Credentials werden soll. Folgende Rollen sind verfügbar:

_member_ magnum_user load-balancer_member heat_stack_owner creator k8s_admin

Bemerkung

Die Rolle _member_ ist die elementarste Rolle und sollte immer vorhanden sein. Beachten Sie jedoch, dass sie in einigen Varianten von OpenStack member statt _member_ heißen kann.

–expiration

Legt ein Verfallsdatum fest. Ist es nicht vorhanden, läuft die Anwendungsberechtigung nicht ab. Das Format ist YYYY-mm-ddTHH:MM:SS, zum Beispiel:

--expiration $(date +"%Y-11-%dT%H:%M:%S")

Daraus ergibt sich Datum zusammengesetzt aus dem aktuellen Jahr, dem Monat November und aktuellem Tag/Stunde/Minute/Sekunde. Im gewählten Beispiel:

2022-11-09T13:27:01.000000

Die Parameter –unrestricted bzw. –restricted

In der Grundeinstellung ist es aus Sicherheitsgründen verboten, Anwendungsberechtigungen für die Erstellung weiterer Anwendungsberechtigungen oder Keystone Trusts zu verwenden. Wenn Ihre Anwendung in der Lage sein muss, diese Aktionen durchzuführen, verwenden Sie den Parameter –unrestricted.

Hier ist ein vollständiges Beispiel, das alle verfügbaren Parameter verwendet, um einen neuen Anwendungsnachweis zu erstellen:

openstack application credential create foo-dev-member4  --role _member_   --expiration $(date +"%Y-11-%dT%H:%M:%S") --description "Test application credentials"   --unrestricted   -c id   -c secret   -f json   | jq -r '"application_credential_id: \"" + .id + "\"", "application_credential_secret: \"" + .secret + "\""'

Das Ergebnis ist:

../_images/complete_example.png

Der Name des neuen Anwendungsdatensatzes lautet foo-dev-member4, er wird von der Rolle _member_ verwendet und so weiter. Der Teil des Befehls, der mit | jq -r beginnt, gibt nur die Werte der Anmeldeinformationen id und secret aus, da Sie diese Werte in die Datei clouds.yml eingeben müssen, mit der Sie die Identifikation mit OpenStack CLI aktivieren.

Schritt 5 Eingabe von id und secret in die Datei clouds.yml

Speichern Sie nun die Werte id und secret, die Sie mit dem OpenStack CLI erzeugt haben. Sobald sie gespeichert sind, werden zukünftige openstack-Befehle diese Werte verwenden, um sich bei der Cloud zu authentifizieren, ohne irgendein Passwort zu verwenden.

Speichern Sie id und secret in einer Datei namens clouds.yml. Sie muss sich auf Ihrem lokalen Computer an einem der folgenden drei Orte befinden:

  • Ihrem aktuellen Verzeichnis

  • $HOME/.config/openstack/clouds.yml

  • /etc/openstack/clouds.yml

Es wird die erste gefundene clouds.yml-Datei verwendet. $HOME/.config/openstack/clouds.yml ist die beliebteste, da sie von allen Teilen des Systems aus leicht zugänglich ist.

Bemerkung

Der Inhalt der Datei clouds.yml liegt im Format yaml (kurz für: „yet another markup language“ bzw. „2YAML ain’t markup language“) vor. Üblicherweise ist die Erweiterung von yaml-Inhalten die gleiche Abkürzung yaml. Hier wird stttdessen yml verwendet.

Erstellen wir einen neuen Anwendungsdatensatz namens trial-member_creatornew.

openstack application credential create trial-member_creatornew --unrestricted -c id -c secret   -f json   | jq -r '"application_credential_id: \"" + .id + "\"", "application_credential_secret: \"" + .secret + "\""'

Dies ist das Ergebnis:

../_images/create_credential.png

Erstellen Sie nun die Datei clouds.yml mit einem Editor Ihrer Wahl. Hier verwenden wir nano:

nano $HOME/.config/openstack/clouds.yml

Falls noch nicht vorhanden, erstellt nano diese Datei. Hier ist der Inhalt dieser Datei:

clouds:
  trial-member_creatornew:
        auth_type: "v3applicationcredential"
        auth:
          auth_url: https://keystone.cloudferro.com:5000/v3
          application_credential_id: "a582edb593644106baeaa75fd706feb2"
          application_credential_secret: "mPKQort71xi7Ros7BHb1sG4753wvN_tmJMBd1aRBBGzgFZM7AoUkLWzCutQuh-dAyac86-rkikYqqYaT1_f0hA"

Lassen Sie uns diese Datei Zeile für Zeile zerlegen:

  • clouds: steht im Plural, da es möglich ist, die Parameter von zwei oder mehr Clouds in derselben Datei zu definieren.

  • trial-member_creatornew ist der Name des Anwendungsdatensatzes, der im vorherigen Befehl credential create verwendet wurde.

  • trial-member_creatornew ist die Art der Autorisierungsverbindung (sie ist immer dieselbe)

  • auth definiert den Beginn der **Authentifizierungs-**parameter

  • auth_url die aufzurufende Adresse auf dem OpenStack-Server (sie ist immer dieselbe)

  • application_credential_id der Wert aus dem vorherigen Aufruf des Befehls credential create

  • application_credential_secret der Wert aus dem vorherigen Aufruf des Befehls credential create.

So sollte es im Editor aussehen:

../_images/nano_values.png

Speichern Sie es mit Strg-X, drücken Sie dann Y und Enter.

Schritt 6 Zugriff auf Cloud-Projekte durch Angabe von OS_CLOUD oder –os-cloud

Im vorherigen Schritt haben Sie eine Datei clouds.yml definiert, die mit clouds: beginnt. Die nächste Zeile definiert, auf welche Cloud sich die Parameter beziehen, hier war es trial-member_creatornew. Da die Datei clouds.yml nicht nur eine, sondern mehrere Clouds enthalten kann, ist es notwendig zu unterscheiden, auf welche Cloud Sie sich beziehen. Dafür gibt es einen speziellen Parameter, genannt

  • OS_CLOUD bei Verwendung als Systemparameter oder

  • –os-cloud bei Verwendung von der Befehlszeile.

Sie definieren OS_CLOUD, indem Sie den Wert direkt in der Befehlszeile eingeben:

export OS_CLOUD=trial-member_creatornew
echo $OS_CLOUD

Öffnen Sie ein neues Terminalfenster, führen Sie den obigen Befehl aus und versuchen Sie dann, auf den Server zuzugreifen:

../_images/export_os_cloud.png

Es funktioniert.

Sie können diesen Parameter auch in der Befehlszeile verwenden:

openstack --os-cloud=trial-member_creatornew flavor list

Es funktioniert genauso:

../_images/cli_os_cloud.png

Sie müssen OS_CLOUD einmal beim Öffnen eines neuen Terminalfensters einrichten und können dann den Befehl openstack verwenden, ohne den Parameter –os-cloud neu einzugeben.

Wenn Sie zwei oder mehr Clouds in der Datei clouds.yml definiert haben, dann wäre die Verwendung von –os-cloud in der Befehlszeile flexibler.

In beiden Fällen können Sie auf die Cloud zugreifen, ohne das Kennwort anzugeben, was ja das eigentliche Ziel war.