17.9. 공유 유형 액세스 제어
공유 유형은 프로젝트 표시 설명과 추가 사양 이라는 프로젝트에서 볼 수 없는 키-값 쌍 목록으로 구성된 관리자 정의 서비스 유형입니다. manila-scheduler
는 추가 사양을 사용하여 스케줄링 결정을 내리고 드라이버는 공유 생성을 제어합니다.
관리자는 공유 유형을 생성 및 삭제할 수 있으며 manila 내에서 의미를 부여하는 추가 사양도 관리할 수 있습니다. 프로젝트는 공유 유형을 나열하고 이를 사용하여 새 공유를 생성할 수 있습니다. 공유 유형은 공용
및 비공개로
생성할 수 있습니다. 공유 유형 목록에서 다른 프로젝트에서 다른 프로젝트를 볼 수 있는지 여부를 정의하고 이를 사용하여 새 공유를 생성하는 데 사용할 수 있는 공유 유형의 가시성 수준입니다.
기본적으로 공유 유형은 공용으로 생성됩니다. 공유 유형을 생성하는 동안 --is_public
매개변수를 False
로 설정하여 공유 유형을 비공개로 설정하여 다른 프로젝트에서 공유 유형 목록에 보고 새 공유를 생성하지 못하게 합니다. 반면 공용
공유 유형은 클라우드의 모든 프로젝트에서 사용할 수 있습니다.
Manila를 사용하면 관리자가 프로젝트의 개인
공유 유형에 대한 액세스 권한을 부여하거나 거부할 수 있습니다. 지정된 개인 공유 유형의 액세스에 대한 정보를 가져올 수도 있습니다.
추가 사양으로 인한 공유 유형은 사용자가 공유를 생성하기 전에 백엔드를 필터링하거나 선택하는 데 도움이 되므로 공유 유형에 대한 액세스를 사용하면 특정 백엔드 중에서 클라이언트를 제한할 수 있습니다.
예를 들어 관리자
프로젝트의 관리자는 my_type
이라는 개인 공유 유형을 생성하여 목록에서 확인할 수 있습니다. 아래 콘솔 예제에서는 로그인 및 out이 생략되고 현재 로그인한 사용자를 표시하기 위해 환경 변수가 제공됩니다.
$ 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 | +----+--------+-----------+-----------+-----------------------------------+-----------------------+
데모
프로젝트의 데모
사용자는 유형을 나열할 수 있으며 my_type
이라는 개인 공유 유형은 표시되지 않습니다.
$ 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를 사용하여 데모 프로젝트의 개인 공유 유형에 대한 액세스 권한을 부여할 수 있습니다.
$ env | grep OS_ ... OS_USERNAME=admin OS_TENANT_NAME=admin ... $ openstack project list +----------------------------------+--------------------+ | ID | Name | +----------------------------------+--------------------+ | ... | ... | | df29a37db5ae48d19b349fe947fada46 | demo | +----------------------------------+--------------------+ $ manila type-access-add my_type df29a37db5ae48d19b349fe947fada46
결과적으로 데모
프로젝트의 사용자는 개인 공유 유형을 보고 공유 생성에 사용할 수 있습니다.
$ 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를 프라이빗 스토리지로 사용하는 경우를 고려하십시오. 이 경우 특정 프로젝트에 대한 액세스 권한을 부여하고 사용자/그룹
인증 방법으로 액세스를 제어할 수 있습니다.