Docs Menu
Docs Home
/ / /
Rust 드라이버
/

엔터프라이즈 인증 메커니즘

이 페이지의 내용

  • 개요
  • LDAP 인증(일반)
  • 예시
  • MONGODB-OIDC
  • Azure IMDS
  • GCP IMDS
  • Kubernetes
  • 사용자 지정 콜백
  • 추가 정보
  • API 문서

이 가이드에서는 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(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 인증 메커니즘을 사용하려면 Linux 플랫폼에서 실행되는 MongoDB Server v7.0 이상이 필요합니다.

Rust 운전자워크로드 ID에 대한 OIDC(OpenID Connect) 인증 지원합니다. 워크로드 ID 는 다른 서비스 및 리소스를 인증하고 액세스 위해 애플리케이션, 서비스, 스크립트 또는 컨테이너 와 같은 소프트웨어 워크로드 에 할당하는 ID입니다.

다음 섹션에서는 MONGODB-OIDC 인증 메커니즘을 사용하여 다양한 플랫폼에서 인증하는 방법을 설명합니다.

MONGODB-OIDC 인증 메커니즘 에 대해 자세히 학습 서버 매뉴얼에서 OpenID Connect 인증 및 MongoDB Server 매개변수를 참조하세요.

애플리케이션 이 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?;

애플리케이션 이 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 클러스터 에서 실행되는 경우 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 필드 값을 설정하다 . 선택 사항으로 expiresrefresh_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 운전자 다음 프로세스 에서 콜백 사용합니다.

  1. 운전자 제공된 사용자 이름 에 대한 ID 제공자 정보(IDPInfo)를 검색합니다.

  2. 콜백 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?;

이 가이드의 개념에 대해 자세히 알아보려면 다음 문서를 참조하세요.

이 가이드에서 사용되는 메서드 또는 유형에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.

돌아가기

인증