Couchbase 데이터베이스 시크릿 엔진
Couchbase 데이터베이스 시크릿 엔진 (Couchbase database secrets engine)
데이터베이스 시크릿 엔진에서 Couchbase 자격 증명을 동적으로 생성하는 couchbase 플러그인을 다룹니다.
출처: 문서
본문
참고: 이 엔진은 TLS 또는 서명 검증의 일부로 외부 X.509 인증서를 사용할 수 있어요. SHA-1을 사용하는 X.509 인증서에 대한 서명 검증은 더 이상 사용되지 않으며(deprecated), Vault 1.12부터는 우회 조치 없이는 사용할 수 없어요. 자세한 내용은 deprecation notices를 참고하세요.
Couchbase는 데이터베이스 시크릿 엔진이 지원하는 플러그인 중 하나예요. 이 플러그인은 Couchbase 데이터베이스에 대해 설정된 역할을 기반으로 데이터베이스 자격 증명을 동적으로 생성합니다.
데이터베이스 시크릿 엔진 설정에 대한 자세한 내용은 데이터베이스 시크릿 엔진 문서를 참고하세요.
기능 (Capabilities)
| 플러그인 이름 | 루트 자격 증명 회전 | 동적 역할 | 정적 역할 | 사용자명 커스터마이즈 |
|---|---|---|---|---|
| couchbase-database-plugin | Yes | Yes | Yes | Yes (1.7+) |
설정 (Setup)
- 데이터베이스 시크릿 엔진이 아직 활성화되지 않았다면 활성화해요.
$ vault secrets enable database
Success! Enabled the database secrets engine at: database/
기본적으로 시크릿 엔진은 엔진 이름으로 활성화돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.
- 적절한 플러그인과 연결 설정으로 Vault를 구성해요.
$ vault write database/config/my-couchbase-database \
plugin_name="couchbase-database-plugin" \
hosts="couchbase://127.0.0.1" \
tls=true \
base64pem="${BASE64PEM}" \
username="vaultuser" \
password="vaultpass" \
allowed_roles="my-*-role"
여기서 ${BASE64PEM}은 서버의 루트 인증 기관(CA)을 PEM 형식으로 줄바꿈 없이 base64 문자열로 인코딩한 값이에요.
6.5.0 이전 버전의 클러스터에 연결하려면 bucket_name도 구성해야 해요.
$ vault write database/config/my-couchbase-database \
plugin_name="couchbase-database-plugin" \
hosts="couchbase://127.0.0.1" \
tls=true \
base64pem="${BASE64PEM}" \
username="vaultuser" \
password="vaultpass" \
allowed_roles="my-*-role" \
bucket_name="travel-sample"
- 관리자 비밀번호를 회전하는 것을 고려해 보세요. 회전하면 새 비밀번호가 Vault를 통해 제공되지 않으므로, 이를 위해 Vault 전용 데이터베이스 관리 사용자를 만드는 게 좋아요.
vault write -force database/rotate-root/my-couchbase-database
사용법 (Usage)
시크릿 엔진이 구성되면 동적·정적 역할을 구성해 자격 증명을 생성할 수 있어요.
동적 역할 (Dynamic roles)
- Vault의 이름을 Couchbase RBAC 역할을 지정하는 JSON 문자열에 매핑하는 동적 역할을 구성해요.
creation_statements의 기본값은 읽기 전용 관리자 역할인{"Roles": [{"role":"ro_admin"}]}입니다.
$ vault write database/roles/my-dynamic-role \
db_name="my-couchbase-database" \
creation_statements='{"Roles": [{"role":"ro_admin"}]}' \
default_ttl="5m" \
max_ttl="1h"
creation statement에 지정하는 그룹은 이미 존재해야 한다는 점을 주의하세요.
- 역할 이름으로
/creds엔드포인트를 읽어 새 자격 증명을 생성해요.
$ vault read database/creds/my-dynamic-role
Key Value
--- -----
lease_id database/creds/my-dynamic-role/wiLNQjtcvCOT1VnN3qnUJnBz
lease_duration 5m
lease_renewable true
password mhyM-Gs7IpmOPnSqXEDe
username v-root-my-dynamic-role-eXnVr4gm55dpM1EVgTYz-1596815027
정적 역할 (Static roles)
- Vault의 이름을 기존 couchbase 사용자에 매핑하는 정적 역할을 구성해요.
$ vault write database/static-roles/my-static-role \
db_name="my-couchbase-database" \
username="my-existing-couchbase-user" \
rotation_period=5m
/static-creds엔드포인트에서 자격 증명을 가져와요.
$ vault read database/static-creds/my-static-role
Key Value
--- -----
last_vault_rotation 2020-08-07T16:50:48.393354+01:00
password Z4-KH8F-VK5VJc0hSkXQ
rotation_period 5m
ttl 4m39s
username my-existing-couchbase-user
API
구성 가능한 전체 옵션 목록은 Couchbase 데이터베이스 플러그인 API 페이지에서 확인할 수 있어요.
데이터베이스 시크릿 엔진 HTTP API에 대한 자세한 내용은 데이터베이스 시크릿 엔진 API 페이지를 참고하세요.