인증 및 권한 부여가 Couchbase Server 5.0에서 크게 개선되었습니다. 개발자 프리뷰에서 새로운 RBAC 기능에 대해 이미 블로그에 소개한 바 있습니다.

이제 Couchbase Server 5.0 베타가 출시되었으므로 이러한 새로운 기능과 함께 Couchbase .NET SDK를 사용하는 방법에 대한 보다 심층적인 블로그 게시물을 작성하고 있습니다.

이 블로그 게시물에 사용된 전체 코드 샘플은 다음과 같습니다. 깃허브에서 사용 가능.

버킷 만들기

이전 글에서 언급했듯이 비밀번호가 있는 버킷의 시대는 지났습니다. 미래는 특정 버킷에 대한 특정 권한을 가진 사용자, 즉 사용자들의 몫입니다.

버킷을 만드는 것부터 시작하겠습니다. Couchbase UI에서 Couchbase를 설치할 때 생성한 관리자로 로그인합니다. "버킷"으로 이동하여 "버킷 추가"(오른쪽 상단)를 클릭합니다. "데이터 버킷 추가" 대화 상자가 표시됩니다. "고급 버킷 설정"에도 더 이상 "비밀번호" 필드가 없다는 것을 알 수 있습니다.

Add new bucket - no authentication options anymore

버킷에 이름과 약간의 메모리를 지정하고 '버킷 추가'를 클릭합니다. 이제 버킷이 생겼습니다. 하지만 UI의 관리자 외에는 아직 아무도 이 버킷에 액세스할 수 없습니다.

사용자 만들기

이 버킷에 액세스하려면 사용자를 만들어야 합니다. Couchbase 5.0에서 '사용자'는 완전히 새로운 기능으로, Couchbase Server에 더 풍부한 인증 및 권한 부여 기능을 제공합니다.

관리자로 로그인한 상태에서 '보안'으로 이동하여 사용자 목록을 확인합니다. '사용자 추가'(오른쪽 상단)를 클릭합니다.

Adding a new user for authentication and authorization

원하는 이름과 비밀번호로 사용자를 만듭니다. 사용자에게 어떤 역할을 부여할지, 어떤 버킷에 대해 어떤 역할을 부여할지(해당되는 경우) 선택할 수 있습니다. 이 사용자에게 방금 만든 버킷(예: "mybucket")에 대해 데이터 작성자 및 데이터 리더 역할을 부여하되, 쿼리 역할은 부여하지 않겠습니다.

Adding authorization for data read and data write

사용자가 추가되면 역할 위로 마우스를 가져가면 해당 역할의 의미에 대한 설명을 볼 수 있습니다.

Authorization tool tip

Couchbase .NET SDK를 사용한 인증 및 권한 부여

이제 버킷과 사용자가 생겼으니 .NET SDK에서 이를 사용하는 방법을 살펴보겠습니다.

먼저 클러스터 객체입니다.

클러스터가 있지만 프로그램이 아직 인증되지 않았습니다. 클러스터에 비밀번호 인증기 개체를 사용하여 자격 증명을 지정합니다. 그런 다음 해당 개체를 클러스터의 인증 메서드를 사용해야 합니다. 아래 예제에서는 잘못된 자격 증명을 사용하고 있습니다.

이제 다음과 같은 작업을 수행하려고 하면 OpenBucket 가 클러스터에 있으면 예외가 발생합니다.

Error in authentication

이제 올바른 자격 증명을 사용하여 다시 시도해 보겠습니다. 인증이 작동합니다. 하지만 다음에는 인증에 대해 이야기해 보겠습니다.

이 사용자에게 데이터 작성자 및 데이터 리더 역할(mybucket용)만 부여했음을 기억하세요. 따라서 지금 인증하고 문서를 삽입하면 작동합니다.

Console output when authentication and authorization are valid

하지만 예를 들어, 내가 실행하려고 하면 N1QL(JSON용 SQL) 쿼리를 입력하면 실패합니다. 이는 해당 사용자에게 쿼리를 실행할 권한이 없기 때문입니다.

저는 그냥 간단한 COUNT(1) 집계 쿼리를 실행합니다. 해당 사용자는 권한이 없으므로 다음과 같은 내용이 표시됩니다:

No authorization for running a query

한 가지 더

Couchbase Server 4.x에서 Couchbase Server 5.0으로 업그레이드할 때 이것이 미칠 영향이 걱정되신다면 여기에 팁이 있습니다. 버킷과 이름이 같은 사용자(예: "foo"라는 버킷과 "foo"라는 사용자)를 만드는 경우, 버킷 비밀번호를 여전히 요구하는 이전 Couchbase .NET API는 이전과 동일하게 작동합니다. 지금은 해당 사용자에게 "클러스터 관리자" 역할을 부여하기만 하면 됩니다. 이는 연대를 통한 역할 접근 방식을 사용하도록 시스템을 재설계할 때까지 임시로 해결할 수 있는 좋은 방법입니다.

요약

Couchbase Server 5.0이 베타 버전으로 출시되었습니다! 이러한 역할 기반 인증(RBAC) 기능 덕분에 Couchbase는 문서 데이터베이스 보안의 선두주자가 되었고, 개인적으로도 Couchbase가 이러한 방향으로 나아가고 있다는 사실이 매우 기쁘게 생각합니다. 보안은 중요하지만 개발자들이 간과하는 경우가 너무 많습니다.

궁금한 점이 있으시면 카우치베이스 포럼에서 질문하세요.를 클릭하고 아래에 댓글을 남기거나 트위터 @mgroves에서 핑하기.

작성자

게시자 매튜 그로브스

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

댓글 남기기