10.7. 공유 유형 액세스 제어
공유 유형은 프로젝트에 표시된 설명으로 구성된 관리자 정의 서비스 유형과 추가 사양 이라는 프로젝트 가시성이 없는 키-값 쌍 목록입니다. manila-scheduler 는 추가 사양을 사용하여 스케줄링 결정을 내리고 드라이버는 공유 생성을 제어합니다.
관리자는 공유 유형을 생성 및 삭제할 수 있으며 manila 내부에서 의미를 부여하는 추가 사양을 관리할 수도 있습니다. 프로젝트는 공유 유형을 나열할 수 있으며 이를 사용하여 새 공유를 만들 수 있습니다. 공유 유형은 공용 및 개인용으로 만들 수 있습니다. 이는 다른 프로젝트에서 공유 유형 목록에서 볼 수 있는지 여부를 정의하는 공유 유형에 대한 가시성 수준이며, 이를 사용하여 새 공유를 만듭니다.
기본적으로 공유 유형은 공용으로 생성됩니다. 공유 유형을 생성하는 동안 --is_public 매개 변수를 False 로 설정하여 공유 유형을 비공개로 설정하여 다른 프로젝트가 공유 유형 목록에서 보고 새 공유를 생성하지 못하도록 합니다. 반면, 공용 공유 유형은 클라우드의 모든 프로젝트에서 사용할 수 있습니다.
Manila를 사용하면 관리자가 프로젝트의 개인 공유 유형에 대한 액세스 권한을 부여하거나 거부할 수 있습니다. 지정된 개인 공유 유형의 액세스에 대한 정보를 가져올 수도 있습니다.
추가 사양으로 인한 공유 유형은 사용자가 공유를 생성하기 전에 백엔드를 필터링하거나 선택하는 데 도움이 되기 때문에 공유 유형에 대한 액세스를 사용하여 특정 백엔드를 선택할 수 있습니다.
예를 들어 admin 프로젝트의 관리자는 my_type 이라는 개인 공유 유형을 생성하여 목록에 볼 수 있습니다. 아래 콘솔 예제에서 로그인 및 로그아웃이 생략되고 현재 로그인한 사용자를 표시하도록 환경 변수가 제공됩니다.
env | grep OS_
$ env | grep OS_
...
OS_USERNAME=admin
OS_TENANT_NAME=admin
...
$ manila type-list --all
+----+--------+-----------+-----------+-----------------------------------+-----------------------+
| ID | Name | Visibility| is_default| required_extra_specs | optional_extra_specs |
+----+--------+-----------+-----------+-----------------------------------+-----------------------+
| 4..| my_type| private | - | driver_handles_share_servers:False| snapshot_support:True |
| 5..| default| public | YES | driver_handles_share_servers:True | snapshot_support:True |
+----+--------+-----------+-----------+-----------------------------------+-----------------------+
demo 프로젝트의 demo 사용자는 유형을 나열할 수 있으며 my_type 이라는 개인 공유 유형이 표시되지 않습니다.
env | grep OS_
$ env | grep OS_
...
OS_USERNAME=demo
OS_TENANT_NAME=demo
...
$ manila type-list --all
+----+--------+-----------+-----------+----------------------------------+----------------------+
| ID | Name | Visibility| is_default| required_extra_specs | optional_extra_specs |
+----+--------+-----------+-----------+----------------------------------+----------------------+
| 5..| default| public | YES | driver_handles_share_servers:True| snapshot_support:True|
+----+--------+-----------+-----------+----------------------------------+----------------------+
관리자는 df29a37db5ae48d19b349fe947fada46 과 동일한 프로젝트 ID를 사용하여 demo 프로젝트의 개인 공유 유형에 대한 액세스 권한을 부여할 수 있습니다.
env | grep OS_
$ env | grep OS_
...
OS_USERNAME=admin
OS_TENANT_NAME=admin
...
$ openstack project list
+----------------------------------+--------------------+
| ID | Name |
+----------------------------------+--------------------+
| ... | ... |
| df29a37db5ae48d19b349fe947fada46 | demo |
+----------------------------------+--------------------+
$ manila type-access-add my_type df29a37db5ae48d19b349fe947fada46
결과적으로 demo 프로젝트의 사용자는 private 공유 유형을 보고 공유 생성에 사용할 수 있습니다.
env | grep OS_
$ env | grep OS_
...
OS_USERNAME=demo
OS_TENANT_NAME=demo
...
$ manila type-list --all
+----+--------+-----------+-----------+-----------------------------------+-----------------------+
| ID | Name | Visibility| is_default| required_extra_specs | optional_extra_specs |
+----+--------+-----------+-----------+-----------------------------------+-----------------------+
| 4..| my_type| private | - | driver_handles_share_servers:False| snapshot_support:True |
| 5..| default| public | YES | driver_handles_share_servers:True | snapshot_support:True |
+----+--------+-----------+-----------+-----------------------------------+-----------------------+
지정된 프로젝트의 액세스를 거부하려면 manila type-access-remove <share_type> <project_id> 를 사용합니다.
공유 유형의 목적을 보여주는 예를 들어 두 개의 백엔드가 있는 상황을 고려하십시오. 공용 스토리지로서의 LVM, 프라이빗 스토리지로서의 Ceph. 이 경우 특정 프로젝트에 대한 액세스 권한을 부여하고 사용자/그룹 인증 방법을 사용하여 액세스를 제어할 수 있습니다.