엔터프라이즈 인증 메커니즘
개요
이 가이드에서는 MongoDB Enterprise Edition에서 사용할 수 있는 인증 메커니즘을 사용하여 MongoDB에 인증하는 방법을 배울 수 있습니다. MongoDB에 연결할 때 인증 메커니즘을 사용하여 드라이버와 서버 간에 신뢰를 설정할 수 있습니다.
Rust 드라이버는 LDAP(PLAIN) 엔터프라이즈 인증 메커니즘을 사용하여 LDAP(Lightweight Directory Access Protocol) 서버에 대한 인증을 지원합니다.
참고
GSSAPI/Kerberos 인증
드라이버는 GSSAPI/Kerberos 인증 메커니즘을 지원하지 않지만 다른 방법을 사용하여 이 방식으로 인증할 수 있습니다. 이러한 방법에 대해 자세히 알아보려면 MongoDB Server 매뉴얼의 Kerberos 인증 을 참조하세요.
팁
다음도 참조하세요.
MongoDB Community Edition 에서 사용할 수 있는 메커니즘을 사용하여 MongoDB 에 인증하려면 인증 메커니즘가이드 를 참조하세요.
MongoDB deployment에 연결하는 방법에 대해 자세히 알아보려면 연결 가이드를 참조하세요.
특정 인증 메커니즘을 선택하려면 연결 문자열의 옵션 또는 Credential
구조체에 메커니즘, 자격 증명 및 기타 필요한 정보를 지정합니다.
LDAP 인증(일반)
디렉토리 서버 사용자 이름 및 비밀번호를 사용하여 LDAP(Lightweight Directory Access Protocol) 서버에 인증할 수 있습니다.
인증 메커니즘이 RFC-4616 에정의된 PLAIN SASL(Simple Authentication and Security Layer)을 사용하기 때문에 인증 메커니즘 의 이름은 LDAP 대신 입니다.PLAIN
경고
이 인증 메커니즘은 비밀번호를 일반 텍스트로 서버에 전송합니다. 보안을 강화하고 애플리케이션의 취약점을 줄이려면 연결에서 TLS를 활성화한 후에만 이 메커니즘을 사용하세요.
자세한 내용은 MongoDB Server 매뉴얼의 TLS/SSL(전송 암호화) 을 참조하세요.
예시
PLAIN
인증 메커니즘을 지정하려면 Credential
구조체의 mechanism
필드를 AuthMechanism::Plain
로 설정합니다. 이 예에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.
username
: LDAP 사용자 이름password
: LDAP 비밀번호
let plain_cred = Credential::builder() .username("<username>".to_string()) .password("<password>".to_string()) .mechanism(AuthMechanism::Plain) .source("$external".to_string()) .build(); client_options.credential = Some(plain_cred); let client = Client::with_options(client_options)?;
참고
인증 데이터베이스.
자격 증명은 MongoDB 외부에 저장되므로 인증에 $external
데이터베이스를 사용해야 합니다. Credential
구조체의 source
필드는 기본값이 $external
이므로 이 필드를 생략할 수 있습니다.
또는 authMechanism
연결 문자열 옵션의 값을 PLAIN
로 설정하여 연결 문자열 URI를 사용하여 인증할 수 있습니다. 이 예에서는 다음 자리 표시자를 사용하여 연결 문자열 URI에 PLAIN
인증 메커니즘을 지정하는 방법을 보여 줍니다.
username
: LDAP 사용자 이름password
: LDAP 비밀번호hostname
: MongoDB Server의 네트워크 주소
let uri = "mongodb://<username>:<password>@<hostname>/?authSource=$external&authMechanism=PLAIN";
MONGODB-OIDC
중요
MONGODB-OIDC 인증 메커니즘을 사용하려면 Linux 플랫폼에서 실행되는 MongoDB Server v7.0 이상이 필요합니다.
Rust 운전자 는 워크로드 ID에 대한OIDC(OpenID Connect) 인증 을 지원합니다. 워크로드 ID 는 다른 서비스 및 리소스를 인증하고 액세스 하기 위해 애플리케이션, 서비스, 스크립트 또는 컨테이너 와 같은 소프트웨어 워크로드 에 할당하는 ID입니다.
다음 섹션에서는 MONGODB-OIDC 인증 메커니즘을 사용하여 다양한 플랫폼에서 인증하는 방법을 설명합니다.
MONGODB-OIDC 인증 메커니즘 에 학습 보려면 서버 매뉴얼에서 OpenID Connect 인증 및 MongoDB Server 매개변수를 참조하세요.
Azure IMDS
애플리케이션 이 Azure VM에서 실행되거나 IMDS(Azure 인스턴스 메타데이터 서비스)를 사용하는 경우, Rust 드라이버의 내장 Azure 지원 을 사용하여 MongoDB 에 인증할 수 있습니다.
Credential
구조체의 mechanism
필드 를 AuthMechanism::MongoDbOidc
로 설정하여 Azure IMDS용 OIDC를 구성할 수 있습니다. 이 예시 에서는 다음 자리 표시자를 사용하여 인증 메커니즘 을 지정합니다.
username
: Azure 관리 ID를 사용하는 경우 이를 관리 ID의 클라이언트 ID로 설정합니다. 서비스 주체를 사용하여 엔터프라이즈 애플리케이션을 나타내는 경우 이를 서비스 주체의 애플리케이션 ID로 설정합니다.mechanism_properties
:ENVIRONMENT
속성 을azure
로 설정하고TOKEN_RESOURCE
를 MongoDB deployment 에 구성된 대상 매개변수 값으로 설정합니다.
다음 코드 예시 에서는 Client
를 만들 때 이러한 옵션을 설정하다 하는 방법을 보여 줍니다.
let credential = Credential::builder() .username("<username>".to_owned()) .mechanism(AuthMechanism::MongoDbOidc) .mechanism_properties( doc! { "ENVIRONMENT": "azure", "TOKEN_RESOURCE": "<audience>" } ) .build(); client_options.credential = Some(credential); let client = Client::with_options(client_options)?; let res = client .database("test") .collection::<Document>("test") .find_one(doc! {}) .await?;
GCP IMDS
애플리케이션 이 Google Compute Engine VM에서 실행되거나 GCP 인스턴스 메타데이터 서비스를 사용하는 경우 Rust 드라이버 내장 GCP 지원 을 사용하여 MongoDB 에 인증할 수 있습니다.
Credential
구조체의 mechanism
필드 를 AuthMechanism::MongoDbOidc
로 설정하여 GCP IMDS용 OIDC를 구성할 수 있습니다. 그런 다음 mechanism_properties
필드 에 다음 값을 설정하여 인증 메커니즘 을 지정합니다.
ENVIRONMENT
: 이 속성 을gcp
로 설정합니다.TOKEN_RESOURCE
: 이 속성 을 MongoDB deployment 에 구성된 대상 매개변수의 값으로 설정합니다.
다음 코드 예시 에서는 Client
를 만들 때 이러한 옵션을 설정하다 하는 방법을 보여 줍니다.
let credential = Credential::builder() .mechanism(AuthMechanism::MongoDbOidc) .mechanism_properties( doc! { "ENVIRONMENT": "gcp", "TOKEN_RESOURCE": "<audience>" } ) .build(); client_options.credential = Some(credential); let client = Client::with_options(client_options)?; let res = client .database("test") .collection::<Document>("test") .find_one(doc! {}) .await?;
사용자 지정 콜백
Rust 운전자 는 AWS Elastic Kubernetes Service(EKS)를 포함한 모든 플랫폼에 대한 내장 지원 을 제공하지 않습니다. OIDC를 사용하여 지원되지 않는 플랫폼에 대해 인증하려면 사용자 지정 콜백 함수를 정의해야 합니다.
다음 코드는 EKS 클러스터 에 대한 사용자 지정 콜백 의 구현 예시 입니다. 먼저, Credential
구조체의 oidc_callback
필드 를 oidc::Callback::machine
로 설정하다 합니다. 그런 다음 AWS_WEB_IDENTITY_TOKEN_FILE
환경 변수에 설정하다 경로에서 액세스 토큰을 읽습니다. 마지막으로 IdpServerResponse
구조체의 access_token
필드 값을 설정하다 합니다. 선택 사항으로 expires
및 refresh_token
필드의 값을 설정하다 합니다.
let credential = Credential::builder() .mechanism(AuthMechanism::MongoDbOidc) .oidc_callback(oidc::Callback::machine(move |_| { async move { let token_file_path = std::env::var("AWS_WEB_IDENTITY_TOKEN_FILE").map_err(mongodb::error::Error::custom)?; let access_token = tokio::fs::read_to_string(token_file_path).await?; Ok(IdpServerResponse::builder().access_token(access_token).build()) } .boxed() })) .build() .into(); client_options.credential = Some(credential); let client = Client::with_options(client_options)?; let res = client .database("test") .collection::<Document>("test") .find_one(doc! {}) .await?;
인력 ID 인증 프로세스 에 사람의 상호 작용이 포함되는 경우 Credential
구조체의 oidc_callback
필드 를 oidc::Callback::machine
대신 oidc::Callback::human
로 설정하여 클라이언트 를 구성해야 합니다. Rust 운전자 는 다음 프로세스 에서 콜백 을 사용합니다.
운전자 는 제공된 사용자 이름 에 대한 ID 제공자 정보(IDPInfo)를 검색합니다.
콜백 은 IDP와 협상하여
access_token
및 잠재적인refresh_token
및 시간 초과 값(구성된 경우)을 가져옵니다. 콜백 은Result<IdpServerInfo>
을(를) 반환합니다.
다음 예시 에서는 인력 ID를 처리하다 하기 위한 사용자 지정 콜백 을 정의합니다. 이 예시 를 사용 사례 에 맞게 사용자 지정하려면 을(를)<human flow>
자체 사용자 지정 흐름으로 바꿉니다. 자세한 내용은 OIDC를 사용한 권한 부여 코드 흐름을 참조하세요.
let callback = Callback::human(move |context| { async move { "<human flow>"; todo!("human flow") } .boxed() }); let credential = Credential::builder() .mechanism(AuthMechanism::MongoDbOidc) .oidc_callback(callback) .build(); client_options.credential = Some(credential); let client = Client::with_options(client_options)?; let res = client .database("test") .collection::<Document>("test") .find_one(doc! {}) .await?;
추가 정보
이 가이드의 개념에 대해 자세히 알아보려면 다음 문서를 참조하세요.
MongoDB ServerMongoDB Server LDAP 매뉴얼의 프록시 인증을 위한 지원
연결 옵션 가이드
MongoDB Server 매뉴얼의 연결 문자열
API 문서
이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.