엔터프라이즈 인증 메커니즘
개요
이 가이드에서는 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?;
Kubernetes
애플리케이션 이 Kubernetes 클러스터 에서 실행되는 경우 Rust 드라이버의 내장 Kubernetes 지원 사용하여 MongoDB 에 인증할 수 있습니다.
Credential
구조체의 mechanism
필드 AuthMechanism::MongoDbOidc
로 설정하여 Kubernetes 용 OIDC를 구성할 수 있습니다. 그런 다음 mechanism_properties
필드 에서 ENVIRONMENT
속성 k8s
로 설정하여 인증 메커니즘 지정합니다.
다음 코드 예시 에서는 Client
를 만들 때 이러한 옵션을 설정하다 하는 방법을 보여 줍니다.
let credential = Credential::builder() .mechanism(AuthMechanism::MongoDbOidc) .mechanism_properties( doc! { "ENVIRONMENT": "k8s" } ) .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 운전자 Amazon Web Services 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 문서를 참조하세요.