Identity

API - CLI Identity Credential-Typen

Für den Zugriff via CLI/API bietet OpenStack je nach Implementierung verschiedene Möglichkeiten, welche je nach Anforderung geeigneter sind. Aktuell sind die nachfolgenden Credential-Typen verfügbar.

A) Application Credentials

Keystone Application Credentials ermöglichen es Benutzern, ihre eigenen OpenStack-Anmeldeinformationen zu generieren, die für Anwendungen geeignet sind und sich gegenüber dem Identitätsdienst zu authentifizieren, ohne ihre Hauptanmeldeinformationen offenlegen zu müssen.

Vorteil: Application Credentials können leicht widerrufen oder gewechselt werden, ohne dass die Anwendung unterbrochen wird, oder sie können sogar eine automatische Ablaufzeit haben.

Nachteil: Sie sind and den User-Account gebunden, welcher die Application Credentials erstellt. Wenn ein Mitarbeiter die Firma verlässt, genügt es nicht, den Usaer Account zu deaktivieren. Es müssen auch seine Application Credentials gelöscht werden. Mehr zu Application Credentials siehe create_application_credentials.

B) Local User - Der API Zugriff via Local Keystone Passwort wird nicht unterstützt.

C) Download current user’s session token (NEU) - User, welche OTP (2 Factor - OneTimePassword) aktiviert haben, können jetzt sehr einfach via dem OpenStack© Management Portal (Horizon) den aktuellen User Session Token, welcher für 24 Stunden gültig ist downloaden.

Melden Sie sich hierzu am OpenStack© Management Portal (Horizon) an.

Klicken Sie dann in der oberen rechten Ecke den kleinen Pfeil an und wählen anschliessend Export credentials

../_images/user-session-token1.png

Wählen Sie im nächsten Fenster Current user’s session token und das gewünschte Export Format (YAML oder RC) aus und bestätigen mit Download

../_images/user-session-token2.png

Bemerkung

RC: Exportiert die Bash Umgebungs-Varablen als Source file.

YAML: Wird als yaml-Datei exportiert, die im Verzeichnis ~/.config/openstack abgelegt werden muss und kann anschliessend über die Umgebungsvariable OS_CLOUD oder den CLI parameter –os-cloud verwendet werden

Tipp

Der „Current user’s session token“ ist für 24 Stunden gültig und kann sowohl für die API, das CLI oder auch Terraform verwendet werden. Danach läuft das Token ab und der User kann sich via Horizon ein neues Token holen.

D) Federated user

User, welche OTP nicht aktiviert haben, können zu den beiden Methoden A) und C) auch die Federated user Methode auswählen und werden dann bei einem API / CLI Aufruf nach ihrem Keycloak Passwort gefragt. Terraform unterstützt diese Methode aber nicht.

Bemerkung

Je nach definierter Passwort Policy ist es möglich, dass nicht alle Credential-Typen erlaubt sind. Ist z.B. OTP mandatory, dann ist auch der Credential-Typ D) Federated user aktuell nicht möglich.

Wie erstelle ich Application Credentials

Die Federated Login Credentials eines Users können im Openstack nicht für den Zugriff von einem CLI Tool verwendet werden. Die Lösung für dieses Problem sind Keystone Application Credentials, welche sich der Benutzer nach dem Login im OpenStack Portal erstellen und anschliessend direkt für CLI-Tools verwenden kann.

Application Credentials ermöglichen es Benutzern, ihre eigenen OpenStack-Anmeldeinformationen zu generieren, die für Anwendungen geeignet sind und sich gegenüber dem Identitätsdienst authentifizieren, ohne ihre Hauptanmeldeinformationen offenlegen zu müssen.

Application Credentials können leicht widerrufen oder gewechselt werden, ohne dass die Anwendung unterbrochen wird, oder sie können sogar eine automatische Ablaufzeit haben.

Navigieren Sie bitte im OpenStack Portal zu Identity => „Application Credentials“ und klicken auf Create Application Credentials

../_images/appcredentials1.png

Geben Sie nun einen Namen und Beschreibung des Application Credential ein und Klicken auf „Create Application Credential“.

  • Die Anwendungs-Credentials werden für das aktuell ausgewählte Projekt erstellt.
  • Sie können Ihr eigenes Secret angeben, ansonsten wird eines für Sie generiert.
  • Optional können Sie das Application Credential mit einem Ablaufdatum und Uhrzeit versehen.
  • Sie können eine oder mehrere Rollen für diese Application Credentials auswählen. Wenn Sie keine auswählen, werden alle Rollen, die Sie im aktuellen Projekt zugewiesen haben angewendet. Weitere Informationen zu Roles siehe appcredential-roles.

Wichtig

Falls sie das Application Credential für die Erstellung eines Kubernetes Cluster benötigen, müssen Sie „Unrestricted (dangerous)“ ankreuzen, um die nötigen Berechtigungen (Erstellung zusätzlicher Trusts) zu erhalten.

../_images/appcredentials2.png
  • Bitte notieren Sie sich die ID und das Secret des erstellten Application Credentials, um sie in Ihrem CLI Tool zu verwenden.
  • Alternativ können Sie je nach späterer Verwendung auch „clouds.yml“ oder „openrc“ (Legacy) file herunterladen, welches alle Informationen enthält.

Wichtig

Das Application Credential Secret ist nach dem Schließen dieser Seite nicht mehr verfügbar, daher müssen Sie es jetzt notieren oder das clouds.yaml file herunter laden! Wenn Sie dieses verlieren, müssen Sie ein neues Application Credential generieren.

  • Klicken Sie anschliessend auf „Close“
../_images/appcredentials3.png

Beispiel eines cloud.yaml File:

# This is a clouds.yaml file, which can be used by OpenStack tools as a source
# of configuration on how to connect to a cloud. If this is your only cloud,
# just put this file in ~/.config/openstack/clouds.yaml and tools like
# python-openstackclient will just work with no further config.
# If you have more than one cloud account, add the cloud entry to the clouds
# section of your existing file and you can refer to them by name with
# OS_CLOUD=openstack or --os-cloud=openstack
clouds:
  openstack:

     auth:

       auth_url: https://keystone.service.ewcs.ch/v3

       application_credential_id: "003295c34794404226f3c1f6a3d82143"
       application_credential_secret: "-15dgWMA19Bd5qbWA2dcKTqLeoe78OknQiHJCv_YEOp5VwwmFJO_fC4wGFdMX0a050sDGMKpYxWoQ8M2L4jbJQ"



     region_name: "ch-zh1"


     interface: "public"
     identity_api_version: 3
     auth_type: "v3applicationcredential"

Die auswählbaren Rollen in Application Credentials bedeuten:

Rolle Beschreibung
_member_ Default Rolle die Zugriff auf ein Project erlaubt
member Duplikat von _member_ das für manche API calls noch benötigt wird
heat_stack_owner Rolle darf Heat Stacks erstellen/starten
reader darf Secrets in Barbican lesen
creator darf Secrets in Barbican erstellen
load_balancer_member Darf loadbalancer erstellen