보안

카우치베이스 7.0의 컬렉션을 위한 역할 기반 액세스 제어(RBAC) 보안 소개

Couchbase의 데이터 보안이 더욱 강화되었습니다.

Couchbase Server 7.0은 관계형 데이터 모델과 NoSQL 데이터 모델 간의 매핑을 개선하기 위해 범위 및 컬렉션을 도입했습니다. 하지만 7.0 릴리스에는 다음과 같은 보안을 강화하기 위한 몇 가지 추가 개선 사항도 포함되어 있습니다. 데이터 플랫폼. 보다 구체적으로, 이제 개별 범위 및 컬렉션 수준에서 역할 기반 액세스 제어(RBAC) 보안이 지원됩니다.

이 모든 것이 Couchbase 배포에 어떤 의미가 있을까요? 자세히 알아보겠습니다.

Couchbase의 기존 RBAC 보안 역할

Couchbase Server는 역할 기반 액세스 제어(RBAC) 보안을 통해 플랫폼에 대한 사용자 액세스를 세밀하게 제어할 수 있습니다. 버전 4.5부터 관리자용 그리고 버전 5.0 이후 모든 사용자. 카우치베이스 컬렉션은 카우치베이스 서버 6.5에서 개발자 미리 보기 기능으로 도입되었으며 다음과 같습니다. 이제 카우치베이스 서버 7.0에서 완전히 지원됩니다..

카우치베이스 RBAC 보안 역할 이전에는 두 가지 범주로 나뉘어 있었습니다:

    • 관리 및 글로벌: 이러한 역할은 클러스터 전체 권한과 연관되어 있습니다. 이러한 역할 중 일부는 클러스터 구성을 관리하고, 통계를 읽거나, 보안을 적용할 수 있는 관리자용입니다. 다른 역할은 특정 클러스터 전체 리소스에 대한 액세스가 필요한 사용자 및 사용자 정의 애플리케이션을 위한 것입니다.
    • 버킷당: 이러한 역할은 하나 이상의 버킷과 연결되어 있으며 버킷 설정의 읽기 및 쓰기, 데이터 액세스, 서비스, 인덱스 및 복제 절차의 관리를 지원합니다.

범위 및 컬렉션을 사용한 RBAC 예제

예를 들어 다음과 같은 이름의 버킷에 읽기 액세스 권한을 부여했을 수 있습니다. 여행 라는 이름의 사용자와 함께 신뢰할 수 있는 호텔 검색 엔진인 Acme Co. acme Linux 기반 클러스터의 명령줄 인터페이스에서 이와 같은 명령을 사용합니다. (다른 플랫폼을 사용하는 경우에는 경로를 조정해야 할 수도 있습니다.)

이렇게 하면 호텔 검색 파트너인 Acme(주)가 귀사가 저장하고 있는 모든 데이터에 액세스할 수 있습니다. 여행 카우치베이스 버킷. 여기에는 호텔뿐만 아니라 항공사 및 기타 여행 상품에 대한 주문, 재고 및 기타 데이터가 포함될 수 있습니다. 최소 권한 원칙에 따라 Acme Co.가 액세스할 수 있는 데이터를 제한하는 대신 다음에 대한 액세스를 허용한다면 어떨까요? 모두 회사에서 여행 데이터를 수집하고 있나요?

컬렉션을 사용하면 Couchbase 버킷의 JSON 문서를 먼저 범위로 구성할 수 있는데, 범위는 관계형 데이터베이스(RDBMS)의 스키마와 유사합니다. 그런 다음, 범위는 기존의 관계형 데이터베이스에서 테이블이 구조화되는 방식과 유사하게 개별 컬렉션으로 세분화됩니다.

각 범위 내의 네임스페이스는 다른 범위와 독립적이므로 서로 다른 범위 내에서 동일한 컬렉션 이름을 가질 수 있습니다. 마찬가지로 문서 키는 한 컬렉션 내에서만 고유해야 하므로 동일한 키를 가진 문서가 다른 컬렉션에 존재할 수 있습니다.

범위 및 컬렉션이 도입되기 전에는 다음과 같은 주요 접두사를 기준으로 Couchbase 문서를 정리하는 것이 일반적이었습니다. 주문::유럽::고객1. 컬렉션은 이전보다 훨씬 더 유연하게 문서 키를 사용할 수 있습니다.

아래는 여행 데이터 집합 예시에 대한 버킷, 범위 및 컬렉션 간의 관계를 시각적으로 나타낸 다이어그램입니다.

Buckets, Scopes and Collections within Couchbase

원활한 업그레이드와 이전 버전과의 호환성을 위해 이제 모든 버킷에는 _기본값 범위 및 _기본값 범위에는 _기본값 컬렉션. 컬렉션 _기본값 컬렉션은 이전 버전과의 호환성을 제공하며 버킷에 대한 직접 참조는 자동으로 다음과 같이 매핑됩니다. _기본값 수집. 또한 업그레이드 시 기존 데이터는 모두 자동으로 _기본값 컬렉션.

동안 _기본값 컬렉션은 이전 버전과의 호환성을 위한 메커니즘으로 제공되므로 새 애플리케이션은 컬렉션이라는 이름을 사용하여 작성해야 합니다. 보시다시피 컬렉션을 사용하면 데이터를 구성하는 추가 옵션을 사용할 수 있습니다. 카우치베이스 서버 클러스터.

위의 예로 돌아가서, 회사 전체의 모든 여행 데이터가 아닌 호텔 데이터만 Acme(주)가 볼 수 있도록 하려면 어떻게 해야 할까요? 이제 컬렉션을 사용하면 Acme의 액세스 범위를 원하는 범위로만 제한할 수 있습니다.

예를 들어, 사용 가능한 호텔 객실의 재고를 확인해야 하는 Acme 사의 경우, RBAC의 역할을 다음과 같이 좁힐 수 있습니다. 호텔 컬렉션 내부의 인벤토리 범위 내 여행 버킷.

역할 기반 액세스 제어(RBAC) 보안 설명

범위 및 컬렉션은 데이터베이스에서 역할 기반 액세스 제어와 어떻게 작동하나요?

버킷에 대한 액세스 권한이 있는 사용자는 해당 버킷의 하위 범위 및 컬렉션에 대한 액세스 권한을 상속받습니다. 마찬가지로, 범위 액세스 권한이 있는 사용자는 하위 컬렉션에 대한 액세스 권한은 상속하지만 부모 버킷에 대한 액세스 권한은 상속하지 않습니다.

다음은 새로운 역할 기반 보안이 컬렉션에서 작동하는 방식에 대한 분석입니다:

역할 설명
data_reader[*] 모든 범위와 컬렉션을 포함한 모든 버킷의 데이터를 클러스터 전체에서 읽을 수 있습니다.
data_reader[foo] 버킷 내에서만 모든 범위와 컬렉션의 데이터를 읽을 수 있습니다. foo.
data_reader[foo:bar] 범위 내 모든 컬렉션의 데이터를 읽을 수 있습니다. 버킷의 foo.
data_reader[foo:bar:baz] 컬렉션에서만 데이터를 읽을 수 있습니다. baz 에 있는 범위 버킷의 foo.
Role-based access control on Couchbase Scopes and Collections Example An example of RBAC security on Scopes and Collections in Couchbase

Acme Co의 경우 CLI 명령은 앞의 예와 비슷하지만 RBAC을 버킷으로 설정하는 대신 단일 범위 및/또는 컬렉션만 허용하도록 조정해야 합니다.

위의 예제에서, 우리는 다음과 같이 acme 사용자 액세스 호텔 컬렉션 내부의 인벤토리 범위이므로 이 경우 역할은 다음과 같습니다. 데이터_리더[여행:인벤토리:호텔].

범위 및 컬렉션을 정의할 수 있는 사용자 액세스 역할에는 어떤 것이 있는지 궁금할 것입니다. 전체 목록은 다음과 같습니다:

  • 애플리케이션 액세스
  • 데이터 리더
  • 데이터 라이터
  • 데이터 DCP 리더
  • 데이터 모니터링
  • 전체 텍스트 검색(FTS) 리더
  • 쿼리 선택
  • 쿼리 업데이트
  • 쿼리 삽입
  • 쿼리 삭제
  • 쿼리 색인 관리
  • 애널리틱스 선택
  • 또한 사용자가 버킷의 특정 범위에서 컬렉션을 추가하고 제거할 수 있도록 범위 내 컬렉션 관리 역할을 추가했습니다.
  • 카우치베이스 서버 7.0을 사용한 실전 RBAC 보안 예제

    이제 몇 가지 실제 사례를 살펴볼 차례입니다. 카우치베이스 서버 7.0에서 직접 체험해 보세요.. 이전과 마찬가지로 저는 Linux 기반 클러스터를 사용하고 있으므로 다른 플랫폼을 사용하는 경우 경로를 조정해야 할 수도 있습니다. 이 예제에서는 카우치베이스 데이터, 쿼리 및 인덱스 서비스를 실행해야 합니다.

    먼저 여행 샘플 버킷을 클러스터에 추가합니다.

    그런 다음 버킷에 컬렉션을 추가로 만듭니다. 여기서는 _기본값 범위. 새 컬렉션을 만들려면 버킷 관리자 사용자(또는 그 이상의 권한)를 사용해야 합니다.

    아래 그림과 같이 Couchbase Server 웹 UI에서도 이러한 컬렉션을 볼 수 있습니다.

    Screenshot of Couchbase Server 7.0 Buckets

    카우치베이스 서버 7.0의 버킷 보기

    Couchbase Server 7.0 Scopes and Collections Screenshot

    카우치베이스 서버 7.0의 범위 및 컬렉션 보기

    다음으로 문서에 이미 존재하는 필드를 기반으로 각 컬렉션에 데이터를 로드합니다. 유형. 문서 유형 필드가 방금 만든 새 컬렉션과 일치합니다. 데이터는 다음을 사용하여 컬렉션에 복사됩니다. N1QL 쿼리 언어 명령줄에서 입력합니다. 참고: 백틱과 같이 셸이 실행하려고 시도하는 이스케이프 문자를 주의해야 합니다.

    서식을 지정하거나 명령이 실행되는 데 문제가 있는 경우 명령이 어떻게 표시되는지 보여주는 예제 이미지를 참조하세요.

    Screenshot of N1QL query for Hotel Collection Populate

    에 기본 인덱스를 만들어 보겠습니다. 호텔 관리자로 컬렉션을 수집합니다:

    이제 모든 사용자 및 역할의 목록을 가져와 보겠습니다:

    위에서 볼 수 있듯이 현재 기본 제공 관리자만 있고 추가 사용자는 없습니다. 따라서 명령의 출력은 예상대로 비어 있습니다.

    다음으로, John Doe라는 사용자를 만들어 보겠습니다. John에게 데이터 리더 역할과 쿼리 선택 역할을 모두 부여하겠습니다. 호텔 컬렉션에 있는 _기본값 범위.

    이 작업은 웹 UI에서도 수행할 수 있습니다.

    Couchbase Server 7.0 screenshot of user roles

    카우치베이스 서버 7.0의 RBAC 사용자 역할

    그런 다음 신원 미상의 사용자에 대한 특정 권한이 있는지 확인합니다. 호텔 컬렉션. John이 전체 여행 샘플 버킷에서 읽으려고 하면 권한 거부 오류가 발생합니다.

    이번에는 John이 된 것처럼 5개의 호텔을 선택해 보겠습니다. 호텔 수집 여행 샘플 버킷, John does 에 액세스할 수 있습니다.

    위의 예와 같이 범위 및 컬렉션 제한을 사용하여 데이터 리더 및 쿼리 선택 역할에 자격을 부여할 수 있습니다.

    새로운 역할 기반 액세스 제어 기능으로 컬렉션을 안전하게 보호하세요!

    Couchbase 7.0 릴리스에 대한 추가 리소스

    Couchbase의 RBAC 보안을 직접 체험해보고 싶으신가요?
    오늘 카우치베이스 체험하기

     
     
     

    이 문서 공유하기
    받은 편지함에서 카우치베이스 블로그 업데이트 받기
    이 필드는 필수 입력 사항입니다.

    작성자

    게시자 Ian McCloy, 제품 관리 이사

    이안 맥클로이는 카우치베이스의 플랫폼 및 보안 제품 관리 그룹 디렉터로 영국에 거주하고 있습니다. 그의 전담 팀은 Couchbase Server와 SaaS 데이터베이스인 Capella의 안정성, 가용성, 서비스 가능성 및 보안 아키텍처를 담당하고 있습니다. 이 팀은 또한 Couchbase Kubernetes 자율 운영자와 같은 클라우드 네이티브 플랫폼을 소유하고 있습니다. Ian은 소프트웨어 엔지니어, 기술 지원 엔지니어, 품질 보증 엔지니어, 시스템 관리자 등 다양한 경력을 보유하고 있습니다. 20년 경력의 대부분을 글로벌 기술 팀을 이끌었으며 정보 보안, 가상화 및 하드웨어 설계 분야에서 여러 특허를 보유하고 있습니다. https://www.linkedin.com/in/ianmccloy/

    댓글 하나

    1. 안녕하세요~ 글 올려주셔서 감사합니다.
      여기에 오타가 있는 것 같아서 댓글을 남깁니다.
      //
      기본 컬렉션에 있는 호텔 컬렉션에서 데이터 리더 및 쿼리 선택 역할이 있는 사용자 John Doe를 만들어 보겠습니다.
      //

      기본 컬렉션 >>> _기본 범위라고 생각합니다.

      맞나요?

      다시 한 번 유용한 게시물을 보내주셔서 감사합니다.

    2. Ian McCloy, 수석 제품 관리자, Couchbase 11월 20, 2020에서 5:25 오전

      안녕하세요 ckdgur님. 블로그 게시물이 도움이 되었다니 기쁘네요. 좋은 지적 감사합니다. 실제로 오타가 있었습니다. 지금 수정했습니다. 또한 Couchbase 7 베타를 사용해 주셔서 감사합니다!

    3. 안녕하세요

      '애플리케이션 액세스'에 범위 및 컬렉션을 정의할 수 있는지 확인할 수 있나요?

      문서에서 애플리케이션 액세스는 full_bucket_access로 번역되며 더 이상 사용되지 않으며 제가 시도했을 때 버킷 이름만 지원되었습니다.

      다음 역할을 알 수 없거나, 잘못되었거나, 역할 매개변수가 정의되지 않았으므로 사용자에게 역할을 할당할 수 없습니다: [bucket_full_access[travel-sample:inventory]]""

    댓글 남기기

    카우치베이스 카펠라를 시작할 준비가 되셨나요?

    구축 시작

    개발자 포털에서 NoSQL을 살펴보고, 리소스를 찾아보고, 튜토리얼을 시작하세요.

    카펠라 무료 사용

    클릭 몇 번으로 Couchbase를 직접 체험해 보세요. Capella DBaaS는 가장 쉽고 빠르게 시작할 수 있는 방법입니다.

    연락하기

    카우치베이스 제품에 대해 자세히 알고 싶으신가요? 저희가 도와드리겠습니다.