특정 서비스에 RBAC 정책을 제어하기 위한 policy 섹션을 추가할 수 있습니다.

ID, 계산, 네트워킹 등의 각 OpenStack 서비스에는 고유한 역할 기반 액세스 정책이 있습니다. 이러한 정책은 액세스할 수 있는 개체를 결정하며 서비스 정책 구성 파일에 정의되어 있습니다. VMware Integrated OpenStack 배포의 경우 해당 서비스 정책 구성을 편집하기 위해 viocli update 명령을 사용할 수 있습니다.
참고: VIO 7.x의 경우 Keystone에는 기본 판독기 및 멤버 역할이 있습니다. 이것은 기본적으로 작동하지 않습니다. 사용 권한 제어 요구 사항을 충족하도록 역할 사용을 위한 해당 서비스 정책을 명시적으로 편집해야 합니다. 사용자 및 역할 관리에 대한 자세한 내용은 Keystone 사용자 및 역할 관리를 참조하십시오.

구문:

지정된 서비스에 대한 RBAC 정책을 추가하려면 viocli update <service> 명령을 사용합니다.

사용자 범위 지정 조건을 생성하는 데 project_id, user_id, domain_id 또는 role를 사용할 수 있습니다. 일반 범위 조합에 대해 다음 연산자를 사용합니다.
  • !: 작업을 수행할 수 있는 사용자가 없습니다.
  • @ 또는 "": 모든 사용자가 작업을 수행할 수 있습니다.
  • not, and, or: 여러 범위를 결합하기 위한 연산자입니다.
다음 샘플 코드는 일반 범위 조합에 대한 다양한 연산자를 보여 줍니다.
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)"

예:

정책 구성 파일 내에서 power_userread_user와 같은 특정 규칙을 정의할 수 있습니다. 예를 들어 다음 코드에서 read_user는 서버 index, show 및 details에 대해 API를 호출하지만 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

전체 정책 검토:

서비스 포드를 찾은 다음 정책 파일 컨텐츠를 검토해야 합니다. 전체 Nova 정책을 검토하려면 다음 명령을 사용합니다.

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

다양한 서비스의 정책에 대한 자세한 내용은 다음 OpenStack 커뮤니티 문서를 참조하십시오.

Keystone: Keystone 정책

Nova: Nova 정책

Cinder: Cinder 정책

Glance: Glance 정책

Neutron: Neutron 정책