Secret Store 연동
Overview
Secret Store는 필요한 인증 정보를 외부 저장소에 저장하는 옵션을 제공합니다. 기본적으로 QueryPie 저장소에 인증 정보를 저장하지만, 인증 정보를 중앙에서 통제하고 관리하고자 하는 경우 Secret Store 연동 옵션을 사용할 수 있습니다.
현재 QueryPie에서는 다음의 서비스와 연동하여 인증 정보를 관리할 수 있습니다.
HashiCorp Vault
AWS Secret Manager (지원 예정)
왜 Secret Store를 사용하나요?
조직은 Secret Store를 활용하여 인증 정보 저장 및 로테이션을 쉽게 관리하고 자동화할 수 있습니다. 특정 조직에서는 지정된 저장소를 제외하고는 외부에 자격 증명을 저장하는 것을 금지하고 있습니다. Secret Store 연동을 통해 해당 요구 사항을 준수하면서도 QueryPie 를 안전하게 사용할 수 있습니다.
인증 정보를 Secret Store에 저장하고 연동하여 사용하는 경우, 해당 자격 증명은 QueryPie 내부에 저장되지 않습니다. 인증을 가능하게 하기 위해 인증 정보를 직접 Secret Store에 요청합니다.
Vault 연동시 사전에 준비가 필요한 사항입니다.
QueryPie 연동할 Vault 서버:
Vault 와 연동하기 위해서는 해당 Vault 서버가 동작하고 있어야 합니다. Vault 서비스가 실행되고, API 요청을 처리할 수 있고, Vault에서 인증 처리를 수행할 수 있어야 합니다.
Vault에 저장된 리소스의 인증 정보:
Vault와 연동하기 위해서는 Vault 에 접속할 서비스(ex. DB, Server 등)의 인증 정보를 미리 저장해두어야 합니다. 연동하려는 서비스에 대한 접근 권한과 인증 정보(ex. Username, Password, API 키 등)을 Vault에 저장한 상태를 의미합니다.
인증 정보 호출을 위한 올바른 경로(Path):
Vault에 저장된 자격 증명을 식별하는 데 사용되는 경로(패스)는 정확해야 합니다. 이것은 Vault에서 어떤 자격 증명을 가져와야 하는지를 지정하는 경로를 말합니다. 이 경로는 Vault에 저장된 자원 및 자격 증명과 연결됩니다.
보다 자세한 Vault 구성은 Hashicorp Vault Documentation 공식 문서를 참고해주세요.
Secret Store 연동 설정
Secret Store 를 통해 안전하게 DB 및 서버 인증 정보를 관리할 수 있고, 사용자에게 직접적인 인증 정보 노출없이 DB 및 서버에 안전하게 접속이 가능합니다. 커넥션 접속 정보 저장시 인증정보를 QueryPie 내부에 저장하는 것이 아닌 Secret Store 에서 가져와 인증할 수 있도록 설정할 수 있습니다.
General Setting > Security 메뉴의 Secret Stores 설정 항목으로 이동합니다.
Activate Secret Store Usage
토글을 활성화합니다.Add New Store
버튼을 클릭합니다.Name에 Secret Store의 명칭을 입력합니다.
Secret Store Type 항목에서 연동할 스토어의 타입을 선택합니다.
9.16.0 버전 기준 Hashicorp Vault 타입을 지원합니다.
선택된 Secret Store 타입에 따라 연동을 위한 인증 정보를 입력합니다.
Server Address : Secret Store 서버의 주소를 입력합니다.
Auth Method : QueryPie 와 Vault 의 인증 방식을 선택합니다.
9.16.0 버전 기준 Token 을 통한 인증 방식을 지원합니다.
Secret Engine : Hashicorp Vault 의 Secret Engine 타입을 선택합니다.
9.16.0 버전 기준 Database, K/V 엔진 2가지를 지원합니다.
Secret Engine 은 저장 후 변경이 불가능합니다.
변경하고자 하는 경우 모든 커넥션의 Secret Store 설정을 해제한 뒤 재설정이 필요합니다.
인증에 필요한 인증 정보를 입력 후
Verify Integration
버튼을 통해 정상적으로 연동 설정이 되어 있는지 확인합니다.Save Changes
버튼을 클릭하여 저장합니다.
이제 DB Connection 페이지 및 Server의 Account를 입력하는 화면에서 인증 정보 저장소를 선택할 수 있는 Secret Store 선택 항목이 표시됩니다. QueryPie 내부에 저장하는 것을 디폴트로 제공하며, Secret Store 타입을 변경하여 설정 가능합니다. 해당 항목은 정보자산 별로 다르게 설정할 수 있습니다.
DB 커넥션에서 Secret Store 를 통한 인증 설정하기 (Hashicorp Vault 기준)
DB 커넥션 정보 등록시 Secret Store 연동 정보를 활용하며, 사전 지정된 Secret Store 인증 정보 연동을 통해 커넥션에 접속할 수 있습니다. 사전에 DB 인증정보를 Secret Store 에 저장하고, DB 커넥션 접속시 사용자가 Secret Store 에 저장된 DB 인증정보를 활용해 접속하게 함으로써 DB 인증정보에 대한 보안을 강화할 수 있습니다.
Database Setting > DB Connection 메뉴에서
Create Connection
버튼을 통해 새로운 DB 커넥션을 생성합니다.커넥션 정보 항목 중 Secret Store 항목에서 Hashicorp Vault 를 선택합니다.
Secret Store 설정에 저장된 Secret Engine 타입에 따라 DB Account 항목이 다르게 표시됩니다.
Secret Engine
= K/V 설정시, 커넥션 정보 페이지에서 Username / Password 입력 항목이 표시됩니다.Username / Password 항목에 Vault 의 Path 를 입력합니다.
Path 의 형태는
prod_db/data/mysql?username
형태로 입력할 수 있습니다.예시 기준 실제로 Vault 내의 경로는
prod_db > mysql
의 key 가username
인 경우입니다.중간의
/data
경로를 추가해야합니다.
Secret Engine
= Database 설정시, 커넥션 정보 페이지에서 Account 입력 항목이 표시됩니다.Account 항목에 Vault 의 Path 를 입력합니다.
Path 의 형태는
prod_db/creds/mysql_role
형태로 입력할 수 있습니다.
Save Change
버튼을 통해 커넥션 정보를 저장합니다.
사용자의 Connection Lists 에서 등록한 커넥션 클릭시 별도로 Username, Password 항목은 표시되지 않으며, Connect
버튼을 통한 접속 시도시 Vault 에 저장된 인증 정보를 통해 DB 커넥션에 접속합니다.
Servers에서 Secret Store 를 통한 인증 설정하기 (Hashicorp Vault 기준)
서버의 Account 정보 등록시 Secret Store 연동 정보를 활용하며, 사전 지정된 Secret Store 인증 정보 연동을 통해 커넥션에 접속할 수 있습니다. 사전에 서버 인증정보를 Secret Store 에 저장하고, 서버 원격 접속시 사용자가 Secret Store 에 저장된 서버 인증정보를 활용해 접속하게 함으로써 서버 인증정보에 대한 보안을 강화할 수 있습니다. Server Groups이 정된 Server는 Server Groups와 동일한 Secret Store를 사용하도록 강제됩니다.
Server Settings > Servers 메뉴에서
Create Server
버튼을 통해 새로운 서버를 생성합니다.아래 메뉴의 설정도 동일합니다.
Server Settings > Server Groups
Server Settings > Server Account Templates
입력 항목 중 Secret Store 항목에서 사전에 등록한 Secret Store 항목을 선택합니다.
Secret Store 설정에 저장된 Secret Engine 타입 중 K/V 항목만 지원합니다.
Add Account
버튼을 클릭합니다.Alias 항목에 이용자들에게 노출될 서버 계정 명을 입력합니다.
Account / Authority 항목에 Vault 의 Path 를 입력합니다.
Path 의 형태는
prod_os/data/linux?account
형태로 입력할 수 있습니다.예시 기준 실제로 Vault 내의 경로는
prod_os > linux
의 key 가account
인 경우입니다.중간의
/data
경로를 추가해야합니다.
Save
버튼을 통해 서버 정보를 저장합니다.
관련 토픽