Azure Key Vault를 사용한 데이터베이스 비밀 암호화
Azure Key Vault를 사용한 데이터베이스 비밀 암호화 (Encrypt database secrets using Azure Key Vault)
Azure Key Vault의 암호화 키를 사용해 Grafana 데이터베이스의 비밀(secrets)을 암호화할 수 있어요. Key Vault 키를 만들고 접근할 권한과 프로그래매틱 자격 증명이 있는 Azure 계정, 그리고 Grafana 구성 파일 접근 권한이 필요해요.
출처: 문서
본문
전제 조건:
- Key Vault 키를 보고 만들 권한과 그 키에 접근할 프로그래매틱 자격 증명이 있는 Azure 계정.
- Grafana 구성 파일에 대한 접근 권한.
절차:
- Vault를 만들어요.
- Key Vault에서 원하는 이름의 키를 만들되, 타입은 RSA, 크기는 2048로 하고 encrypt·decrypt 권한을 부여해요.
- 애플리케이션을 등록하고 그에 대한 클라이언트 시크릿(client secret)을 생성해요.
- 만든 키 vault에 대한 Key Vault access policy를 지정해요.
- Key Permissions 섹션에서 encrypt와 decrypt 권한을 설정하고 Save를 클릭해요.
- Grafana에서 envelope encryption을 켜요.
- 운영체제에 따라 보통
grafana.ini라는 이름인 Grafana 구성 파일에 Azure Key Vault 정보를 추가해요: a. 구성 파일에[security.encryption.azurekv.<KEY-NAME>]형식의 이름으로 새 섹션을 추가해요.<KEY-NAME>은 이 키를 다른 공급자 키와 구분하는 임의의 이름이에요. b. 섹션을 다음 값들로 채워요:tenant_id: 등록한 애플리케이션의 Directory ID(tenant).client_id: 등록한 애플리케이션의 Application ID(client).client_secret: 앱에서 생성한 secret의 VALUE (Secret ID를 쓰지 마세요).key_id: 키 vault에서 만든 키 이름.vault_uri: 키 vault의 URL.
grafana.ini 파일의 Azure Key Vault 공급자 섹션 예제:
# Azure Key Vault provider setup
;[security.encryption.azurekv.example-encryption-key]
# Azure Application directory ID (tenant)
tenant_id = 1234abcd-12ab-34cd-56ef-1234567890ab
# Azure Application application ID (client).
client_id = 1356dfgh-12ab-34cd-56ef-3322114455cc
# Azure Application client secret.
client_secret = FbE4X~4Jq45ERKxx823Aheb9plBjQqHHe81Sc
# Azure Key Vault key name.
key_id = mysecretkey
# Azure Key Vault uri.
vault_uri = https://my-vault-name.vault.azure.net
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 = azurekv.example-encryption-key
# list of configured key providers, space separated
available_encryption_providers = azurekv.example-encryption-key
- Grafana를 재시작해요.
- (선택) Grafana Enterprise의 루트 디렉터리에서 명령줄로 다음 명령을 사용해 Grafana 데이터베이스의 모든 비밀을 새 키로 재암호화해요:
grafana cli admin secrets-migration re-encrypt
기존 비밀을 재암호화하지 않으면 이전 암호화 키로 암호화된 채 남게 되지만, 사용자는 여전히 접근할 수 있어요.
Note: 이 프로세스는 데이터베이스의 비밀(예: 데이터 소스) 수에 따라 몇 분이 걸릴 수 있어요. 실행 중에는 사용자가 오류를 경험하거나 알림이 발송되지 않을 수 있어요.
Note: 데이터 소스나 대시보드를 만들기 전 Grafana 초기 설정 중에 이 암호화 키를 업데이트한다면, Grafana에 마이그레이션할 비밀이 없으므로 이 단계는 필요 없어요.