Richtlinien

Jeder OpenStack-Dienst definiert die Zugriffsrichtlinien für seine Ressourcen in einer zugehörigen Richtliniendatei. Eine Ressource zum Beispiel könnte API-Zugriff sein, die Fähigkeit, an ein Volume anzubringen oder Instanzen auszulösen. Die Richtlinienregeln sind im JSON-Format angegeben und die Datei heißt policy.json. Die Syntax und das Format dieser Datei werden im Configuration Reference diskutiert <https://docs.openstack.org/ocata/config-reference/policy-json-file.html> `__.

Diese Richtlinien können vom Cloud-Administrator geändert oder aktualisiert werden, um den Zugriff auf die verschiedenen Ressourcen zu steuern. Stellen Sie sicher, dass Änderungen an den Zutrittskontrollrichtlinien die Sicherheit einer Ressource nicht unbeabsichtigt schwächen. Beachten Sie auch, dass Änderungen an der ``policy.json``Datei sofort wirksam werden und nicht verlangen, dass der Dienst neu gestartet wird.

Das folgende Beispiel zeigt, wie der Dienst den Zugriff auf das Erstellen, Aktualisieren und Löschen von Ressourcen auf nur diejenigen Benutzer beschränken kann, die die Rolle von cloud_admin``haben, die als die Konjunktion von ``role = admin``und `definiert wurde `domain_id = admin_domain_id, während die get- und list-Ressourcen für Benutzer zur Verfügung gestellt werden, die die Rolle von cloud_admin oder admin haben.

{
    "admin_required": "role:admin",
    "cloud_admin": "rule:admin_required and domain_id:admin_domain_id",
    "service_role": "role:service",
    "service_or_admin": "rule:admin_required or rule:service_role",
    "owner" : "user_id:%(user_id)s or user_id:%(target.token.user_id)s",
    "admin_or_owner": "(rule:admin_required and domain_id:%(target.token.user.domain.id)s) or rule:owner",
    "admin_or_cloud_admin": "rule:admin_required or rule:cloud_admin",
    "admin_and_matching_domain_id": "rule:admin_required and domain_id:%(domain_id)s",
    "service_admin_or_owner": "rule:service_or_admin or rule:owner",

    "default": "rule:admin_required",

    "identity:get_service": "rule:admin_or_cloud_admin",
    "identity:list_services": "rule:admin_or_cloud_admin",
    "identity:create_service": "rule:cloud_admin",
    "identity:update_service": "rule:cloud_admin",
    "identity:delete_service": "rule:cloud_admin",

    "identity:get_endpoint": "rule:admin_or_cloud_admin",
    "identity:list_endpoints": "rule:admin_or_cloud_admin",
    "identity:create_endpoint": "rule:cloud_admin",
    "identity:update_endpoint": "rule:cloud_admin",
    "identity:delete_endpoint": "rule:cloud_admin",

}