Vous pouvez ajouter une section policy pour contrôler la stratégie RBAC pour des services spécifiques.

Chaque service OpenStack, tel que l'identité, le calcul, la mise en réseau, etc., dispose de ses propres stratégies d'accès basées sur les rôles. Ces stratégies déterminent les objets auxquels vous pouvez accéder et elles sont définies dans le fichier de configuration de stratégie des services. Pour le déploiement de VMware Integrated OpenStack, vous pouvez utiliser la commande viocli update pour modifier la configuration de la politique de services correspondante.
Note : Pour VIO 7.x, Keystone dispose d'un rôle de lecteur et de membre par défaut. Il n'est pas fonctionnel par défaut. Vous devez modifier la stratégie des services correspondante pour l'utilisation explicite du rôle afin de répondre à vos exigences de contrôle des autorisations. Pour plus d'informations sur la gestion des utilisateurs et des rôles, consultez Gestion des utilisateurs et des rôles Keystone.

Syntaxe :

Utilisez la commande viocli update <service> pour ajouter une stratégie RBAC pour des services spécifiés.

Vous pouvez utiliser project_id, user_id, domain_id ou role pour créer les conditions d'étendue de l'utilisateur. Utilisez les opérateurs suivants pour la combinaison d'étendues générales :
  •  ! : aucun utilisateur ne peut effectuer l'opération.
  • @ ou "" : tous les utilisateurs peuvent effectuer l'opération.
  • , et, or : opérateur de combinaison de plusieurs étendues.
L'exemple de code suivant montre les différents opérateurs pour la combinaison d'étendues générales :
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)"

Exemple :

Vous pouvez définir certaines règles, telles que power_user et read_user dans votre fichier de configuration de stratégie. Par exemple, dans le code suivant, read_user appelle les API pour l'index de serveur, l'affichage et les détails, mais il ne peut pas créer, supprimer, démarrer et arrêter des instances de Nova.
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

Vérifier les stratégies complètes :

Vous devez trouver l'espace de service, puis examiner le contenu du fichier de stratégie. Utilisez les commandes suivantes pour vérifier la stratégie Nova complète :

# 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: '@'
......

Pour plus d'informations sur les stratégies de différents services, consultez les documents de la communauté OpenStack suivants :

Keystone : Stratégie Keystone

Nova : Stratégie Nova

Cinder : Stratégie Cinder

Glance : Stratégie Glance

Neutron : Stratégie Neutron