카우치베이스 서버

자격 증명을 위한 Azure 키 볼트

Azure 키 볼트는 사용자 이름과 암호를 저장하고 Azure에서 중요한 정보를 관리할 수 있습니다. Azure Key Vault가 정보를 저장하면 사용자가 지정한 Azure 서비스(사용자가 지정한 Azure 서비스만)만 해당 정보에 액세스할 수 있습니다.

이 블로그 게시물에서는 Azure Key Vault를 사용하여 Couchbase Server 자격 증명을 저장하고 Azure 함수에서 액세스하는 방법을 보여드리겠습니다.

데이터베이스 자격 증명 및 암호를 Azure Key Vault에 저장하는 방법에 대한 이 블로그 게시물은 Azure의 Couchbase에 대한 이전 블로그 게시물을 기반으로 작성되었으므로 계속 진행하기 전에 해당 게시물을 검토하는 것이 좋을 수 있습니다:

항상 그렇듯이 따라하고 싶으시다면 완성된 소스는 GitHub에서.

카우치베이스 서버 설치 및 설정

이 글의 나머지 부분에서는 Azure에 Couchbase Server가 설정되어 있다고 가정합니다. 위의 링크를 따라 이 프로세스에 대해 알아볼 수 있습니다(간단합니다!).

이 블로그 게시물을 위한 설정에서는 클러스터(관리자 자격 증명을 만들어야 함)와 "mybucket"이라는 단일 버킷을 만들었습니다.

저는 Azure에서 가장 쉽게 설정할 수 있는 Couchbase Enterprise Edition 5.5.2를 사용하고 있습니다. 커뮤니티 에디션 및 이전 버전의 Couchbase도 정상적으로 작동합니다.

Azure 키 볼트 만들기

Azure 키 볼트는 Azure Portal UI를 사용하여 만들거나 다음과 같이 만들 수 있습니다. 명령줄을 사용하여. 이전 게시물에서 Azure를 사용하는 카우치베이스 쿠버네티스 운영자명령줄을 사용하기도 했습니다. 아직 사용해보지 않으셨다면 Azure 명령줄 유틸리티를 사용해 보세요.

첫 번째 단계는 Azure 구독당 한 번만 실행하면 됩니다. 명령줄이 원하는 구독으로 설정되어 있다고 가정하고, 다음 명령을 사용하여 해당 구독에 Azure Key Vault를 등록합니다:

다음 단계는 볼트를 만드는 것입니다. 이 명령으로 리소스 그룹을 지정해야 합니다. 저는 미리 "KeyVaultDemo"라는 리소스 그룹을 만들었습니다. 또한 Azure의 미국 북중부 지역을 사용하기로 결정했습니다.

Azure를 완료하는 데 잠시 시간이 걸리지만 프로세스는 비동기식이기 때문에 명령줄 프롬프트가 즉시 나타납니다. 명령줄에서 진행 상황을 확인하는 방법을 알려줍니다.

이제 저장소 사용자 이름과 암호를 Azure Key Vault에서 만들었으므로 이제 비밀을 저장소에 저장할 수 있습니다. 다음 4가지 명령을 사용하여 볼트에 4가지 정보를 저장하겠습니다:

(참고: 일부 비밀 정보는 X를 사용하여 삭제했습니다.)

Azure 포털에서 비밀을 찾아볼 수 있습니다.

Azure Portal UI showing the Azure Key Vault

Azure Key Vault의 이점

더 진행하기 전에 다음 사항에 대해 이야기해 보겠습니다. Azure Key Vault를 사용하고 싶을 것입니다.

이전 블로그 게시물에서는 Couchbase 자격 증명을 앱 설정으로 저장했습니다. 앱 설정과 비교하여 Azure Key Vault는 다음과 같은 자격 증명 기능을 제공합니다:

  • 앱 설정은 값을 일반 텍스트로 저장합니다. Azure Key Vault는 값을 암호화하여 저장합니다.
  • 각 애플리케이션에는 고유한 앱 설정이 있습니다. Azure Key Vault를 사용하면 각 애플리케이션이 하나의 키 볼트를 공유할 수 있습니다.
  • Azure 키 저장소에는 값의 버전 기록이 저장되며 각 암호에는 (선택 사항) 활성화 날짜 및 만료 날짜가 있습니다.

Azure 키 볼트는 다음을 수행하지 않습니다. 대체 앱 설정으로 이동합니다. 자격 증명/암호/API 키와 같은 중요한 정보를 안전하게 저장하거나 여러 서비스에서 사용하려는 경우 Azure Key Vault를 사용하는 것이 가장 좋습니다.

Azure 키 볼트용 Azure 기능 준비하기

에서 Azure 함수에 대한 이전 블로그 게시물를 사용하여 앱 설정에 Couchbase 자격 증명을 저장했습니다. 이제 해당 자격 증명을 Azure Key Vault에 저장했으므로 Azure 함수 코드를 Azure Key Vault를 대신 사용하도록 변경하겠습니다.

먼저 Azure Functions 서비스를 만들었습니다. Azure 포털 UI에서 만들거나 Visual Studio 또는 Visual Studio Code에서 직접 만들 수 있습니다. 이번에는 Visual Studio Code를 사용했습니다(자세한 내용은 Azure 함수 확장). 제 Azure 함수 서비스의 이름은 다음과 같습니다. cbkeyvault데모.

다음으로, 제가 만든 각 시크릿에 대한 URI를 기록해 두었습니다. 4개의 비밀이 있으므로 4개의 URI(이 스크린샷에서와 같이 "비밀 식별자")가 필요합니다:

Azure Key Vault URIs

4개의 상수를 생성하고 이 값을 코드에 붙여넣었습니다. (나중에 앱 설정에 저장하고 싶을 수도 있습니다).

다음 단계는 NuGet으로 몇 가지 패키지를 설치하는 것입니다: Microsoft.Azure.Services.AppAuthentication 그리고 Microsoft.Azure.KeyVault. 다음은 명령줄을 사용하여 이러한 패키지를 설치하는 예제입니다:

Azure 키 저장소에서 암호 가져오기

다음 단계는 Azure Key Vault에서 비밀 값을 가져오는 코드를 작성하는 것입니다. 저는 재사용할 수 있는 작은 헬퍼 함수를 만들었습니다:

이전과 마찬가지로 지연 초기화 를 사용할 수 있습니다. 앱 설정을 사용할 때의 모습(이전)은 다음과 같습니다:

그리고 이 기능을 사용하도록 전환했을 때의 모습은 다음과 같습니다. GetBucket 헬퍼 메서드 (이후):

이 도우미 기능에 대해 한 가지 주의해야 할 중요한 사항이 있습니다. Azure 키 저장소에서 암호를 가져오는 것은 비동기식 작업입니다. 하지만 Lazy 는 동기식 람다를 기대합니다. 한 가지 옵션은 Stephen Cleary의 AsyncLazy. 또 다른 옵션 (제가 한 것처럼)은 비동기 메서드를 동기식으로 호출하는 것입니다. .결과.

어디에서 클라이언트 어디에서 왔나요? 쉽게 추가했습니다. 공용 정적 HttpClient client = 새로운 HttpClient(); 를 클래스에 추가합니다. 다음을 수행할 수 있습니다. GitHub에서 전체 소스 코드를 확인하세요..

저는 주로 Jeff Hollan의 훌륭한 블로그 게시물을 팔로우했습니다. Azure 함수에서 키 저장소 암호 가져오기 (그는 이벤트허브 연결 문자열을 저장했고 저는 카우치베이스 자격 증명을 저장하고 있다는 점을 제외하면요).

권한 부여

궁금하실 수도 있습니다: Matt, 샘플 코드에 실제 URI를 게시한 이유는 무엇인가요?

URI 자체는 민감한 비밀이 아니기 때문입니다. Azure에서 승인한 서비스만 실제로 이러한 URI에서 유용한 정보를 가져올 수 있습니다.

이 Azure Function 서비스를 인증하려면 두 가지 작업을 수행해야 합니다:

  1. 관리형 서비스 ID 사용 를 사용하도록 설정할 수 있습니다. Azure 포털에서 "관리되는 서비스 ID"를 클릭하고 "끄기"를 "켜기"로 변경하는 것만큼 간단합니다.

Managed Service Identity

  1. Azure Key Vault에 액세스 정책 추가하기. Azure 포털 UI에서 Azure Key Vault를 찾아 설정에서 '액세스 정책'을 클릭하고 새 액세스 정책을 추가하기만 하면 됩니다. 키, 암호, 인증서에 액세스하기 위한 세분화된 권한을 정의할 수 있습니다(Azure Key Vault에서도 저장할 수 있음). 저는 '가져오기' 권한만 필요했기 때문에 액세스 정책이 매우 간단했습니다:

Access policy

그게 다입니다. 하지만 이 중요한 단계가 없으면 키 저장소에서는 어떤 사람이나 애플리케이션도 키를 가져올 수 없습니다.

요약 및 다음 단계

이제 애플리케이션 설정에 저장된 Couchbase 자격 증명을 사용하여 Azure 함수(또는 기타 애플리케이션 서비스)를 배포하는 대신 해당 자격 증명(및 기타 민감한 정보)을 Azure Key Vault에 넣을 수 있습니다.

애플리케이션에 볼트에 있는 비밀에 액세스할 수 있는 권한을 부여하면 Azure는 다른 사람이 해당 비밀을 얻지 못하도록 차단합니다.

애플리케이션은 Azure 키 저장소에서 암호를 가져옵니다.

이 블로그 게시물에 대해 궁금한 점이 있으면 아래에 댓글을 남기거나 다음에서 저를 찾아주세요. 트위터 @mgroves.

Azure와 함께 Couchbase를 사용하는 경우 전체 카우치베이스 커뮤니티 에서 여러분의 경험을 듣고 싶습니다. 또는 이제 막 Azure를 사용하여 Couchbase를 시작하는 경우 다음을 수행할 수도 있습니다. 다른 커뮤니티 회원을 찾아 물어보기 를 통해 조언이나 높은 수준의 추천을 요청하세요.

Couchbase에 대한 구체적인 기술적인 질문이 있는 경우 다음을 확인하세요. 카우치베이스 포럼.

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

작성자

게시자 매튜 그로브스

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

댓글 남기기

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

구축 시작

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

카펠라 무료 사용

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

연락하기

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