5.5. 예제: 파워 유저 역할 생성

keystone 역할의 권한을 사용자 지정하려면 서비스의 policy.json 파일을 업데이트합니다. 즉, 사용자 클래스에 할당한 권한을 더 세분화하여 정의할 수 있습니다. 이 예제에서는 다음 권한을 사용하여 배포에 대한 power 사용자 역할을 생성합니다.

  • 인스턴스를 시작합니다.
  • 인스턴스를 중지합니다.
  • 인스턴스에 연결된 볼륨을 관리합니다.

이 역할의 목적은 관리자 액세스 권한을 부여할 필요 없이 특정 사용자에게 추가 권한을 부여하는 것입니다. 이러한 권한을 사용하려면 사용자 지정 역할에 다음 권한을 부여해야 합니다.

  • 인스턴스 시작: "os_compute_api:servers:start": "role:PowerUsers"
  • 인스턴스를 중지합니다. "os_compute_api:servers:stop": "role:PowerUsers"
  • 특정 볼륨을 사용하도록 인스턴스 구성: "os_compute_api:servers:create:attach_volume": "role:PowerUsers"
  • 인스턴스에 연결된 볼륨을 나열합니다. "os_compute_api:os-volumes-attachments:index": "role:PowerUsers"
  • 볼륨 연결: "os_compute_api:os-volumes-attachments:create": "role:PowerUsers"
  • 연결된 볼륨의 세부 정보 보기: "os_compute_api:os-volumes-attachments:show": "role:PowerUsers"
  • 인스턴스에 연결된 볼륨을 변경합니다. "os_compute_api:os-volumes-attachments:update": "role:PowerUsers"
  • 인스턴스에 연결된 볼륨을 삭제합니다. "os_compute_api:os-volumes-attachments:delete": "role:PowerUsers"
참고

policy.json 파일을 수정할 때 기본 정책을 재정의합니다. 결과적으로 PowerUsers 의 멤버는 이러한 작업을 수행할 수 있는 유일한 사용자입니다. admin 사용자가 이러한 권한을 유지할 수 있도록 하려면 admin_or_power_user에 대한 규칙을 만들 수 있습니다. 또한 몇 가지 기본적인 조건 논리를 사용하여 역할을 정의할 수 있습니다.PowerUsers 또는 role:Admin.

  1. 사용자 지정 keystone 역할을 만듭니다.

    $ openstack role create PowerUsers
    +-----------+----------------------------------+
    | Field     | Value                            |
    +-----------+----------------------------------+
    | domain_id | None                             |
    | id        | 7061a395af43455e9057ab631ad49449 |
    | name      | PowerUsers                      |
    +-----------+----------------------------------+
  2. 기존 사용자를 역할에 추가하고 역할을 프로젝트에 할당합니다.

    $ openstack role add --project [PROJECT_NAME] --user [USER_ID] [PowerUsers-ROLE_ID]
    참고

    역할 할당은 하나의 프로젝트와 독점적으로 쌍으로 구분됩니다. 즉, 사용자에게 역할을 할당하는 경우 대상 프로젝트를 동시에 정의합니다. 사용자에게 동일한 역할을 받으려면 다른 프로젝트에 대해 역할을 다시 할당해야 하지만 다른 프로젝트를 대상으로 해야 합니다.

  3. 기본 nova 정책 설정을 확인합니다.

    $ oslopolicy-policy-generator --namespace nova
  4. /var/lib/config-data/puppet-generated/nova/etc/nova/policy.json에 다음 항목을 추가하여 새 PowerUsers 역할에 대한 사용자 지정 권한을 생성합니다.

    참고

    배포 전에 정책 변경을 테스트하여 예상대로 작동하는지 확인하십시오.

    {
    "os_compute_api:servers:start": "role:PowerUsers",
    "os_compute_api:servers:stop": "role:PowerUsers",
    "os_compute_api:servers:create:attach_volume": "role:PowerUsers",
    "os_compute_api:os-volumes-attachments:index": "role:PowerUsers",
    "os_compute_api:os-volumes-attachments:create": "role:PowerUsers",
    "os_compute_api:os-volumes-attachments:show": "role:PowerUsers",
    "os_compute_api:os-volumes-attachments:update": "role:PowerUsers",
    "os_compute_api:os-volumes-attachments:delete": "role:PowerUsers"
    }

    이 파일을 저장할 때 변경 사항을 구현하고 nova 컨테이너를 다시 시작합니다. PowerUsers keystone 역할에 추가된 사용자는 이러한 권한을 받습니다.