Hashicorp Vault로 데이터베이스 시크릿 암호화
Hashicorp Vault로 데이터베이스 시크릿 암호화 (Encrypt database secrets using Hashicorp Vault)
Hashicorp Vault의 암호화 키를 사용해 Grafana 데이터베이스의 시크릿을 암호화할 수 있어요. envelope encryption을 켜고, grafana.ini에 Hashicorp Vault 프로바이더 섹션을 추가해 기본 암호화 프로바이더로 설정하는 전체 과정을 안내합니다.
출처: 문서
본문
Hashicorp Vault의 암호화 키를 사용해 Grafana 데이터베이스의 시크릿을 암호화할 수 있어요.
사전 요구사항 (Prerequisites)
- Hashicorp Vault를 관리해 secrets engine을 활성화하고 토큰을 발급할 권한
- Grafana 설정 파일 접근 권한
- Hashicorp Vault에서 transit secrets engine 활성화
- 이름 있는 암호화 키(named encryption key) 만들기
- 주기적 서비스 토큰(periodic service token) 만들기
설정 절차
- Grafana에서 envelope encryption을 켭니다.
- Hashicorp Vault 세부 정보를 Grafana 설정 파일(OS에 따라 보통
grafana.ini)에 추가합니다:- a. 설정 파일에
[security.encryption.hashicorpvault.<KEY-NAME>]형식의 이름으로 새 섹션을 추가합니다. 여기서<KEY-NAME>은 다른 프로바이더 키 사이에서 이 키를 고유하게 식별하는 임의의 이름이에요. - b. 섹션을 다음 값으로 채웁니다:
token: Hashicorp Vault 내 인증에 사용되는 주기적 서비스 토큰url: Hashicorp Vault 서버의 URLtransit_engine_path: transit engine의 마운트 지점key_ring: 암호화 키의 이름token_renewal_interval: 토큰을 갱신할 빈도. 주기적 서비스 토큰의period값보다 작아야 함
- a. 설정 파일에
grafana.ini 파일의 Hashicorp Vault 프로바이더 섹션 예시:
# Example of Hashicorp Vault provider setup
;[security.encryption.hashicorpvault.example-encryption-key]
# Token used to authenticate within Vault. We suggest to use periodic tokens: more on token types https://www.vaultproject.io/docs/concepts/tokens#service-tokens
;token =
# Location of the Hashicorp Vault server
;url = http://localhost:8200
# Mount point of the transit secret engine
;transit_engine_path = transit
# Key ring name
;key_ring = grafana-encryption-key
# Specifies how often to check if a token needs to be renewed, should be less than a token's period value
token_renewal_interval = 5m
grafana.ini설정 파일의[security]섹션을 새로 만든 Encryption Provider 키로 업데이트합니다:
[security]
# previous encryption key, used for legacy alerts, decrypting existing secrets or used as default provider when external providers are not configured
secret_key = AaaaAaaa
# encryption provider key in the format <PROVIDER>.<KEY-NAME>
encryption_provider = hashicorpvault.example-encryption-key
# list of configured key providers, space separated
available_encryption_providers = hashicorpvault.example-encryption-key
- Grafana를 재시작합니다.
- (선택) Grafana Enterprise의 루트 디렉토리에서 명령줄로 데이터베이스 내 모든 시크릿을 새 키로 다시 암호화하려면:
grafana cli admin secrets-migration re-encrypt
기존 시크릿을 다시 암호화하지 않으면 기존 암호화 키로 암호화된 상태로 유지되며, 사용자는 여전히 접근할 수 있어요.
참고: 이 과정은 데이터베이스의 시크릿(예: 데이터 소스) 수에 따라 몇 분 걸릴 수 있어요. 실행 중 사용자가 오류를 겪을 수 있고, 알림이 전송되지 않을 수도 있습니다.
참고: 데이터 소스나 대시보드를 만들기 전 Grafana 초기 설정 중에 이 암호화 키를 업데이트하는 경우, 마이그레이션할 시크릿이 없으므로 이 단계는 필요하지 않아요.