6.6. 프로젝트 계층 구조


Identity 서비스(keystone)에서 멀티 테넌시를 사용하여 프로젝트를 중첩할 수 있습니다. 멀티 테넌시를 사용하면 하위 프로젝트가 상위 프로젝트에서 역할 할당을 상속할 수 있습니다.

6.6.1. 계층적 프로젝트 및 하위 프로젝트 생성

keystone 도메인 및 프로젝트를 사용하여 Hierarchical Multitenancy(HMT)를 구현할 수 있습니다. 먼저 새 도메인을 생성한 다음 해당 도메인에 프로젝트를 생성합니다. 그런 다음 해당 프로젝트에 하위 프로젝트를 추가할 수 있습니다. 해당 하위 프로젝트의 admin 역할에 사용자를 추가하여 하위 프로젝트의 관리자로 사용자를 승격할 수도 있습니다.

참고

keystone에서 사용하는 HMT 구조는 현재 대시보드에 표시되지 않습니다.

절차

  1. corp 라는 새 keystone 도메인을 생성합니다.

    $ openstack domain create corp
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description |                                  |
    | enabled     | True                             |
    | id          | 69436408fdcb44ab9e111691f8e9216d |
    | name        | corp                             |
    +-------------+----------------------------------+
  2. corp 도메인에 상위 프로젝트(private-cloud)를 생성합니다.

    $ openstack project create private-cloud --domain corp
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description |                                  |
    | domain_id   | 69436408fdcb44ab9e111691f8e9216d |
    | enabled     | True                             |
    | id          | c50d5cf4fe2e4929b98af5abdec3fd64 |
    | is_domain   | False                            |
    | name        | private-cloud                    |
    | parent_id   | 69436408fdcb44ab9e111691f8e9216d |
    +-------------+----------------------------------+
  3. corp 도메인도 지정하는 동안 private-cloud 상위 프로젝트 내에 하위 프로젝트(dev)를 생성합니다.

    $ openstack project create dev --parent private-cloud --domain corp
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description |                                  |
    | domain_id   | 69436408fdcb44ab9e111691f8e9216d |
    | enabled     | True                             |
    | id          | 11fccd8369824baa9fc87cf01023fd87 |
    | is_domain   | False                            |
    | name        | dev                              |
    | parent_id   | c50d5cf4fe2e4929b98af5abdec3fd64 |
    +-------------+----------------------------------+
  4. qa 라는 다른 하위 프로젝트를 생성합니다.

    $ openstack project create qa --parent private-cloud --domain corp
    +-------------+----------------------------------+
    | Field       | Value                            |
    +-------------+----------------------------------+
    | description |                                  |
    | domain_id   | 69436408fdcb44ab9e111691f8e9216d |
    | enabled     | True                             |
    | id          | b4f1d6f59ddf413fa040f062a0234871 |
    | is_domain   | False                            |
    | name        | qa                               |
    | parent_id   | c50d5cf4fe2e4929b98af5abdec3fd64 |
    +-------------+----------------------------------+
참고

Identity API를 사용하여 프로젝트 계층을 볼 수 있습니다. 자세한 내용은 https://developer.openstack.org/api-ref/identity/v3/index.html?expanded=show-project-details-detail에서 참조하십시오.

6.6.2. 계층적 프로젝트에 대한 액세스 구성

기본적으로 새로 생성된 프로젝트에는 역할이 할당되지 않습니다. 상위 프로젝트에 역할 권한을 할당하는 경우 --inherited 플래그를 포함하여 하위 프로젝트에서 상위 프로젝트에서 할당된 권한을 상속하도록 지시할 수 있습니다. 예를 들어 상위 프로젝트에 대한 관리자 역할 액세스 권한이 있는 사용자는 하위 프로젝트에 대한 관리자 액세스 권한도 있습니다.

사용자에게 액세스 권한 부여

  1. 프로젝트에 할당된 기존 권한을 확인합니다.

    $ openstack role assignment list --project private-cloud
  2. 기존 역할을 확인합니다.

    $ openstack role list
    +----------------------------------+-----------------+
    | ID                               | Name            |
    +----------------------------------+-----------------+
    | 01d92614cd224a589bdf3b171afc5488 | admin           |
    | 034e4620ed3d45969dfe8992af001514 | member          |
    | 0aa377a807df4149b0a8c69b9560b106 | ResellerAdmin   |
    | 9369f2bf754443f199c6d6b96479b1fa | heat_stack_user |
    | cfea5760d9c948e7b362abc1d06e557f | reader          |
    | d5cb454559e44b47aaa8821df4e11af1 | swiftoperator   |
    | ef3d3f510a474d6c860b4098ad658a29 | service         |
    +----------------------------------+-----------------+
  3. 사용자 계정 user1private-cloud 프로젝트에 대한 액세스 권한을 부여합니다.

    $ openstack role add --user user1 --user-domain corp --project private-cloud member

    --inherited 플래그를 사용하여 이 명령을 다시 실행합니다. 결과적으로 user1 은 역할 할당을 상속한 private-cloud 하위 프로젝트에도 액세스할 수 있습니다.

    $ openstack role add --user user1 --user-domain corp --project private-cloud member --inherited
  4. 권한 업데이트 결과를 검토합니다.

    $ openstack role assignment list --effective --user user1 --user-domain corp
    +----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
    | Role                             | User                             | Group | Project                          | Domain | Inherited |
    +----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
    | 034e4620ed3d45969dfe8992af001514 | 10b5b34df21d485ca044433818d134be |       | c50d5cf4fe2e4929b98af5abdec3fd64 |        | False     |
    | 034e4620ed3d45969dfe8992af001514 | 10b5b34df21d485ca044433818d134be |       | 11fccd8369824baa9fc87cf01023fd87 |        | True      |
    | 034e4620ed3d45969dfe8992af001514 | 10b5b34df21d485ca044433818d134be |       | b4f1d6f59ddf413fa040f062a0234871 |        | True      |
    +----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+

user1 사용자는 qadev 프로젝트에 대한 액세스 권한을 상속했습니다. 또한 --inherited 플래그가 상위 프로젝트에 적용되었으므로 user1 은 나중에 생성된 모든 하위 프로젝트에 대한 액세스도 수신합니다.

사용자의 액세스 제거

명시적 및 상속된 권한은 별도로 제거해야 합니다.

  1. 명시적으로 할당된 역할에서 사용자를 제거합니다.

    $ openstack role remove --user user1 --project private-cloud member
  2. 변경 사항의 결과를 검토합니다. 상속된 권한은 여전히 존재합니다.

    $ openstack role assignment list --effective --user user1 --user-domain corp
    +----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
    | Role                             | User                             | Group | Project                          | Domain | Inherited |
    +----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
    | 034e4620ed3d45969dfe8992af001514 | 10b5b34df21d485ca044433818d134be |       | 11fccd8369824baa9fc87cf01023fd87 |        | True      |
    | 034e4620ed3d45969dfe8992af001514 | 10b5b34df21d485ca044433818d134be |       | b4f1d6f59ddf413fa040f062a0234871 |        | True      |
    +----------------------------------+----------------------------------+-------+----------------------------------+--------+-----------+
  3. 상속된 권한을 제거합니다.

    $ openstack role remove --user user1 --project private-cloud member --inherited
  4. 변경 사항의 결과를 검토합니다. 상속된 권한이 제거되었으며 결과 출력이 비어 있습니다.

    $ openstack role assignment list --effective --user user1 --user-domain corp

6.6.3. 리셀러 프로젝트 개요

리셀러 프로젝트의 목표는 도메인 계층 구조를 갖는 것입니다. 이러한 도메인을 사용하면 결국 완전한 클라우드를 나타내는 하위 도메인을 사용하여 클라우드의 일부를 재판매하는 것을 고려할 수 있습니다. 이 작업은 다음과 같이 1단계로 나뉘어져 있습니다.

리셀러의 1 단계

리셀러(상위 1)는 여기에 설명된 Hierarchical Multitenancy(HMT)의 확장입니다. 계층적 프로젝트 및 하위 프로젝트 생성. 이전에는 keystone 도메인은 원래 데이터베이스 백엔드에 고유한 테이블을 사용하여 사용자 및 프로젝트를 저장하는 컨테이너로 설계되었습니다. 결과적으로 도메인은 이제 자체 테이블에 더 이상 저장되지 않으며 프로젝트 테이블에 병합되었습니다.

  • 도메인은 이제 is_domain 플래그로 구분되는 프로젝트 유형입니다.
  • 도메인은 프로젝트 계층 구조의 최상위 프로젝트를 나타냅니다. 도메인은 프로젝트 계층 구조에서 루트입니다.
  • projects 하위 경로를 사용하여 도메인을 생성하고 검색하도록 API가 업데이트되었습니다.

    • is_domain 플래그가 true로 설정된 프로젝트를 생성하여 새 도메인을 생성합니다.
    • domain: is_domain 쿼리 매개 변수를 포함하여 프로젝트를 가져옵니다.
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.