Sie können einen policy-Abschnitt zum Steuern der RBAC-Richtlinie für bestimmte Dienste hinzufügen.

Jeder OpenStack-Dienst, wie z. B. Identität, Computing, Netzwerk usw., verfügt über eigene rollenbasierte Zugriffsrichtlinien. Diese Richtlinien legen fest, auf welche Objekte Sie zugreifen können, und sie werden in der Konfigurationsdatei der Dienstrichtlinie definiert. Für die VMware Integrated OpenStack-Bereitstellung können Sie den Befehl viocli update zum Bearbeiten der entsprechenden Dienstrichtlinienkonfiguration verwenden.
Hinweis: Für VIO 7.x verfügt Keystone über ein Standard-Lesegerät und eine Mitgliedsrolle. Diese ist standardmäßig nicht funktionsfähig. Sie müssen die entsprechende Dienstrichtlinie für die Verwendung der Rolle explizit bearbeiten, um Ihre Anforderungen an die Berechtigungssteuerung zu erfüllen. Weitere Informationen zur Benutzer- und Rollenverwaltung finden Sie unter Keystone-Benutzer- und Rollenverwaltung.

Syntax:

Verwenden Sie den viocli update <service>-Befehl, um die RBAC-Richtlinie für die angegebenen Dienste hinzuzufügen.

Sie können project_id, user_id, domain_id oder role zum Erstellen der Bedingungen für den Geltungsbereich für Benutzer verwenden. Verwenden Sie die folgenden Operatoren für die Kombination allgemeiner Geltungsbereiche:
  • !: Kein Benutzer kann den Vorgang durchführen.
  • @ oder "": Jeder Benutzer kann den Vorgang durchführen.
  • not, and, or: Der Operator zum Kombinieren mehrerer Geltungsbereiche.
Der folgende Beispielcode zeigt die verschiedenen Operatoren für die Kombination allgemeiner Geltungsbereiche:
conf:
  policy:
    "alias_1": "is_admin:True or project_id:%(project_id)s"
    "alias_2": "role:reader"
    "alias_3": "other user scope definition"
    "operation_1": "!"
    "operation_2": "@"
    "operation_3": "rule:alias_1 or (rule:alias_2 and rule:alias_3)"

Beispiel:

Sie können bestimmte Regeln wie „ power_user“ und „ read_user“ innerhalb Ihrer Richtlinienkonfigurationsdatei definieren. Im folgenden Code ruft „ read_user“ beispielsweise die APIs für Serverindex, „show“ und „details“ auf. Nova-Instanzen können jedoch nicht erstellt, gelöscht, gestartet und beendet werden.
conf:
  nova:
    vmware:
      #some configurations for VIO
  policy:
    power_user: (role:member) and project_id:%(project_id)s
    read_user: (role:reader) and project_id:%(project_id)s
    os_compute_api:servers:detail: rule:read_user
    os_compute_api:servers:index: rule:read_user
    os_compute_api:servers:show: rule:read_user
    os_compute_api:servers:start: rule:power_user
    os_compute_api:servers:stop: rule:power_user
    os_compute_api:servers:create: rule:power_user
    os_compute_api:servers:delete: rule:power_user

Lesen Sie die vollständigen Richtlinien:

Sie müssen den Dienst-Pod suchen und dann den Inhalt der Richtliniendatei überprüfen. Verwenden Sie die folgenden Befehle, um die vollständige Nova-Richtlinie zu überprüfen:

# osctl get pod | grep nova-api-osapi
nova-api-osapi-7d7978fb44-b24rl                                   2/2     Running     0          3d23h
 
# osctl exec -it nova-api-osapi-7d7978fb44-b24rl /bin/bash
Defaulting container name to nova-osapi.
Use 'kubectl describe pod/nova-api-osapi-7d7978fb44-b24rl -n openstack' to see all of the containers in this pod.
 
[root@nova-api-osapi-7d7978fb44-b24rl /]# cat /etc/nova/policy.yaml
 
os_compute_api:os-simple-tenant-usage:discoverable: '@'
......

Weitere Informationen zu Richtlinien für verschiedene Dienste finden Sie in den folgenden OpenStack Community-Dokumenten:

Keystone: Keystone-Richtlinie

Nova: Nova-Richtlinie

Cinder: Cinder-Richtlinie

Glance: Glance-Richtlinie

Neutron: Neutron-Richtlinie