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


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.