3월의 개발자 빌드에서는 역할 기반 액세스 제어(RBAC) 내에서 인증 및 권한 부여에 대한 몇 가지 주요 변경 사항이 Couchbase Server에 적용되는 것을 확인할 수 있습니다. 이러한 변경 사항은 현재 진행 중인 작업으로, 개발자 빌드는 기본적으로 야간에 공개되는 빌드입니다. 하지만 RBAC에는 기대할 만한 좋은 기능이 몇 가지 있습니다!
이동 Couchbase Server 3월 5.0.0 개발자 릴리스 다운로드 오늘. 개발자 빌드(DB)를 받으려면 '개발자' 탭을 클릭하고 확인해 보세요. 정식 출시 전까지 아직 피드백을 주실 수 있는 시간이 있습니다.
이 블로그 게시물은 초기 빌드에 대해 작성하고 있으며, 릴리스를 받을 때까지 일부 사항이 사소한 방식으로 변경되거나 버그가 있을 수 있다는 점을 유념하세요.
인증 및 권한 부여
인증과 권한 부여의 차이점을 간단히 알려드리겠습니다:
- 인증 사용자가 본인임을 확인하는 프로세스입니다.
- 권한 부여 는 사용자가 수행하려는 작업을 수행할 수 있는 권한이 있는지 확인하는 프로세스입니다.
Couchbase를 사용해 본 적이 있다면 "관리자 웹 콘솔"이라고 부르는 로그인 방식에 익숙하실 것입니다.
하지만 웹 콘솔은 관리자뿐만 아니라 개발자도 사용할 수 있습니다. 하지만 지금까지는 누가 로그인할 수 있는지, 그리고 (더 중요한 것은) 무엇을 할 수 있는지에 대해 Couchbase에 내장된 제어 기능이 많지 않았습니다.
그래서 Couchbase의 새로운 최고급 사용자 기능을 소개해드리고자 합니다.
사용자
여전히 전체 관리자 사용자가 있습니다. 이 로그인은 Couchbase를 처음 설치할 때 생성하는 로그인입니다. 이 사용자는 제한이 없으며 새 사용자 생성을 포함하여 모든 작업을 수행할 수 있습니다. 예를 들어, 전체 관리자는 탐색에서 "보안" 링크를 볼 수 있지만 다른 사용자는 볼 수 없습니다.
이제 이 보안 페이지에서 사용자를 추가, 편집 및 삭제할 수 있습니다.
A 사용자 는 사람을 식별할 수도 있지만 일부 서비스나 프로세스를 식별할 수도 있습니다. 예를 들어 ASP.NET 애플리케이션을 작성하는 경우 "웹 서비스"라는 제한된 권한 집합을 가진 사용자를 만들 수 있습니다. 따라서 해당 '사용자'에 대한 자격 증명은 사람이 아니라 ASP.NET 애플리케이션에 대한 자격 증명이 됩니다.
다음으로 "+ 사용자 추가"를 클릭하여 새 Couchbase 사용자를 추가해 보세요. "전체 텍스트 검색 관리자"라는 이름과 비밀번호, 단일 역할을 가진 "fts_admin"이라는 사용자를 만들어 보겠습니다: 여행 샘플 버킷의 FTS 관리자(FTS = 전체 텍스트 검색).
새 사용자 추가하기
다음은 해당 사용자를 추가하는 애니메이션입니다:
위 애니메이션에 대한 몇 가지 참고 사항입니다:
- '외부' 대신 'Couchbase'를 선택했습니다. '외부'는 LDAP 통합을 위한 것입니다. 향후 릴리스에서는 "Couchbase"(내부 인증)가 기본값이 될 가능성이 높다는 점에 유의하세요.
- FTS 관리자는 사용자에게 전체 텍스트 검색을 생성, 수정, 삭제, 실행하는 등 모든 작업을 수행할 수 있는 권한을 부여합니다.
- 여행 샘플 버킷에 대해서만 FTS 관리 권한을 부여했습니다. "모두"를 선택하면 나중에 생성된 버킷을 포함하여 모든 버킷에 대한 권한이 부여됩니다.
- FTS 검색자 역할이 있는 사용자는 검색을 실행할 수 있는 권한만 있고 검색을 수정하거나 만들 수는 없습니다.
FTS 관리자와 FTS 검색기의 차이점에 대해서는 나중에 자세히 설명합니다.
새 사용자로 로그인하기
이제 이 사용자가 생성되었으므로 fts_admin으로 로그인할 수 있습니다. 이 사용자의 인증은 Couchbase 내에서 처리됩니다.
먼저, 위 애니메이션에서 fts_admin 사용자는 전체 관리자 사용자에 비해 훨씬 더 제한된 옵션 집합을 가지고 있음을 알 수 있습니다.
다음으로, 사용자가 비밀번호를 재설정할 수 있다는 점을 짚고 넘어갈 필요가 있습니다:
FTS 인덱스 만들기
이미 fts_admin 사용자를 만들었으므로 FTS 관리자 역할만 가지고 있는 fts_searcher라는 다른 사용자를 생성합니다. FTS 검색기 역할을 수행합니다.
FTS용 REST API 사용
이 사용자들이 제가 부여한 역할에 의해 제한된다는 것을 보여주기 위해 REST API를 사용하겠습니다. REST API에 대한 복습이 필요한 경우 다음을 참조하세요. 전체 텍스트 검색 API 문서. 또한 이 글을 작성하는 현재 UI에 몇 가지 버그가 있기 때문에 REST API를 사용하고 있다는 점에 유의하세요.
FTS 인덱스 만들기
REST API로 인덱스를 생성하려면, 먼저 /api/index/
엔드포인트.
- 먼저, 여행 샘플 버킷에 '호텔' 유형에 대한 인덱스를 생성하여 다음과 같이 PUT하겠습니다.
/api/index/hotels
- 또한 URL에 자격 증명을 입력하여 기본 인증을 사용할 수 있습니다.
- 또한 REST 엔드포인트는 포트 8094에서 사용할 수 있습니다.
마지막으로 PUT 요청의 URL은 다음과 같이 표시되어야 합니다:
PUT의 본문은 큰 JSON 객체입니다. 아래는 그 일부입니다. 아래에서 깃허브의 정식 버전 를 클릭해 직접 사용해 보세요.
1 2 3 4 5 6 7 8 9 |
{ "type": "전체 텍스트 인덱스", "name": "hotels", "sourceType": "couchbase", "sourceName": "travel-sample", // ... snip ... } |
일반적으로는 손으로 JSON을 만들 필요 없이 UI를 통해 만들 수 있습니다. 이 글에서는 FTS 자체보다는 새로운 인증 및 권한 부여 기능을 시연하는 것이 목표이기 때문에 FTS에 대해 자세히 설명하지는 않겠습니다.
권한 없이 인덱스를 만들려고 합니다.
fts_searcher를 사용자로 사용하고 있음을 알 수 있습니다. fts_searcher는 인덱스 생성 권한이 없어야 한다는 것을 알고 있으므로 403이 나올 것으로 예상했습니다. 그리고 이것이 바로 제가 받은 것입니다.
1 2 3 4 5 6 |
{ "메시지": "금지됨. 사용자에게 다음 권한 중 하나가 필요합니다.", "권한": [ "cluster.bucket[travel-sample].fts!write" ] } |
따라서 인증은 작동했지만 해당 사용자에게는 필요한 권한이 없습니다.
권한이 있는 인덱스 만들기
fts_admin으로 다시 시도해 보겠습니다:
그리고 'hotels'라는 인덱스가 아직 존재하지 않는다고 가정하면 응답 본문에는 200이 표시됩니다:
1 2 3 |
{ "status": "ok" } |
FTS 인덱스 사용
다음으로 REST API를 사용하여 인덱스에서 'breakfast'라는 단어를 검색해 보겠습니다.
먼저 /api/index/hotels/query
엔드포인트에 적절한 자격 증명과 포트 번호를 다시 입력합니다.
또는
두 사용자 모두 해당 인덱스를 사용하여 검색을 실행할 수 있어야 합니다.
다음으로 POST 본문에는 간단한 JSON 객체가 있어야 합니다. 이 역시 일반적으로 직접 만들 필요는 없으며, 선택한 SDK나 웹 콘솔 UI에서 자동으로 생성할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 |
{ "설명": true, "fields": [ "*" ], "하이라이트": {}, "query": { "query": "아침 식사" } } |
마지막으로 이 검색 요청의 결과는 대용량 JSON 응답이 됩니다. "히트" 내를 살펴보세요. 하위 문서 를 검색하여 검색이 제대로 되었는지 확인합니다. 다음은 '아침 식사'에 대한 검색의 일부입니다. 다시 말하지만 전체 결과는 깃허브에 있습니다..
1 2 3 4 5 6 7 8 |
// ... snip ... "reviews.content": [ "TV를 보려고요. <매일 아침 타임즈 피카윤과 함께 조식이 제공되었습니다. 아래층 파티오에서 조식을 먹었는데 커피가 정말 맛있었어요. 대륙식 조식은 정말 맛있었어요. ] }, // ... snip ... |
이것은 미리보기이므로 버그가 있을 수 있습니다!
몇 가지 버그와 불완전한 기능이 있습니다.
- 여기에는 일부러 FTS 역할을 표시했습니다. 다른 역할은 아직 완전히 형성되지 않았기 때문입니다. 직접 사용해 보시고 의견을 알려주시되, 최종 형태가 아니라는 점을 기억해 주세요. FTS는 거의 완성 단계에 있습니다.
- 관리자가 아닌 사용자로 로그인하면 웹 콘솔이 비정상적으로 작동하는 문제를 몇 가지 보았습니다. 이 때문에 UI에 의존하는 대신 위의 REST 예제를 보여드렸습니다.
- 마지막으로, 아직 발견되지 않은 다른 버그가 있을 수도 있습니다. 알려주세요! 문제를 제기하려면 JIRA 시스템(issues.couchbase.com) 에 질문을 제출하거나 카우치베이스 포럼. 또는 문제에 대한 설명과 함께 저에게 문의해 주세요. 기꺼이 도와드리거나 버그를 제출해 드리겠습니다(좋은 버그를 제출하면 Couchbase 담당자가 케이크 팝을 보내드립니다).
질문이 있으시면 다음 중 가장 좋은 방법으로 저에게 연락해 주세요. 트위터 @mgroves 또는 이메일을 보내주세요. matthew.groves@couchbase.com.
[...] 그리고 인증은 Couchbase에 중요합니다. 지난 3월에는 Couchbase Server 5.0 개발자 빌드에서 선보이는 새로운 역할 기반 액세스 제어(RBAC) 기능에 대해 블로그에 포스팅한 적이 있습니다. 이번 달에는 [...] [...]
[...] Server 5.0은 클라이언트 연결 코드에 약간의 변경이 필요한 몇 가지 훌륭한 새 인증 기능을 제공합니다. SDK의 구체적인 변경 사항 [...] [...]
[…] https://www.couchbase.com/authentication-authorization-rbac/ […]
안녕하세요 내 코드에서 잘 작동하는 PasswordAuthenticator를 추가합니다.
내 웹 구성에서 세션 상태 공급자를 사용하면 4.5.1에서 잘 작동하지만 지금은 부트 스트랩 할 수 없습니다.
CouchbaseNetClient -Pre를 사용하고 있습니다.
어떤 아이디어
내 구성은 다음과 같습니다.
안녕하세요 @doronps,
워드프레스가 설정을 먹어버린 것 같습니다(아마도 XML이기 때문일 것입니다). 여기에서 Couchbase .NET SDK 포럼에 게시하는 것이 좋습니다: https://www.couchbase.com/forums/c/net-sdk