Zum Inhalt springen

Application Credentials

Die OpenStack Application Credentials der noris Sovereign Cloud (nSC) ermöglichen es Benutzern, Anmeldedaten speziell für ihre Anwendungen zu erstellen, ohne ihre persönlichen Benutzerpasswörter offenzulegen.

  1. Gehen Sie im Webinterface zu Project → Identity → Application Credentials. Für NBG lautet der direkte Link dashboard.nbg.nsc.noris.cloud/identity/application_credentials.
  2. Prüfen Sie oben die Project ID, es ist wichtig, dass Application Credentials für das richtige Projekt erstellt werden.
  3. Erstellen Sie ein neues Application Credential: Klicken Sie auf die Schaltfläche „Create Application Credential”.
  4. Füllen Sie Angaben wie den Namen des Credentials (erforderlich), eine Beschreibung, Ablaufdatum und -zeit, zuzuweisende Rollen sowie etwaige Zugriffsbeschränkungen aus (siehe ACLs unten).
  5. Laden Sie die resultierende clouds.yaml herunter. Dieses Secret wird nur einmalig angezeigt.
  6. Legen Sie diese Datei unter ~/.config/openstack/clouds.yaml ab.
  7. Vermutlich müssen Sie außerdem die Umgebungsvariable OS_CLOUD setzen: export OS_CLOUD=openstack
  8. Ihre CLI sollte nun in der Lage sein, Ihre Projekte aufzulisten: openstack project list
  • Benutzer können Application Credentials bestimmte Rollen und Berechtigungen zuweisen (siehe ACLs unten), um den Zugriff der Anwendung auf das unbedingt Notwendige zu beschränken.
  • Application Credentials sind an den Benutzer gebunden, der sie erstellt hat, wird dieser Benutzer entfernt oder verliert er den Zugriff, funktionieren die Credentials nicht mehr.
  • Jedes Application Credential ist auf ein einzelnes Projekt beschränkt, sodass beim Wechsel des Projekts jeweils ein eigenes Credential benötigt wird.
  • Das Dashboard listet nur die von Ihnen selbst erstellten Application Credentials, nicht alle für das Projekt vorhandenen.
  • Standardmäßig ist es Application Credentials aus Sicherheitsgründen untersagt, weitere Application Credentials, Keystone Trusts oder EC2-Credentials zu erstellen. Wenn Sie S3 verwenden möchten, benötigen Sie EC2-Credentials; aktivieren Sie dafür Unrestricted bei den verwendeten Application Credentials. Andernfalls sollte Unrestricted nicht aktiviert werden, da dies die Sicherheitsbeschränkungen aufhebt.

Sie können die Berechtigungen Ihrer Application Credentials einschränken. Beispielsweise kann eine Anwendung, die für die VM-Verwaltung genutzt wird, daran gehindert werden, Netzwerk-Konfigurationen zu ändern.

[
{ "path": "/v2.1/servers", "method": "GET", "service": "compute" },
{ "path": "/v2.1/servers/detail", "method": "GET", "service": "compute" },
{ "path": "/v2.1/servers", "method": "POST", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}", "method": "GET", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}", "method": "PUT", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}", "method": "DELETE", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}/action", "method": "POST", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}/remote-consoles", "method": "POST", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}/diagnostics", "method": "GET", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}/os-volume_attachments", "method": "GET", "service": "compute" },
{ "path": "/v2.1/servers/{server_id}/os-volume_attachments/{volume_id}", "method": "GET", "service": "compute" },
{ "path": "/v2.1/flavors", "method": "GET", "service": "compute" },
{ "path": "/v2.1/flavors/detail", "method": "GET", "service": "compute" },
{ "path": "/v2.1/flavors/{flavor_id}", "method": "GET", "service": "compute" },
{ "path": "/v2.1/os-keypairs", "method": "GET", "service": "compute" },
{ "path": "/v2.1/os-keypairs", "method": "POST", "service": "compute" },
{ "path": "/v2.1/os-keypairs/{keypair_name}", "method": "GET", "service": "compute" },
{ "path": "/v2.1/os-keypairs/{keypair_name}", "method": "DELETE", "service": "compute" }
]
[
{ "path": "/v2/images", "method": "POST", "service": "image" },
{ "path": "/v2/images", "method": "GET", "service": "image" },
{ "path": "/v2/images/{image_id}", "method": "GET", "service": "image" },
{ "path": "/v2/images/{image_id}", "method": "PATCH", "service": "image" },
{ "path": "/v2/images/{image_id}", "method": "DELETE", "service": "image" },
{ "path": "/v2/images/{image_id}/actions/deactivate", "method": "POST", "service": "image" },
{ "path": "/v2/images/{image_id}/actions/reactivate", "method": "POST", "service": "image" },
{ "path": "/v2/images/{image_id}/file", "method": "PUT", "service": "image" },
{ "path": "/v2/images/{image_id}/file", "method": "GET", "service": "image" },
{ "path": "/v2/images/{image_id}/members", "method": "POST", "service": "image" },
{ "path": "/v2/images/{image_id}/members", "method": "GET", "service": "image" },
{ "path": "/v2/images/{image_id}/members/{member_id}", "method": "GET", "service": "image" },
{ "path": "/v2/images/{image_id}/members/{member_id}", "method": "PUT", "service": "image" },
{ "path": "/v2/images/{image_id}/members/{member_id}", "method": "DELETE", "service": "image" },
{ "path": "/v2/images/{image_id}/tags/{tag}", "method": "PUT", "service": "image" },
{ "path": "/v2/images/{image_id}/tags/{tag}", "method": "DELETE", "service": "image" }
]

Beispielkonfiguration für die Netzwerk-Verwaltung

Abschnitt betitelt „Beispielkonfiguration für die Netzwerk-Verwaltung“
[
{ "path": "/v2.0/networks", "method": "GET", "service": "network" },
{ "path": "/v2.0/networks", "method": "POST", "service": "network" },
{ "path": "/v2.0/networks/{network_id}", "method": "GET", "service": "network" },
{ "path": "/v2.0/networks/{network_id}", "method": "PUT", "service": "network" },
{ "path": "/v2.0/networks/{network_id}", "method": "DELETE", "service": "network" },
{ "path": "/v2.0/subnets", "method": "GET", "service": "network" },
{ "path": "/v2.0/subnets", "method": "POST", "service": "network" },
{ "path": "/v2.0/subnets/{subnet_id}", "method": "GET", "service": "network" },
{ "path": "/v2.0/subnets/{subnet_id}", "method": "PUT", "service": "network" },
{ "path": "/v2.0/subnets/{subnet_id}", "method": "DELETE", "service": "network" },
{ "path": "/v2.0/security-group-rules", "method": "GET", "service": "network" },
{ "path": "/v2.0/security-group-rules", "method": "POST", "service": "network" },
{ "path": "/v2.0/security-group-rules/{security_group_rule_id}", "method": "GET", "service": "network" },
{ "path": "/v2.0/security-group-rules/{security_group_rule_id}", "method": "DELETE", "service": "network" },
{ "path": "/v2.0/security-groups", "method": "GET", "service": "network" },
{ "path": "/v2.0/security-groups", "method": "POST", "service": "network" },
{ "path": "/v2.0/security-groups/{security_group_id}", "method": "GET", "service": "network" },
{ "path": "/v2.0/security-groups/{security_group_id}", "method": "PUT", "service": "network" },
{ "path": "/v2.0/security-groups/{security_group_id}", "method": "DELETE", "service": "network" },
{ "path": "/v2.0/ports/{port_id}", "method": "GET", "service": "network" },
{ "path": "/v2.0/ports/{port_id}", "method": "PUT", "service": "network" },
{ "path": "/v2.0/ports/{port_id}", "method": "DELETE", "service": "network" },
{ "path": "/v2.0/ports", "method": "GET", "service": "network" },
{ "path": "/v2.0/ports", "method": "POST", "service": "network" },
{ "path": "/v2.0/ports/{port_id}/add_allowed_address_pairs", "method": "PUT", "service": "network" },
{ "path": "/v2.0/ports/{port_id}/remove_allowed_address_pairs", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers", "method": "GET", "service": "network" },
{ "path": "/v2.0/routers", "method": "POST", "service": "network" },
{ "path": "/v2.0/routers/{router_id}", "method": "GET", "service": "network" },
{ "path": "/v2.0/routers/{router_id}", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers/{router_id}", "method": "DELETE", "service": "network" },
{ "path": "/v2.0/routers/{router_id}/add_router_interface", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers/{router_id}/remove_router_interface", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers/{router_id}/add_extraroutes", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers/{router_id}/remove_extraroutes", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers/{router_id}/add_external_gateways", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers/{router_id}/update_external_gateways", "method": "PUT", "service": "network" },
{ "path": "/v2.0/routers/{router_id}/remove_external_gateways", "method": "PUT", "service": "network" },
{ "path": "/v2.0/floatingips", "method": "GET", "service": "network" },
{ "path": "/v2.0/floatingips", "method": "POST", "service": "network" },
{ "path": "/v2.0/floatingips/{floatingip_id}", "method": "GET", "service": "network" },
{ "path": "/v2.0/floatingips/{floatingip_id}", "method": "PUT", "service": "network" },
{ "path": "/v2.0/floatingips/{floatingip_id}", "method": "DELETE", "service": "network" }
]

Eine umfassende Konfiguration, die VM-Verwaltung, Image-Verwaltung und Netzwerk-Verwaltung einschließt:

  • Name: Comprehensive-Management-Credential
  • Beschreibung: Credential zur Verwaltung von VM-Zuständen, Images und Netzwerken
  • Secret: (generiert oder vorgegeben)
  • Ablaufdatum/-zeit: (optional)
  • Rollen: admin (oder mehrere angegebene Rollen wie vm_admin, image_admin, network_admin)
  • Access Rules: die Vereinigung aller ACL-Einträge aus den drei obigen Beispielen

Auch aktuelle große Sprachmodelle können brauchbare ACLs liefern, diese sollten vor dem Einsatz jedoch auf Korrektheit geprüft werden.