참고: 예제 및 DP2 바이너리는 2014년 6월 13일에 업데이트되었습니다.

소개

지난달에는 일반 키/값 연산 지원, 새로운 보기 쿼리 API, 그리고 가장 흥미로운 것은 새로운 쿼리 언어인 N1QL("니켈"로 발음)의 초기 버전을 선보이는 Couchbase .NET SDK 2.0의 개발자 프리뷰 1을 출시했습니다. 해당 릴리스에 대한 자세한 내용은 여기에서 확인할 수 있습니다. 이번 달에는 올해 말 출시 예정인 Couchbase Server 3.0을 지원하는 새로운 기능으로 가득 찬 Couchbase .NET SDK 2.0의 개발자 프리뷰 2(이하 DP2)를 출시합니다!

SSL 지원

현재 카우치베이스 서버와 클라이언트 SDK 간의 통신은 보안되지 않은 채널을 통해 이루어집니다. Couchbase Server 3.0에서는, 보안 소켓 레이어(SSL) 를 선택적으로 사용하면 안전한 암호화된 채널을 통해 이 통신을 허용할 수 있습니다.

SSL을 사용하려면 몇 가지 사항이 필요합니다:

  • Couchbase Server 3.0(올여름 말 베타 버전 제공 예정)
  • SSL 인증서(카우치베이스 서버 3.0에서 획득)
  • 클라이언트에서 구성 변경: 버킷 또는 클러스터 구성에서 useSsl = true 설정하기
  • 신뢰할 수 있는 루트 인증 기관 스토어에 인증서 저장(Windows에서)

이 시점에서는 클라이언트에서 SSL 지원을 사용 설정하기만 하면 됩니다. 이를 위해 클러스터 수준에서 또는 버킷별로 활성화할 수 있습니다. 클러스터 수준에서 SSL 지원을 설정하면 클러스터 내의 모든 버킷이 SSL을 사용하게 됩니다. 특정 버킷에서만 SSL을 사용하려면 개별 버킷에서 SSL을 사용하도록 구성하면 됩니다.

var configuration = 새 클라이언트 구성
{
UseSsl = true
};
CouchbaseCluster.초기화(구성)를 호출합니다;
var cluster = CouchbaseCluster.Get();

클러스터 수준에서 UseSSL을 true로 설정하면 버킷 수준에서 설정한 모든 구성이 재정의됩니다.

향후 포스팅에서 SSL 설정에 대해 자세히 다룰 예정입니다.

CRAM-MD5 인증

카우치베이스 서버는 간편 인증 및 보안 계층(SASL) 를 사용하여 서버와 버킷 수준에서 사용자 상호작용을 인증할 수 있습니다. SASL은 인증을 처리하기 위한 몇 가지 메커니즘을 제공합니다. 가장 간단한 형태는 사용자 이름과 비밀번호를 일반 텍스트 형식으로 클라이언트 간에 전송하는 일반 텍스트 메커니즘을 사용합니다.

네트워크를 통해 사용자 이름과 비밀번호를 일반 텍스트로 전송하는 것은 본질적으로 안전하지 않으며, 와이어 샤크와 같은 공개적으로 사용 가능한 도구를 사용하여 모든 종류의 필터링 및 스니핑 공격에 노출될 가능성이 있습니다. 하지만 작년에 Couchbase 2.2가 출시되면서 서버에서 CRAM-MD5 SASL 인증이 지원되었고, 이제 DP2를 통해 .NET SDK에서도 사용할 수 있습니다.

무엇 CRAM-MD5 SASL은 챌린지-응답 인증 메커니즘을 사용하여 클라이언트와 서버 간에 비밀번호가 해시되도록 합니다. 작동 방식은 클라이언트가 통신을 시작하고 서버가 챌린지로 응답하는 것입니다. 그런 다음 클라이언트는 챌린지를 사용하여 HMAC-MD5 의 비밀번호와 몇 가지 추가 정보를 확인하고 이를 다시 서버로 보냅니다. 서버는 동일한 챌린지를 사용하여 예상 응답을 비교합니다. 일치하면 인증이 계속되고 성공하면 클라이언트에 리소스에 대한 액세스 권한이 부여됩니다.

클라이언트에서 CRAM-MD5를 활성화하기 위해 아무것도 할 필요가 없다는 점에 유의하세요! 클라이언트가 통신을 시작할 때 지원되는 SASL 메커니즘 목록을 요청하고, 연결하려는 서버가 CRAM-MD5를 지원하는 경우 클라이언트는 해당 메커니즘을 사용합니다.

Web.Config 및 App.Config 구성 지원

DP1에서는 클러스터와 버킷을 프로그래밍 방식으로 구성하는 방법을 보여드렸습니다. DP2에서는 Web.config 및 App.config 구성에 대한 지원을 추가했습니다. 다음은 App.config 예시입니다:

<?xml version=”1.0″ encoding=”utf-8″ ?>
<configuration>
<configSections>
<sectionGroup name=”couchbaseClients”>

</sectionGroup>
</configSections>
<couchbaseClients>
<couchbase>
<servers>
<add uri=”http://localhost:8091″></add>
</servers>
<buckets>
<add name=”default” password=”” useSsl=”false”>
<connectionPool name=”custom” maxSize=”10″ minSize=”5″ waitTimeout=”5000″ shutdownTimeout=”3000″></connectionPool>
</add>
</buckets>
</couchbase>
</couchbaseClients>
<startup>
<supportedRuntime version=”v4.0″ sku=”.NETFramework,Version=v4.5″ />
</startup>
</configuration>

 

먼저 구성 파일에서 나중에 정의할 CouchbaseClientSection에 대한 configSections 아래에 sectionGroup을 만듭니다. sectionGroup 내에서 새 섹션을 만들고 이름을 지정합니다. 이 경우에는 "couchbase"라는 적절한 이름의 섹션을 사용합니다. "couchbase" 섹션 내에서 부트스트랩에 사용할 서버 집합과 작업하려는 버킷을 지정할 수 있습니다. 버킷은 버킷 인스턴스에 대한 내부 TCP 연결 풀을 구성하는 수단을 제공하는 connectionPool 요소를 지정합니다.

추가 운영자 지원

삽입 및 가져오기 작업은 DP1에서 출시되었으며, DP2에서는 지원되는 작업이 다음과 같이 확장되었습니다:

  • 업서트: 키가 있으면 업데이트하고, 없으면 추가합니다.
  • 바꾸기: 키가 있으면 업데이트하고 없으면 실패합니다.
  • 제거: 데이터베이스에서 키를 제거합니다.

또한, 이번 릴리스에는 SASL CRAM-MD5 지원을 위한 여러 가지 내부 작업이 포함되어 있습니다. 다음 달 중으로 베타 1의 CAS(확인 및 교체) 및 내구성 제약 조건 지원을 포함한 전체 작업 세트가 출시될 예정입니다.

비트 얻기

다음에서 DP2를 다운로드할 수 있습니다. 여기 아주 간단한 예가 있습니다. 여기. 모든 사전 릴리스 소프트웨어와 마찬가지로 버그가 있을 수 있으며 후속 릴리스에서 변경될 수 있으므로 프로덕션 환경에서 DP2를 사용하지 마세요! 버그를 발견하거나 피드백을 제공하고 싶거나(그러시길 바랍니다) 기능을 제안하고 싶은 경우 언제든지 댓글을 남기거나 NCBC 여기.

작성자

게시자 Jeff Morris, 수석 소프트웨어 엔지니어, Couchbase

Jeff Morris는 Couchbase의 수석 소프트웨어 엔지니어입니다. Couchbase에 입사하기 전에는 6년 동안 Source Interlink에서 엔터프라이즈 웹 아키텍트로 근무했습니다. Jeff는 Couchbase SDK 개발과 N1QL(쿼리 언어)과 통합하는 방법을 담당하고 있습니다.

댓글 남기기