검색

8.5. 동일한 풀 내의 격리된 네임스페이스 내에서 이미지 분리

download PDF

OpenStack 또는 OpenShift Container Storage와 같은 상위 수준의 시스템 없이 Ceph 블록 장치를 직접 사용하는 경우 특정 블록 장치 이미지에 대한 사용자 액세스를 제한할 수 없었습니다. CephX 기능과 결합하면 사용자를 특정 풀 네임스페이스로 제한하여 이미지에 대한 액세스를 제한할 수 있습니다.

새로운 수준의 ID인 RADOS 네임스페이스를 사용하여 오브젝트를 식별하여 풀 내의 rados 클라이언트를 격리할 수 있습니다. 예를 들어 클라이언트는 특정 네임스페이스에 대한 전체 권한만 가질 수 있습니다. 이렇게 하면 테넌트마다 다른 RADOS 클라이언트를 사용할 수 있습니다. 이는 여러 다른 테넌트가 자체 블록 장치 이미지에 액세스하는 블록 장치에 특히 유용합니다.

동일한 풀 내의 격리된 네임스페이스 내에서 블록 장치 이미지를 분리할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 모든 커널을 4x로 업그레이드하고 모든 클라이언트의 librbd 및 librados로 업그레이드합니다.
  • 모니터 및 클라이언트 노드에 대한 루트 수준 액세스.

프로세스

  1. rbd 풀을 생성합니다.

    구문

    ceph osd pool create POOL_NAME PG_NUM

    예제

    [ceph: root@host01 /]# ceph osd pool create mypool 100
    pool 'mypool' created

  2. rbd 풀을 RBD 애플리케이션과 연결합니다.

    구문

    ceph osd pool application enable POOL_NAME rbd

    예제

    [ceph: root@host01 /]# ceph osd pool application enable mypool rbd
    enabled application 'rbd' on pool 'mypool'

  3. RBD 애플리케이션으로 풀을 초기화합니다.

    구문

    rbd pool init -p POOL_NAME

    예제

    [ceph: root@host01 /]# rbd pool init -p mypool

  4. 두 개의 네임스페이스를 생성합니다.

    구문

    rbd namespace create --namespace NAMESPACE

    예제

    [ceph: root@host01 /]# rbd namespace create --namespace namespace1
    
    [ceph: root@host01 /]# rbd namespace create --namespace namespace2
    
    [ceph: root@host01 /]# rbd namespace ls --format=json
    [{"name":"namespace2"},{"name":"namespace1"}]

  5. 두 사용자의 네임스페이스에 대한 액세스 권한을 제공합니다.

    구문

    ceph auth get-or-create client.USER_NAME mon 'profile rbd' osd 'profile rbd pool=rbd namespace=NAMESPACE' -o /etc/ceph/client.USER_NAME.keyring

    예제

    [ceph: root@host01 /]# ceph auth get-or-create client.testuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace1' -o /etc/ceph/client.testuser.keyring
    
    [ceph: root@host01 /]# ceph auth get-or-create client.newuser mon 'profile rbd' osd 'profile rbd pool=rbd namespace=namespace2' -o /etc/ceph/client.newuser.keyring

  6. 클라이언트의 키를 가져옵니다.

    구문

    ceph auth get client.USER_NAME

    예제

    [ceph: root@host01 /]# ceph auth get client.testuser
    
    [client.testuser]
    	key = AQDMp61hBf5UKRAAgjQ2In0Z3uwAase7mrlKnQ==
    	caps mon = "profile rbd"
    	caps osd = "profile rbd pool=rbd namespace=namespace1"
    exported keyring for client.testuser
    
    [ceph: root@host01 /]# ceph auth get client.newuser
    
    [client.newuser]
    	key = AQDfp61hVfLFHRAA7D80ogmZl80ROY+AUG4A+Q==
    	caps mon = "profile rbd"
    	caps osd = "profile rbd pool=rbd namespace=namespace2"
    exported keyring for client.newuser

  7. 블록 장치 이미지를 생성하고 풀 내에서 사전 정의된 네임스페이스를 사용합니다.

    구문

    rbd create --namespace NAMESPACE IMAGE_NAME --size SIZE_IN_GB

    예제

    [ceph: root@host01 /]# rbd create --namespace namespace1 image01 --size 1G
    
    [ceph: root@host01 /]# rbd create --namespace namespace2 image02 --size 1G

  8. 선택 사항: 네임스페이스 및 관련 이미지의 세부 정보를 가져옵니다.

    구문

    rbd --namespace NAMESPACE ls --long

    예제

    [ceph: root@host01 /]#  rbd --namespace namespace1 ls --long
    NAME    SIZE  PARENT FMT PROT LOCK
    image01 1 GiB          2
    
    [ceph: root@host01 /]# rbd --namespace namespace2 ls --long
    NAME    SIZE  PARENT FMT PROT LOCK
    image02 1 GiB          2

  9. Ceph Monitor 노드에서 클라이언트 노드로 Ceph 구성 파일을 복사합니다.

    scp /etc/ceph/ceph.conf root@CLIENT_NODE:/etc/ceph/

    예제

    [ceph: root@host01 /]# scp /etc/ceph/ceph.conf root@host02:/etc/ceph/
    
    root@host02's password:
    ceph.conf                                                                          100%  497   724.9KB/s   00:00

  10. Ceph Monitor 노드에서 클라이언트 노드로 관리자 인증 키를 복사합니다.

    구문

    scp /etc/ceph/ceph.client.admin.keyring root@CLIENT_NODE:/etc/ceph

    예제

    [ceph: root@host01 /]# scp /etc/ceph/ceph.client.admin.keyring root@host02:/etc/ceph/
    
    root@host02's password:
    ceph.client.admin.keyring                                                          100%  151   265.0KB/s   00:00

  11. 사용자의 인증 키를 Ceph Monitor 노드에서 클라이언트 노드로 복사합니다.

    구문

    scp /etc/ceph/ceph.client.USER_NAME.keyring root@CLIENT_NODE:/etc/ceph/

    예제

    [ceph: root@host01 /]# scp /etc/ceph/client.newuser.keyring root@host02:/etc/ceph/
    
    [ceph: root@host01 /]# scp /etc/ceph/client.testuser.keyring root@host02:/etc/ceph/

  12. 블록 장치 이미지를 매핑합니다.

    구문

    rbd map --name NAMESPACE IMAGE_NAME -n client.USER_NAME --keyring /etc/ceph/client.USER_NAME.keyring

    예제

    [ceph: root@host01 /]# rbd map --namespace namespace1 image01  -n  client.testuser --keyring=/etc/ceph/client.testuser.keyring
    
    /dev/rbd0
    
    [ceph: root@host01 /]# rbd map --namespace namespace2 image02 -n client.newuser --keyring=/etc/ceph/client.newuser.keyring
    
    /dev/rbd1

    동일한 풀에 있는 다른 네임스페이스의 사용자에게 액세스할 수 없습니다.

    예제

    [ceph: root@host01 /]# rbd map --namespace namespace2 image02  -n  client.testuser --keyring=/etc/ceph/client.testuser.keyring
    
    rbd: warning: image already mapped as /dev/rbd1
    rbd: sysfs write failed
    rbd: error asserting namespace: (1) Operation not permitted
    In some cases useful info is found in syslog - try "dmesg | tail".
    2021-12-06 02:49:08.106 7f8d4fde2500 -1 librbd::api::Namespace: exists: error asserting namespace: (1) Operation not permitted
    rbd: map failed: (1) Operation not permitted
    
    [ceph: root@host01 /]# rbd map --namespace namespace1 image01 -n client.newuser --keyring=/etc/ceph/client.newuser.keyring
    
    rbd: warning: image already mapped as /dev/rbd0
    rbd: sysfs write failed
    rbd: error asserting namespace: (1) Operation not permitted
    In some cases useful info is found in syslog - try "dmesg | tail".
    2021-12-03 12:16:24.011 7fcad776a040 -1 librbd::api::Namespace: exists: error asserting namespace: (1) Operation not permitted
    rbd: map failed: (1) Operation not permitted

  13. 장치를 확인합니다.

    예제

    [ceph: root@host01 /]# rbd showmapped
    
    id pool namespace      image   snap device
    0  rbd  namespace1  image01 -  /dev/rbd0
    1  rbd  namespace2   image02 -  /dev/rbd1

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.