보안

RBAC를 사용한 권한 부여 및 인증(2부)

권한 부여와 인증은 카우치베이스에게 매우 중요합니다. 3월에 새로운 역할 기반 액세스 제어(RBAC)에 대해 블로그에 포스팅한 적이 있습니다. 를 소개해 드렸습니다. 이번 달에는 이제 좀 더 자세히 살펴보고자 합니다. 4월 카우치베이스 서버 5.0 개발자 빌드 사용 가능 (반드시 '개발자' 탭을 클릭하세요).

인증 및 권한 부여

이전 버전의 카우치베이스에서는 버킷이 비밀번호로 보호되었습니다. 5.0에서는 권한 부여를 위한 버킷 비밀번호가 사라졌습니다. 더 이상 권한 부여를 위한 '버킷 비밀번호'를 만들 수 없습니다. 대신 해당 버킷에 대해 다양한 수준의 권한을 가진 사용자를 한 명 이상 만들어야 합니다. '고급 버킷 설정'에서도 더 이상 '비밀번호' 입력란이 없다는 것을 알 수 있습니다:

Create a new Couchbase bucket - no password for authorization

이제 더 이상 버킷에 대한 전체 액세스 권한을 부여하는 비밀번호를 나눠줄 필요가 없습니다. 버킷 권한을 세밀하게 조정하고 다양한 수준의 액세스 권한을 가진 여러 자격증명 세트를 제공할 수 있습니다. 이렇게 하면 보안을 강화하고 노출을 줄이는 데 도움이 됩니다.

참고: 관리자 사용자는 여전히 존재하며 모든 작업을 수행할 수 있는 권한이 있습니다. 따라서 관리자 계정으로 로그인한 상태에서 해당 버킷에서 N1QL 쿼리(예:)를 계속 실행할 수 있습니다. 하지만 이 계정은 클라이언트에서 사용해야 하는 계정이 아닙니다.

인증된 사용자 만들기

새 사용자를 만들려면 관리자(또는 관리자 역할이 있는 사용자)로 로그인해야 합니다. '보안' 탭으로 이동하면 사용자 목록을 볼 수 있고 새 사용자를 추가할 수 있습니다.

'사용자 추가'를 클릭하여 새 사용자를 만듭니다. 사용자에 대한 정보를 입력합니다. 사람(예: "Matt")에 대한 사용자를 만들거나 서비스(예: "MyAspNetApplication")에 대한 사용자를 만들 수 있습니다. 강력한 비밀번호를 입력한 다음 만들려는 사용자에게 적합한 역할을 선택합니다.

예를 들어, 실행 권한만 있는 사용자 "Matt"를 만들어 보겠습니다. 선택 쿼리를 실행합니다. "역할"에서 "쿼리 역할"을 확장한 다음 "쿼리 선택"을 확장하고 "mynewbucket"의 확인란을 선택한 다음 "저장"을 선택하여 사용자를 마무리합니다.

Create a new user with authorization to run a select query

실제 권한 부여

관리자 계정에서 로그아웃한 후 'Matt'로 다시 로그인하면 권한 수준이 심각하게 제한되어 있는 것을 확인할 수 있습니다. "대시보드", "서버", "설정", "쿼리"만 표시됩니다. "쿼리"로 이동하면 다음을 실행할 수 있습니다. 1 선택;

Execute SELECT query logged in with only Query authorization

더 복잡한 것을 시도하면 SELECT COUNT(1 FROM mynewbucket와 같은 오류 메시지가 표시됩니다:

따라서 로그인할 수 있는 올바른 인증이 있고, 실행할 수 있는 올바른 권한이 있는 것 같습니다. 선택로 이동했지만 실제로 데이터를 읽을 수 있는 올바른 권한이 없습니다. 관리자로 돌아가서 데이터 리더 권한을 추가하겠습니다.

User now has authorization for two roles

이 시점에서 '매트'로 로그인하면 다음과 같이 표시됩니다, SELECT COUNT(1 FROM mynewbucket; 가 작동합니다. 따라하는 경우 다음을 시도해 보세요. 내새버킷에서 *를 선택합니다;. 사용할 수 있는 인덱스가 없다는 오류 메시지가 표시됩니다. 하지만 인덱스 생성 다른 권한이 필요합니다. 이해가 되시겠죠?

새로운 N1QL 기능

새로운 인증 및 권한 부여 기능과 함께 몇 가지 새로운 N1QL 기능이 추가되었습니다.

역할 부여 및 취소

N1QL 명령으로 역할을 부여하고 취소할 수 있습니다. 이 작업을 수행하려면 관리자 액세스 권한이 필요합니다.

다음은 권한을 부여하는 간단한 예입니다. 선택 라는 버킷에서 "Matt"라는 사용자에 대한 쿼리 권한을 "mynewbucket"이라는 버킷에 부여합니다:

부여 역할 쿼리_선택(mynewbucket) TO Matt;

마찬가지로 비슷한 일을 하는 역할을 취소할 수도 있습니다:

역할 취소 쿼리_선택(mynewbucket) FROM Matt;

REST로 사용자 만들기

현재로서는 N1QL로 사용자를 만들 수 있는 방법이 없지만 REST API를 사용하여 이 작업을 수행할 수 있습니다. 전체 문서는 나중에 제공될 예정이지만 다음은 REST API로 사용자를 만드는 방법입니다:

  • PUT에 /설정/rbac/사용자/빌트인/ 엔드포인트.
  • 이 엔드포인트에 관리자 자격증명 사용(예: 기본 인증이 있는 관리자:비밀번호)
  • 본문에는 다음이 포함되어야 합니다:
    • 역할=
    • 비밀번호=

아래는 예시입니다. cURL을 사용할 수 있습니다, 우편 배달원, 피들러를 클릭하거나 선호하는 도구로 요청할 수 있습니다.

헤더: 콘텐츠 유형: application/x-www-form-urlencoded
권한 부여: 기본 QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==

Body: roles=query_select[mynew버킷],query_update[mynew버킷]&password=password

위 내용은 관리자 사용자/비밀번호가 관리자/비밀번호(따라서 기본 인증 토큰은 QWRtaW5pc3RyYXRvcjpwYXNzd29yZA==)인 것으로 가정합니다.

이를 실행하면 지정된 두 가지 권한을 가진 "restman"이라는 새 사용자가 표시됩니다.

Create a new user with a REST command

잠깐, 더 있습니다!

RBAC 시스템은 단일 블로그 게시물에서 다루기에는 너무 방대하며, 전체 문서가 준비 중입니다. 그 동안 미리 보기를 시작하는 데 도움이 될 수 있는 몇 가지 세부 사항을 소개합니다:

  • 여러분은 모두 옵션을 선택합니다. 버킷 단위로 사용자 역할을 부여하거나 다음에 대한 권한을 부여할 수 있습니다. 모두 버킷(아직 만들지 않은 버킷도 포함)을 만들 수 있습니다.
  • 이전 블로그 게시물에서 FTS 권한을 다루었지만 보기, 버킷 관리, 백업, 모니터링, DCP, 인덱스 등 거의 모든 것을 포괄하는 권한이 있습니다.
  • 더 이상 비밀번호로 버킷을 만들 수 없습니다. 대신 버킷과 같은 이름의 사용자를 만들고 '버킷 전체 액세스 권한'이라는 역할에 권한을 부여하는 것이 좋습니다. 이는 업그레이드 및 전환 목적으로 유용합니다.

여러분의 피드백을 기다리고 있습니다!

앞으로도 계속 지켜봐 주세요. 카우치베이스 블로그 를 참조하여 다음 개발자 빌드에 포함될 기능에 대한 정보를 확인하세요.

이러한 새로운 기능을 사용해보고 싶으신가요? 카우치베이스 서버 5.0 2017년 4월 개발자 빌드 다운로드 오늘!

5.0 릴리스가 빠르게 다가오고 있지만 여전히 여러분의 피드백을 기다리고 있습니다!

버그: 버그(깨지거나 예상대로 작동하지 않는 것)를 발견하면 다음에서 문제를 제기하세요. JIRA 시스템(issues.couchbase.com) 에 질문을 제출하거나 카우치베이스 포럼. 또는 문제에 대한 설명과 함께 저에게 연락해 주세요. 제가 기꺼이 도와드리거나 버그를 제출해 드리겠습니다(좋은 버그를 제출하면 만화처럼 큰 소파에서 셀카를 찍을 수 있게 해 주기도 합니다).

피드백: 어떻게 생각하는지 알려주세요. 마음에 들지 않는 부분이 있나요? 정말 좋아하는 것이 있나요? 빠진 부분이 있나요? 이제 카우치베이스 웹 콘솔에서 직접 피드백을 제공할 수 있습니다. 웹 콘솔에서 feedback icon 아이콘을 클릭합니다.

경우에 따라 피드백이 버그인지 제안인지 판단하기가 까다로울 수 있습니다. 최선의 판단을 내리거나 언제든지 저에게 연락하여 도움을 요청하세요. 여러분의 의견을 듣고 싶습니다. 저에게 연락하는 가장 좋은 방법은 다음 중 하나입니다. 트위터 @mgroves 또는 이메일을 보내주세요. matthew.groves@couchbase.com.

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

작성자

게시자 매튜 그로브스

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

댓글 하나

  1. 동기화 게이트웨이 연결 카우치베이스 서버 역할, FTS 실행 역할, 준비된 문 실행 역할 등 자주 사용하는 사용 사례에 대한 예제 역할 집합을 게시할 수도 있습니다.

    1. 문서화 예정 :)

      1부에서는 FTS 역할에 대해 설명했습니다: https://www.couchbase.com/authentication-authorization-rbac/

      동기화 게이트웨이 연결을 위한 역할이 따로 있는 것 같지는 않습니다. 아마도 클러스터 관리자나 버킷 관리자 역할 같은 것이 있을 것 같습니다.

      준비된 문은 아마도 쿼리_* 역할에서 다루게 될 것입니다.

  2. [...] Matthew의 역할 기반 액세스 제어 소개를 참조하세요: 1부 및 2부 [...]

  3. 새로운 기능을 사용하려면 클라이언트 애플리케이션을 업그레이드해야 합니다. 방법은 다음과 같습니다: https://www.couchbase.com/new-sdk-authentication/

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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