오늘날과 같이 빠르게 변화하는 세상에서 데이터 보안은 특히 민감한 정보를 다룰 때 가장 중요합니다. 데이터 보안의 핵심 요소는 데이터 도난을 방지하는 인증입니다. 해시코프 볼트는 기업이 카우치베이스 데이터베이스에 대한 액세스를 더욱 안전하게 보호할 수 있는 기술 중 하나입니다.
해시코프가 데이터베이스 보안을 더욱 강화하는 데 어떻게 도움이 되나요?
해시코프 볼트는 사용자 이름과 비밀번호와 같은 데이터베이스 자격 증명을 안전하게 저장 및 관리하고 필요할 때 새 자격 증명을 동적으로 생성할 수 있습니다. 따라서 실수로 또는 고의로 자격 증명이 노출될 위험이 줄어들고, 더 이상 필요하지 않은 자격 증명을 쉽게 해지하거나 교체할 수 있습니다.
또한 Vault는 모든 데이터베이스 액세스 및 자격증명 사용에 대한 자세한 감사 로그를 제공하여 조직이 다양한 규제 요건을 준수하고 의심스러운 활동을 모니터링하는 데 도움을 줄 수 있습니다.
이 튜토리얼 블로그 게시물에서는 카우치베이스 서버와 해시코프 볼트를 통합하는 방법을 살펴보겠습니다.
1단계: Vault 설정
첫 번째 단계는 해시코프 볼트 인스턴스를 설정하는 것입니다. 공식 웹사이트에서 Vault 바이너리를 다운로드할 수 있으며, Homebrew나 Chocolatey와 같은 패키지 관리자를 사용하거나 Docker를 사용하여 Vault를 실행할 수 있습니다. 이 블로그 포스트에서는 Docker를 사용하여 환경을 설정하겠습니다.
-
- Docker 네트워크 설정
1 |
도커 네트워크 create dev_couchbase |
-
- Docker 컨테이너에서 Vault 시작하기. 개발자 모드에서 루트 비밀번호를 사용하여 Vault를 시작하려면 다음과 같이 하세요. 비밀번호아래 명령을 사용하면 됩니다.
1 2 3 4 5 6 7 |
도커 실행 --cap-추가=IPC_LOCK --이름="couchbase_vault" --rm \ --네트워크 dev_카우치베이스 \ -e 볼트_개발_루트_토큰_ID=비밀번호 \ -e 볼트_개발_듣기_주소=0.0.0.0:8200 \ -e VAULT_ADDR=http://0.0.0.0:8200 \ -p 8200:8200 \ 볼트 서버 -dev |
위의 Docker 명령은 개발 모드에서 Vault 서버를 시작하므로 프로덕션 사용에는 권장되지 않습니다. 서버가 종료될 때 지워지는 인메모리 데이터 저장소를 생성합니다. 그러나 테스트 목적으로는 적합합니다.
볼트 UI는 다음 위치에서 실행 중입니다. http://localhost:8200.
루트 토큰으로 지정한 '비밀번호'를 토큰으로 사용해 Vault UI에 로그인할 수 있습니다.
2단계: Vault 구성 확인
Vault 서버가 가동되고 실행되면 Couchbase 데이터베이스 플러그인이 설치되어 있는지 확인해야 합니다.
다음 명령을 실행하여 플러그인이 설치되어 있는지 확인합니다:
1 |
도커 exec -it "couchbase_vault" /bin/ash -c "볼트 로그인 비밀번호 && 볼트 플러그인 목록" | grep 카우치베이스 |
참고: 이전 명령에서 컨테이너 이름을 지정했습니다. 카우치베이스_볼트위의 명령을 사용하면 해시코프 볼트를 실행하는 컨테이너 내에서 볼트 명령이 실행됩니다.
이 명령의 출력에는 카우치베이스 플러그인이 나열되어야 합니다:
1 |
카우치베이스-데이터베이스-플러그인 데이터베이스 v0.9.0+내장 |
Vault를 실험해보고 싶다면 아래 명령어를 사용하여 Vault를 실행하는 컨테이너 내부의 셸을 열 수 있습니다:
1 |
도커 exec -it "couchbase_vault" /bin/ash |
앞서 설정한 루트 토큰으로 인증할 수 있습니다:
1 |
볼트 로그인 비밀번호 |
Vault에 익숙하지 않으시다면 다음을 확인하세요. 명령어 문서.
3단계: 데모 Couchbase 서버 시작하기
새 터미널 창을 열고 다음 명령을 실행하여 Couchbase를 시작합니다:
1 2 3 4 5 6 7 8 9 10 11 |
도커 실행 -it --rm \ --네트워크 dev_카우치베이스 \ --이름="couchbase_main" \ -e couchbase_username=관리자 \ -e couchbase_password=비밀번호 \ -w /opt/카우치베이스 \ -p 8091-8094:8091-8094 \ -p 11210:11210 \ -p 18091-18094:18091-18094 \ --건강-cmd "curl --fail http://localhost:8091/ui/index.html || exit 1" --건강-간격=5s --건강-시간 초과=3s --건강-재시도=10 --건강-시작-기간=5s \ 카우치베이스/서버:7.1.3 |
4단계: Couchbase Server 구성하기
세 번째 터미널을 엽니다. 이 터미널을 사용하여 다음 단계에서 Vault 및 Couchbase를 구성하기 위한 Docker 명령을 실행합니다.
-
- Couchbase 클러스터 초기화하기
1 2 3 4 5 6 7 8 9 10 11 |
도커 exec -it 카우치베이스_메인 \ ./bin/카우치베이스-cli 클러스터-init \ -c 카우치베이스://127.0.0.1 \ --클러스터-이름 카우치베이스-놀이터 \ --클러스터-사용자 이름 관리자 \ --클러스터-비밀번호 비밀번호 \ --서비스 데이터,색인,쿼리,fts \ --클러스터-램사이즈 2048 \ --클러스터-색인-램사이즈 512 \ --색인-스토리지-설정 기본값 \ --노드-에-노드-암호화 꺼짐 |
-
- 샘플 데이터 가져오기
1 2 3 4 |
도커 exec -it 카우치베이스_메인 \ curl -v http://localhost:8091/sampleBuckets/install \ -u 관리자:비밀번호 \ -d '["gamesim-sample","travel-sample","beer-sample"]' |
이제 UI를 사용하여 클러스터를 검사할 차례입니다. 클러스터의 콘솔 에서 http://localhost:8091 및 사용 관리자 를 사용자 이름과 비밀번호 를 비밀번호로 입력하여 로그인합니다.
5단계: Couchbase Server 사용자 만들기
이제 Vault가 구성되고 Couchbase Server가 실행 중이므로 Couchbase 사용자를 만들어야 합니다. 이 사용자는 Couchbase Vault 플러그인에서 Couchbase Server에 액세스하고 필요에 따라 사용자를 만드는 데 사용됩니다.
1 2 3 4 5 6 7 8 9 10 |
도커 exec -it 카우치베이스_메인 \ ./bin/카우치베이스-cli 사용자-관리 \ --클러스터 http://127.0.0.1 \ --사용자 이름 관리자 \ --비밀번호 비밀번호 \ --set \ --rbac-사용자 이름 카우치베이스-볼트-사용자 \ --rbac-비밀번호 비밀번호 \ --역할 관리자 \ --auth-도메인 local |
사용자가 생성되면 UI에도 사용자로 표시됩니다:
6단계: Vault와 Couchbase Server 통합하기
이제 Vault와 Couchbase Server가 모두 구성되었으므로 이를 통합해야 합니다. 다음 단계를 따르세요:
-
- Vault의 데이터베이스 엔진 사용
1 |
도커 exec -it "couchbase_vault" /bin/ash -c "볼트 로그인 비밀번호 && 볼트 비밀번호 사용 데이터베이스" |
-
- 카우치베이스 서버 플러그인 초기화하기
1 |
도커 exec -it "couchbase_vault" /bin/ash -c 'PEM=$(wget -O - http://Administrator:password@couchbase_main:8091/pools/default/certificate|base64 -w0) && 볼트 로그인 비밀번호 && 볼트 쓰기 데이터베이스/config/demo-db 플러그인 이름="couchbase-database-plugin" hosts="couchbases://couchbase_main" username=couchbase-vault-user password=password tls=true insecure_tls=true base64pem=${PEM} allowed_roles=*' |
위의 명령어를 조금 더 자세히 설명해 드리겠습니다.
- 사용 wget 나중에 필요할 때 Couchbase Server에서 인증서를 다운로드합니다.
- 다음 계정으로 Vault에 로그인하세요. 볼트 로그인.
- 만들기 demo-db 구성을 사용하여 카우치베이스 데이터베이스 플러그인. Couchbase 서버와 사용자(카우치베이스-볼트-사용자)를 클릭하여 연결합니다.
참고하세요: 를 지정했습니다. 허용된 역할 가 되려면 * 를 사용하면 사용 가능한 모든 역할을 가진 Couchbase 사용자를 생성할 수 있으므로 프로덕션 환경에서는 권장하지 않습니다.
-
- 카우치베이스 사용자의 비밀번호 바꾸기
매우 안전하지 않은 비밀번호를 사용하여 Couchbase Server와 Vault 간의 연결을 설정했으므로 아래 명령을 실행하여 비밀번호를 변경하는 것이 중요합니다:
1 |
도커 exec -it "couchbase_vault" /bin/ash -c "볼트 로그인 비밀번호 && 볼트 쓰기 -f 데이터베이스/로테이트-루트/데모 데이터베이스" |
비밀번호가 실제로 변경되었는지 확인합니다. 다음 계정으로 로그인을 시도하여 이를 확인할 수 있습니다. 카우치베이스-볼트-사용자 Couchbase UI를 사용합니다.
로그인 실패라는 오류 메시지가 표시됩니다. 이는 Vault가 Couchbase 서버와 통신하는 데 사용하는 사용자의 비밀번호를 변경할 수 없음을 확인합니다:
7단계: 데모 Vault 정책 만들기
마지막으로 볼트 정책을 만들어야 합니다. 명령을 사용하여 볼트 정책을 만듭니다. 이 정책은 Couchbase에서 새 사용자를 만드는 데 사용됩니다.
아래 명령은 카우치베이스에서 ro_admin 역할을 가진 사용자를 생성할 수 있는 해시코프 볼트 역할을 생성합니다.
1 |
도커 exec -it "couchbase_vault" /bin/ash -c '볼트 로그인 비밀번호 && 볼트 쓰기 데이터베이스/역할/couchbase-ro-admin-역할 db_name=데모-db default_ttl="5m" max_ttl="1h" creation_statements='\''{"roles":[{"role":"ro_admin"}]}'\''' |
8단계: 통합 테스트
이제 통합이 완료되었으므로 테스트해 볼 수 있습니다. 다음 단계를 따르세요:
-
- 사용자 만들기
1 |
도커 exec -it "couchbase_vault" /bin/ash -c "볼트 로그인 비밀번호 && 볼트 읽기 데이터베이스/크레딧/카우치베이스-로-관리자 역할" |
모든 구성이 제대로 되었다면 아래와 같이 새 사용자가 생성된 것을 볼 수 있습니다:
1 2 3 4 5 6 7 |
키 가치 --- ----- 임대_id 데이터베이스/크레딧/카우치베이스-ro-관리자-역할/8EeLw4eerXDMeMZuG37wgBxA 임대_기간 5m 임대_재생 가능 true 비밀번호 ujkm5Da-BrG-WcOJLEdQ 사용자 이름 v_token_couchbase-RO-ADMIN-ROLE_ZAIDHM1UCOED9XDSTECN_1686320194 |
이제 이 사용자를 사용하여 Couchbase에 로그인하거나 UI를 사용하여 사용자가 실제로 존재하는지 확인할 수 있습니다:
참고: 이 사용자의 임대 기간은 5분입니다. 5분을 기다리면 Vault에서 해당 사용자의 프로비저닝이 자동으로 해제됩니다. Vault를 사용하여 임대를 연장하거나 새 사용자를 만들 수 있습니다. 자세한 내용은 다음을 참조하세요. Vault의 문서.
결론
카우치베이스 서버와 해시코프 볼트를 통합하는 것은 데이터에 안전하게 액세스할 수 있는 좋은 방법입니다. 이 블로그 게시물에서는 이를 수행하는 방법을 살펴보았습니다. 위에 설명된 단계를 따라 Couchbase Server와 해시코프 볼트를 쉽게 통합할 수 있습니다.
지금까지 설명한 단계는 테스트와 데모만을 위한 것임을 염두에 두고, 안전한 프로덕션 배포를 위해서는 업계 모범 사례를 준수하는 것이 가장 중요하다는 점을 이해하는 것이 중요합니다. 이 글의 범위를 넘어서는 Vault와 Couchbase 서버가 적절하게 구성되고 강화되었는지 확인하려면 다음 권장 사례를 따르는 것이 좋습니다.
Couchbase에서 사용자 계정을 만들 때 고려해야 할 몇 가지 사항이 있습니다. 사용자 생성은 ns_server에서 비동기식으로 이루어집니다. 요청이 이루어진 노드에서만 사용 가능하며 다른 노드에서는 비동기적으로 생성됩니다. 예를 들어 1분마다 사용자를 생성하고 삭제하는 경우 1년에 삭제된 사용자가 525600명에 이르며 이는 수년 동안 여전히 안전합니다. 다만 수백만 명의 사용자를 생성하면 클러스터의 사용자 생성 성능에 영향을 미칠 수 있으며 수백만 명의 사용자를 생성하는 것은 지금까지 테스트한 것 이상의 성능을 발휘할 수 있다는 점을 염두에 두시기 바랍니다.