MongoDB Atlas 데이터베이스 플러그인
MongoDB Atlas 데이터베이스 플러그인 (MongoDB Atlas database plugin)
데이터베이스 시크릿 엔진에서 MongoDB Atlas 자격 증명을 동적으로 생성하는 mongodbatlas 플러그인을 다룹니다.
출처: 문서
본문
MongoDB Atlas는 데이터베이스 시크릿 엔진이 지원하는 플러그인 중 하나예요. 이 플러그인은 MongoDB Atlas 데이터베이스에 대해 설정된 역할을 기반으로 데이터베이스 자격 증명을 동적으로 생성합니다. 공개·비공개 키 쌍으로 인증하기 때문에 루트 사용자 자격 증명의 회전은 지원할 수 없어요.
데이터베이스 시크릿 엔진 설정에 대한 자세한 내용은 데이터베이스 시크릿 엔진 문서를 참고하세요.
참고: 아래 정보는 Vault 데이터베이스 시크릿 엔진용 MongoDB Atlas 데이터베이스 플러그인에 관한 것입니다. Vault용 MongoDB Atlas 시크릿 엔진 사용에 대한 내용은 MongoDB Atlas 시크릿 엔진을 참고하세요.
기능 (Capabilities)
| 플러그인 이름 | 루트 자격 증명 회전 | 동적 역할 | 정적 역할 | 사용자명 커스터마이즈 | 자격 증명 유형 |
|---|---|---|---|---|---|
| mongodbatlas-database-plugin | No | Yes | Yes | Yes (1.8+) | password, client_certificate |
설정 (Setup)
- 데이터베이스 시크릿 엔진이 아직 활성화되지 않았다면 활성화해요.
$ vault secrets enable database
Success! Enabled the database secrets engine at: database/
기본적으로 시크릿 엔진은 엔진 이름으로 활성화돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.
- 적절한 플러그인과 연결 정보로 Vault를 구성해요.
$ vault write database/config/my-mongodbatlas-database \
plugin_name=mongodbatlas-database-plugin \
allowed_roles="*" \
public_key="jmskfortvf" \
private_key="ea6acbc7-8a30-4a3f-812e-6f869c08bcd1" \
project_id="4f96cad208574fd14aa8dda3a"
사용법 (Usage)
시크릿 엔진이 구성되고 사용자/머신이 적절한 권한을 가진 Vault 토큰을 가지면 자격 증명을 생성할 수 있어요.
비밀번호 자격 증명
- Vault의 이름을 MongoDB Atlas 명령에 매핑하는 역할을 구성해 데이터베이스 사용자 자격 증명을 만들고 실행해요.
$ vault write database/roles/my-password-role \
db_name=my-mongodbatlas-database \
creation_statements='{"database_name": "admin","roles": [{"databaseName":"admin","roleName":"atlasAdmin"}]}' \
default_ttl="1h" \
max_ttl="24h"
Success! Data written to: database/roles/my-password-role
- 역할 이름으로
/creds엔드포인트를 읽어 새 자격 증명을 생성해요.
$ vault read database/creds/my-password-role
Key Value
--- -----
lease_id database/creds/my-role/2f6a614c-4aa2-7b19-24b9-ad944a8d4de6
lease_duration 1h
lease_renewable true
password FBYwnnh-fwc0quxtKf11
username v-my-password-role-DKbQEg6uRn
명령을 호출할 때마다 새 자격 증명이 생성돼요.
MongoDB Atlas 데이터베이스 자격 증명은 MongoDB Atlas Admin API가 Atlas 프로젝트의 호스팅 클러스터와 조정될 때 결국 일관성있게 됩니다. 일관성 프로세스가 완료되기 전에는 자격 증명을 성공적으로 사용할 수 없어요.
파이프라인에서 MongoDB Atlas 자격 증명을 사용할 계획이라면, 일관성이 확립되는 데 필요한 시간을 반영하도록 시간 지연이나 보조 프로세스를 추가해야 할 수 있어요.
클라이언트 인증서 자격 증명
- Vault의 이름을 MongoDB Atlas 명령에 매핑하는 역할을 구성해 X509 타입 데이터베이스 사용자 자격 증명을 만들고 실행해요.
$ vault write database/roles/my-dynamic-certificate-role \
db_name=my-mongodbatlas-database \
creation_statements='{"database_name": "$external", "x509Type": "CUSTOMER", "roles": [{"databaseName":"","roleName":"readWrite"}]}' \
default_ttl="1h" \
max_ttl="24h" \
credential_type="client_certificate" \
credential_config=ca_cert="$(cat path/to/ca_cert.pem)" \
credential_config=ca_private_key="$(cat path/to/private_key.pem)" \
credential_config=key_type="rsa" \
credential_config=key_bits=2048 \
credential_config=signature_bits=256 \
credential_config=common_name_template="{{.DisplayName}}_{{.RoleName}}_{{unix_time}}"
Success! Data written to: database/roles/my-dynamic-certificate-role
- 역할 이름으로
/creds엔드포인트를 읽어 새 자격 증명을 생성해요.
$ vault read database/creds/my-dynamic-certificate-role
Key Value
--- -----
request_id b6556b2d-c379-5a92-465d-6597c506c821
lease_id database/creds/my-dynamic-certificate-role/AZ5tao6NjLJctx7fm1bujKEL
lease_duration 1h
lease_renewable true
client_certificate -----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
private_key [REDACTED PRIVATE KEY]
private_key_type rsa
username CN=token_my-dynamic-certificate-role_1677262121
클라이언트 인증서 인증
MongoDB Atlas는 사용자명·비밀번호 인증의 대안으로 향상된 인증 보안을 위한 X.509 클라이언트 인증서 기반 인증을 지원해요. MongoDB Atlas 데이터베이스 플러그인은 client_certificate credential_type을 사용해 MongoDB Atlas 사용자의 클라이언트 인증서 자격 증명을 관리할 수 있습니다.
동적 역할 사용 예제는 usage 섹션을 참고하세요.
API
구성 가능한 전체 옵션 목록은 MongoDB Atlas Database Plugin HTTP API 페이지에서 확인할 수 있어요.
데이터베이스 시크릿 엔진 HTTP API에 대한 자세한 내용은 Database Secrets Engine API 페이지를 참고하세요.