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)

  1. 데이터베이스 시크릿 엔진이 아직 활성화되지 않았다면 활성화해요.
$ vault secrets enable database
Success! Enabled the database secrets engine at: database/

기본적으로 시크릿 엔진은 엔진 이름으로 활성화돼요. 다른 경로에 활성화하려면 -path 인자를 사용하면 됩니다.

  1. 적절한 플러그인과 연결 정보로 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 토큰을 가지면 자격 증명을 생성할 수 있어요.

비밀번호 자격 증명

  1. 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
  1. 역할 이름으로 /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 자격 증명을 사용할 계획이라면, 일관성이 확립되는 데 필요한 시간을 반영하도록 시간 지연이나 보조 프로세스를 추가해야 할 수 있어요.

클라이언트 인증서 자격 증명

  1. 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
  1. 역할 이름으로 /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 페이지를 참고하세요.

더 알아보기 (Learn more)