3월의 개발자 빌드에서는 역할 기반 액세스 제어(RBAC) 내에서 인증 및 권한 부여에 대한 몇 가지 주요 변경 사항이 Couchbase Server에 적용되는 것을 확인할 수 있습니다. 이러한 변경 사항은 현재 진행 중인 작업으로, 개발자 빌드는 기본적으로 야간에 공개되는 빌드입니다. 하지만 RBAC에는 기대할 만한 좋은 기능이 몇 가지 있습니다!

이동 Couchbase Server 3월 5.0.0 개발자 릴리스 다운로드 오늘. 개발자 빌드(DB)를 받으려면 '개발자' 탭을 클릭하고 확인해 보세요. 정식 출시 전까지 아직 피드백을 주실 수 있는 시간이 있습니다.

이 블로그 게시물은 초기 빌드에 대해 작성하고 있으며, 릴리스를 받을 때까지 일부 사항이 사소한 방식으로 변경되거나 버그가 있을 수 있다는 점을 유념하세요.

인증 및 권한 부여

인증과 권한 부여의 차이점을 간단히 알려드리겠습니다:

  • 인증 사용자가 본인임을 확인하는 프로세스입니다.
  • 권한 부여 는 사용자가 수행하려는 작업을 수행할 수 있는 권한이 있는지 확인하는 프로세스입니다.

Couchbase를 사용해 본 적이 있다면 "관리자 웹 콘솔"이라고 부르는 로그인 방식에 익숙하실 것입니다.

Couchbase authentication screen

하지만 웹 콘솔은 관리자뿐만 아니라 개발자도 사용할 수 있습니다. 하지만 지금까지는 누가 로그인할 수 있는지, 그리고 (더 중요한 것은) 무엇을 할 수 있는지에 대해 Couchbase에 내장된 제어 기능이 많지 않았습니다.

그래서 Couchbase의 새로운 최고급 사용자 기능을 소개해드리고자 합니다.

사용자

여전히 전체 관리자 사용자가 있습니다. 이 로그인은 Couchbase를 처음 설치할 때 생성하는 로그인입니다. 이 사용자는 제한이 없으며 새 사용자 생성을 포함하여 모든 작업을 수행할 수 있습니다. 예를 들어, 전체 관리자는 탐색에서 "보안" 링크를 볼 수 있지만 다른 사용자는 볼 수 없습니다.

Security link to manage authentication and authorization

이제 이 보안 페이지에서 사용자를 추가, 편집 및 삭제할 수 있습니다.

A 사용자 는 사람을 식별할 수도 있지만 일부 서비스나 프로세스를 식별할 수도 있습니다. 예를 들어 ASP.NET 애플리케이션을 작성하는 경우 "웹 서비스"라는 제한된 권한 집합을 가진 사용자를 만들 수 있습니다. 따라서 해당 '사용자'에 대한 자격 증명은 사람이 아니라 ASP.NET 애플리케이션에 대한 자격 증명이 됩니다.

다음으로 "+ 사용자 추가"를 클릭하여 새 Couchbase 사용자를 추가해 보세요. "전체 텍스트 검색 관리자"라는 이름과 비밀번호, 단일 역할을 가진 "fts_admin"이라는 사용자를 만들어 보겠습니다: 여행 샘플 버킷의 FTS 관리자(FTS = 전체 텍스트 검색).

새 사용자 추가하기

다음은 해당 사용자를 추가하는 애니메이션입니다:

Add a new user with Couchbase authentication

위 애니메이션에 대한 몇 가지 참고 사항입니다:

  • '외부' 대신 'Couchbase'를 선택했습니다. '외부'는 LDAP 통합을 위한 것입니다. 향후 릴리스에서는 "Couchbase"(내부 인증)가 기본값이 될 가능성이 높다는 점에 유의하세요.
  • FTS 관리자는 사용자에게 전체 텍스트 검색을 생성, 수정, 삭제, 실행하는 등 모든 작업을 수행할 수 있는 권한을 부여합니다.
  • 여행 샘플 버킷에 대해서만 FTS 관리 권한을 부여했습니다. "모두"를 선택하면 나중에 생성된 버킷을 포함하여 모든 버킷에 대한 권한이 부여됩니다.
  • FTS 검색자 역할이 있는 사용자는 검색을 실행할 수 있는 권한만 있고 검색을 수정하거나 만들 수는 없습니다.

FTS 관리자와 FTS 검색기의 차이점에 대해서는 나중에 자세히 설명합니다.

새 사용자로 로그인하기

이제 이 사용자가 생성되었으므로 fts_admin으로 로그인할 수 있습니다. 이 사용자의 인증은 Couchbase 내에서 처리됩니다.

Login with Couchbase authentication

먼저, 위 애니메이션에서 fts_admin 사용자는 전체 관리자 사용자에 비해 훨씬 더 제한된 옵션 집합을 가지고 있음을 알 수 있습니다.

다음으로, 사용자가 비밀번호를 재설정할 수 있다는 점을 짚고 넘어갈 필요가 있습니다:

Reset password

FTS 인덱스 만들기

이미 fts_admin 사용자를 만들었으므로 FTS 관리자 역할만 가지고 있는 fts_searcher라는 다른 사용자를 생성합니다. FTS 검색기 역할을 수행합니다.

List of users

FTS용 REST API 사용

이 사용자들이 제가 부여한 역할에 의해 제한된다는 것을 보여주기 위해 REST API를 사용하겠습니다. REST API에 대한 복습이 필요한 경우 다음을 참조하세요. 전체 텍스트 검색 API 문서. 또한 이 글을 작성하는 현재 UI에 몇 가지 버그가 있기 때문에 REST API를 사용하고 있다는 점에 유의하세요.

먼저 새 전체 텍스트 검색(FTS) 인덱스를 만들어 보겠습니다. 다음을 통해 이 작업을 수행합니다. 우편 배달원를 사용할 수 있지만 curl 또는 피들러 또는 선호하는 REST 도구를 사용하세요.

FTS 인덱스 만들기

REST API로 인덱스를 생성하려면, 먼저 /api/index/ 엔드포인트.

  • 먼저, 여행 샘플 버킷에 '호텔' 유형에 대한 인덱스를 생성하여 다음과 같이 PUT하겠습니다. /api/index/hotels
  • 또한 URL에 자격 증명을 입력하여 기본 인증을 사용할 수 있습니다.
  • 또한 REST 엔드포인트는 포트 8094에서 사용할 수 있습니다.

마지막으로 PUT 요청의 URL은 다음과 같이 표시되어야 합니다:

PUT의 본문은 큰 JSON 객체입니다. 아래는 그 일부입니다. 아래에서 깃허브의 정식 버전 를 클릭해 직접 사용해 보세요.

일반적으로는 손으로 JSON을 만들 필요 없이 UI를 통해 만들 수 있습니다. 이 글에서는 FTS 자체보다는 새로운 인증 및 권한 부여 기능을 시연하는 것이 목표이기 때문에 FTS에 대해 자세히 설명하지는 않겠습니다.

권한 없이 인덱스를 만들려고 합니다.

fts_searcher를 사용자로 사용하고 있음을 알 수 있습니다. fts_searcher는 인덱스 생성 권한이 없어야 한다는 것을 알고 있으므로 403이 나올 것으로 예상했습니다. 그리고 이것이 바로 제가 받은 것입니다.

따라서 인증은 작동했지만 해당 사용자에게는 필요한 권한이 없습니다.

권한이 있는 인덱스 만들기

fts_admin으로 다시 시도해 보겠습니다:

그리고 'hotels'라는 인덱스가 아직 존재하지 않는다고 가정하면 응답 본문에는 200이 표시됩니다:

FTS 인덱스 사용

다음으로 REST API를 사용하여 인덱스에서 'breakfast'라는 단어를 검색해 보겠습니다.

먼저 /api/index/hotels/query 엔드포인트에 적절한 자격 증명과 포트 번호를 다시 입력합니다.

또는

두 사용자 모두 해당 인덱스를 사용하여 검색을 실행할 수 있어야 합니다.

다음으로 POST 본문에는 간단한 JSON 객체가 있어야 합니다. 이 역시 일반적으로 직접 만들 필요는 없으며, 선택한 SDK나 웹 콘솔 UI에서 자동으로 생성할 수 있습니다.

마지막으로 이 검색 요청의 결과는 대용량 JSON 응답이 됩니다. "히트" 내를 살펴보세요. 하위 문서 를 검색하여 검색이 제대로 되었는지 확인합니다. 다음은 '아침 식사'에 대한 검색의 일부입니다. 다시 말하지만 전체 결과는 깃허브에 있습니다..

이것은 미리보기이므로 버그가 있을 수 있습니다!

몇 가지 버그와 불완전한 기능이 있습니다.

  • 여기에는 일부러 FTS 역할을 표시했습니다. 다른 역할은 아직 완전히 형성되지 않았기 때문입니다. 직접 사용해 보시고 의견을 알려주시되, 최종 형태가 아니라는 점을 기억해 주세요. FTS는 거의 완성 단계에 있습니다.
  • 관리자가 아닌 사용자로 로그인하면 웹 콘솔이 비정상적으로 작동하는 문제를 몇 가지 보았습니다. 이 때문에 UI에 의존하는 대신 위의 REST 예제를 보여드렸습니다.
  • 마지막으로, 아직 발견되지 않은 다른 버그가 있을 수도 있습니다. 알려주세요! 문제를 제기하려면 JIRA 시스템(issues.couchbase.com) 에 질문을 제출하거나 카우치베이스 포럼. 또는 문제에 대한 설명과 함께 저에게 문의해 주세요. 기꺼이 도와드리거나 버그를 제출해 드리겠습니다(좋은 버그를 제출하면 Couchbase 담당자가 케이크 팝을 보내드립니다).

질문이 있으시면 다음 중 가장 좋은 방법으로 저에게 연락해 주세요. 트위터 @mgroves 또는 이메일을 보내주세요. matthew.groves@couchbase.com.

작성자

게시자 매튜 그로브스

Matthew D. Groves는 코딩을 좋아하는 사람입니다. C#, jQuery, PHP 등 무엇이든 풀 리퀘스트를 제출할 정도로 코딩을 좋아합니다. 90년대에 부모님의 피자 가게를 위해 QuickBASIC POS 앱을 만든 이후로 전문적으로 코딩을 해왔습니다. 현재 Couchbase의 선임 제품 마케팅 관리자로 일하고 있습니다. 여가 시간에는 가족과 함께 축구 경기를 관람하고 개발자 커뮤니티에 참여하며 시간을 보냅니다. 그는 .NET의 AOP, .NET의 프로 마이크로서비스, Pluralsight 저자, Microsoft MVP의 저자이기도 합니다.

댓글 하나

  1. [...] 그리고 인증은 Couchbase에 중요합니다. 지난 3월에는 Couchbase Server 5.0 개발자 빌드에서 선보이는 새로운 역할 기반 액세스 제어(RBAC) 기능에 대해 블로그에 포스팅한 적이 있습니다. 이번 달에는 [...] [...]

  2. [...] Server 5.0은 클라이언트 연결 코드에 약간의 변경이 필요한 몇 가지 훌륭한 새 인증 기능을 제공합니다. SDK의 구체적인 변경 사항 [...] [...]

  3. 안녕하세요 내 코드에서 잘 작동하는 PasswordAuthenticator를 추가합니다.
    내 웹 구성에서 세션 상태 공급자를 사용하면 4.5.1에서 잘 작동하지만 지금은 부트 스트랩 할 수 없습니다.
    CouchbaseNetClient -Pre를 사용하고 있습니다.
    어떤 아이디어
    내 구성은 다음과 같습니다.

  4. 안녕하세요 @doronps,

    워드프레스가 설정을 먹어버린 것 같습니다(아마도 XML이기 때문일 것입니다). 여기에서 Couchbase .NET SDK 포럼에 게시하는 것이 좋습니다: https://www.couchbase.com/forums/c/net-sdk

댓글 남기기