MongoDB 데이터베이스 시크릿 엔진
MongoDB 데이터베이스 시크릿 엔진 (MongoDB database secrets engine)
데이터베이스 시크릿 엔진에서 MongoDB 자격 증명을 동적으로 생성하는 mongodb 플러그인을 다룹니다.
출처: 문서
본문
참고: 이 엔진은 TLS 또는 서명 검증의 일부로 외부 X.509 인증서를 사용할 수 있어요. SHA-1을 사용하는 X.509 인증서에 대한 서명 검증은 더 이상 사용되지 않으며(deprecated), Vault 1.12부터는 우회 조치 없이는 사용할 수 없어요. 자세한 내용은 deprecation notices를 참고하세요.
참고: 사용자 관리를 위해 Ops Manager(또는 Cloud Manager)와 함께 MongoDB를 사용할 때, Ops Manager가 Vault가 만든 변경을 되돌릴 수 있어 Vault가 비밀번호를 제대로 관리·회전하지 못할 수 있어요. Vault가 비밀번호를 제대로 관리·회전하게 하려면 관련 사용자를 Ops Manager 밖에서 만들거나, 사용자를 unmanaged로 설정하세요.
MongoDB는 데이터베이스 시크릿 엔진이 지원하는 플러그인 중 하나예요. 이 플러그인은 MongoDB 데이터베이스에 대해 설정된 역할을 기반으로 데이터베이스 자격 증명을 동적으로 생성하며, 정적 역할(Static Roles)도 지원합니다.
데이터베이스 시크릿 엔진 설정에 대한 자세한 내용은 데이터베이스 시크릿 엔진 문서를 참고하세요.
기능 (Capabilities)
| 플러그인 이름 | 루트 자격 증명 회전 | 동적 역할 | 정적 역할 | 사용자명 커스터마이즈 |
|---|---|---|---|---|
| mongodb-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-mongodb-database \
plugin_name=mongodb-database-plugin \
allowed_roles="my-role" \
connection_url="mongodb://{{username}}:{{password}}@mongodb.acme.com:27017/admin?tls=true" \
username="vaultuser" \
password="vaultpass!"
- Vault의 이름을 데이터베이스 자격 증명을 만드는 MongoDB 명령에 매핑하는 역할을 구성해요.
$ vault write database/roles/my-role \
db_name=my-mongodb-database \
creation_statements='{ "db": "admin", "roles": [{ "role": "readWrite" }, {"role": "read", "db": "foo"}] }' \
default_ttl="1h" \
max_ttl="24h"
Success! Data written to: database/roles/my-role
사용법 (Usage)
시크릿 엔진이 구성되고 사용자/머신이 적절한 권한을 가진 Vault 토큰을 가지면 자격 증명을 생성할 수 있어요.
- 역할 이름으로
/creds엔드포인트를 읽어 새 자격 증명을 생성해요.
$ vault read database/creds/my-role
Key Value
--- -----
lease_id database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
lease_duration 1h
lease_renewable true
password LEm-lcDJ2k0Hi05FvizN
username v-vaultuser-my-role-ItceCZHlp0YGn90Puy9Z-1602542024
클라이언트 x509 인증서 인증
이 플러그인은 MongoDB의 x509 Client-side Certificate Authentication을 지원해요.
이 인증 방식을 사용하려면 플러그인을 이렇게 구성해요.
$ vault write database/config/my-mongodb-database \
plugin_name=mongodb-database-plugin \
allowed_roles="my-role" \
connection_url="mongodb://@mongodb.acme.com:27017/admin" \
tls_certificate_key=@/path/to/client.pem \
tls_ca=@/path/to/client.ca
참고:
tls_certificate_key와tls_ca는 MongoDB의 tlsCertificateKeyFile과 tlsCAFile 설정 옵션에 대응하는데, **Vault 파라미터는 그 파일들의 내용(파일명이 아니라)**이라는 점이 달라요. 그래서 두 옵션은 서로 독립적입니다. 자세한 내용은 MongoDB Configuration Options를 참고하세요.
튜토리얼
데이터베이스 시크릿 엔진을 사용하는 단계별 예제는 database credential management 튜토리얼을 참고하세요.
API
구성 가능한 전체 옵션 목록은 MongoDB 데이터베이스 플러그인 API 페이지에서 확인할 수 있어요.
데이터베이스 시크릿 엔진 HTTP API에 대한 자세한 내용은 데이터베이스 시크릿 엔진 API 페이지를 참고하세요.