문서 메뉴
문서 홈
/ / /
Rust 드라이버
/

인증 메커니즘.

이 페이지의 내용

  • 개요
  • SCRAM 기반 메커니즘
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-AWS 메커니즘
  • MONGODB-X509 메커니즘
  • 추가 정보
  • API 문서

이 가이드에서는 MongoDB Community Edition에서 사용할 수 있는 인증 메커니즘을 사용하는 방법을 배울 수 있습니다. MongoDB에 연결할 때 인증 메커니즘을 사용하여 드라이버와 서버 간에 신뢰를 설정할 수 있습니다.

경량 디렉토리 액세스 프로토콜(LDAP) 서버를 사용하여 MongoDB에 인증하는 방법을 알아보려면 엔터프라이즈 인증 메커니즘에 대한 가이드를 참조하세요.

MongoDB deployment에 연결하는 방법에 대해 자세히 알아보려면 연결 가이드를 참조하세요.

이 가이드에서는 다음과 같은 인증 메커니즘에 대해 설명합니다.

  • SCRAM 기반 메커니즘

  • MONGODB-AWS 메커니즘

  • MONGODB-X509 메커니즘

특정 인증 메커니즘을 선택하려면 연결 문자열의 옵션 또는 Credential 구조체에 메커니즘, 자격 증명 및 기타 필요한 정보를 지정할 수 있습니다.

이 가이드의 예제에서는 Credential 구조체에서 인증을 구성하는 방법을 보여줍니다.

인증을 위한 연결 문자열 옵션에 대해 자세히 알아보려면 서버 매뉴얼의 연결 문자열 URI 형식 가이드의 인증 옵션 섹션을 참조하세요.

SCRAM(솔티드 챌린지 응답 인증 메커니즘)은 사용자 이름과 비밀번호를 사용하여 서버를 인증하는 인증 메커니즘 그룹을 나타냅니다.

MongoDB는 다음과 같은 SCRAM 기반 인증 메커니즘을 지원합니다.

  • SCRAM-SHA-256: SHA-256 알고리즘으로 암호화된 데이터베이스 사용자 이름과 비밀번호를 사용하는 인증 메커니즘입니다.

  • SCRAM-SHA-1: SHA-1 알고리즘으로 암호화된 데이터베이스 사용자 이름과 비밀번호를 사용하는 인증 메커니즘입니다.

중요

기본 인증 메커니즘

인증 메커니즘을 지정하지 않으면 서버는 연결 중인 서버의 버전에 따라 달라지는 기본 인증 메커니즘인 SCRAM 기반 메커니즘을 사용하여 자격 증명의 유효성을 검사하려고 시도합니다.

SCRAM-SHA-256 메커니즘은 MongoDB Server 버전 4.0 이상의 기본 인증 메커니즘입니다.

기본 인증 메커니즘을 사용하려면 Credential 구조체를 인스턴스화할 때 mechanism 필드만 생략합니다. 이 예제에서는 다음 자리 표시자를 사용합니다.

  • db_username: 데이터베이스 사용자 이름

  • db_password: 데이터베이스 비밀번호

  • db: 사용자와 연결된 인증 데이터베이스

let uri = "<connection string>";
let mut client_options = ClientOptions::parse_async(uri).await?;
let default_cred = Credential::builder()
.username("<db_username>".to_string())
.password("<db_password>".to_string())
.source("<db>".to_string())
.build();
client_options.credential = Some(default_cred);
let client = Client::with_options(client_options)?;

SCRAM-SHA-256 인증 메커니즘을 지정하려면 Credential 구조체의 mechanism 필드를 AuthMechanism::ScramSha256 로 설정합니다. 이 예에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.

  • db_username: 데이터베이스 사용자 이름

  • db_password: 데이터베이스 비밀번호

  • db: 사용자와 연결된 인증 데이터베이스

let uri = "<connection string>";
let mut client_options = ClientOptions::parse_async(uri).await?;
let scram_sha_256_cred = Credential::builder()
.username("<db_username>".to_string())
.password("<db_password>".to_string())
.mechanism(AuthMechanism::ScramSha256)
.source("<db>".to_string())
.build();
client_options.credential = Some(scram_sha_256_cred);
let client = Client::with_options(client_options)?;

SCRAM-SHA-1 인증 메커니즘을 지정하려면 Credential 구조체의 mechanism 필드를 AuthMechanism::ScramSha1 로 설정합니다. 이 예에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.

  • db_username: 데이터베이스 사용자 이름

  • db_password: 데이터베이스 비밀번호

  • db: 사용자와 연결된 인증 데이터베이스

let uri = "<connection string>";
let mut client_options = ClientOptions::parse_async(uri).await?;
let scram_sha_1_cred = Credential::builder()
.username("<db_username>".to_string())
.password("<db_password>".to_string())
.mechanism(AuthMechanism::ScramSha1)
.source("<db>".to_string())
.build();
client_options.credential = Some(scram_sha_1_cred);
let client = Client::with_options(client_options)?;

MONGODB-AWS 인증 메커니즘은 AWS IAM(Amazon Web Services Identity and Access Management) 자격 증명을 사용해 사용자를 인증합니다.

이 인증 메커니즘을 사용하려면 프로젝트의 Cargo.toml 파일에 있는 mongodb 의존성에 aws-auth 기능 플래그를 추가해야 합니다. 다음 예시에서는 MONGODB-AWS 인증 메커니즘을 활성화하기 위해 mongodb 의존성 기능 목록에 포함되어야 하는 항목을 확인할 수 있습니다.

[dependencies.mongodb]
version = "3.1.0"
features = [ "aws-auth", ... ]

중요

Rust 드라이버에서 MONGODB-AWS 인증 메커니즘을 사용하려면 애플리케이션이 다음 요구 사항을 충족해야 합니다.

  • MongoDB Server 버전 4.4 이상에 연결되어 있습니다.

  • tokio 비동기 런타임을 사용하고 있습니다.

드라이버는 자격 증명이 발견된 첫 번째 소스에서만 자격 증명을 얻습니다. 드라이버는 다음 소스의 자격 증명을 다음 순서로 확인합니다.

  1. Credential 구조체 또는 연결 string.

  2. 환경 변수.

  3. 웹 ID 토큰 파일.

  4. AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 환경 변수에 지정된 Amazon Web Services ECS 엔드포인트.

  5. Amazon Web Services EC2 엔드포인트. 자세한 내용 은 작업에 대한 IAM 역할을 참조하세요. Amazon Web Services 문서에서 확인 가능합니다.

예를 들어 연결 string 에 Amazon Web Services 자격 증명을 지정하면 드라이버는 해당 자격 증명을 사용하고 환경 변수에 지정했을 수 있는 자격 증명은 무시합니다.

아래의 Credential Struct, Environment VariablesWeb Identity Token File 탭에서 선택하여 해당 방법으로 Amazon Web Services IAM 자격 증명을 설정하는 방법을 보여주는 코드 샘플을 확인하십시오.

MONGODB-AWS 인증 메커니즘을 지정하려면 Credential 구조체의 mechanism 필드를 AuthMechanism::MongoDbAws 로 설정합니다. 이 예에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.

  • access key ID: Amazon Web Services 액세스 키 ID

  • secret access key: AWS 시크릿 액세스 키

  • db: 사용자와 연결된 인증 데이터베이스

임시 자격 증명을 사용하는 경우 AWS 세션 토큰 값이 포함된 문서를 만든 다음 Credential 구조체의 mechanism_properties 필드를 이 문서로 설정합니다. 임시 자격 증명을 사용하지 않는 경우 다음 예제의 9 줄을 생략합니다.

1let uri = "<connection string>";
2let mut client_options = ClientOptions::parse_async(uri).await?;
3
4let aws_cred = Credential::builder()
5 .username("<access key ID>".to_string())
6 .password("<secret access key>".to_string())
7 .source("<db>".to_string())
8 .mechanism(AuthMechanism::MongoDbAws)
9 .mechanism_properties(doc!("AWS_SESSION_TOKEN": "<session token>"))
10 .build();
11
12client_options.credential = Some(aws_cred);
13let client = Client::with_options(client_options)?;

Security Token Service(STS) 역할 맡김 요청에서 임시 Amazon Web Services IAM 자격 증명을 얻을 수 있습니다. 이 프로세스에 대한 자세한 내용은 AssumeRole Amazon Web Services 설명서를 참조하세요.

환경 변수에 AWS 자격 증명을 저장하려면 셸에서 다음 명령을 실행합니다.

export AWS_ACCESS_KEY_ID=<access key ID>
export AWS_SECRET_ACCESS_KEY=<secret access key>
export AWS_SESSION_TOKEN=<session token>

AWS 세션 토큰을 사용하지 않는 경우 AWS_SESSION_TOKEN 환경 변수를 설정하는 줄을 생략합니다.

Credential 구조체의 mechanism 옵션을 AuthMechanism::MongoDbAws 로 설정합니다. 드라이버는 환경 변수에서 AWS IAM 자격 증명을 읽습니다. 다음 코드는 AWS 인증이 지정된 Credential 구조체를 정의하고 MongoDB에 연결하는 방법을 보여줍니다.

let uri = "<connection string>";
let mut client_options = ClientOptions::parse_async(uri).await?;
let aws_cred = Credential::builder().mechanism(AuthMechanism::MongoDbAws).build();
client_options.credential = Some(aws_cred);
let client = Client::with_options(client_options)?;

웹 ID 제공자로부터 얻은 OIDC(OpenID Connect) 토큰을 사용하여 Amazon Elastic Kubernetes Service(EKS) 또는 기타 서비스에 인증할 수 있습니다. OIDC 토큰을 사용하려면 토큰이 포함된 파일을 만든 다음 다음 셸 명령에 표시된 대로 값이 토큰 파일의 절대 경로인 환경 변수를 정의합니다.

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to OIDC token file>

Credential 구조체의 mechanism 옵션을 AuthMechanism::MongoDbAws 로 설정합니다. 드라이버는 토큰 파일에서 AWS IAM 자격 증명을 읽습니다. 다음 코드는 AWS 인증이 지정된 Credential 구조체를 정의하고 MongoDB에 연결하는 방법을 보여줍니다.

let uri = "<connection string>";
let mut client_options = ClientOptions::parse_async(uri).await?;
let aws_cred = Credential::builder().mechanism(AuthMechanism::MongoDbAws).build();
client_options.credential = Some(aws_cred);
let client = Client::with_options(client_options)?;

MONGODB-X509 인증 메커니즘은 클라이언트 인증서의 RDN(상대적 고유 이름)으로 식별되는 사용자를 인증하기 위해 X.509 인증서와 함께 TLS(전송 수준 보안)를 사용합니다.

이 인증 메커니즘을 지정하면 서버는 다음 파일을 읽어 연결을 인증합니다.

  • TLS 연결을 구축할 때 신뢰할 수 있는 하나 이상의 인증 기관이 포함된 인증 기관(CA) 파일

  • 클라이언트 인증서 비공개 키를 참조하는 인증서 키 파일

MONGODB-X509 인증 메커니즘을 지정하려면 Credential 구조체의 mechanism 필드를 AuthMechanism::MongoDbX509 로 설정합니다. 이 예에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.

  • path to CA certificate: CA 파일의 파일 경로

  • path to private client key: 인증서 키 파일의 파일 경로

  • db: 사용자와 연결된 인증 데이터베이스

다음 코드는 연결 string 에서 인증서를 참조하고, MONGODB-X509 인증 메커니즘을 지정하고, MongoDB 에 연결하는 방법을 보여줍니다.

let uri = format!(
"mongodb://<hostname>:<port>/?tlsCAFile={tlsCAFile}&tlsCertificateKeyFile={tlsCertificateKeyFile}",
tlsCAFile = "<path to CA certificate>",
tlsCertificateKeyFile = "<path to private client key>"
);
let mut client_options = ClientOptions::parse_async(uri).await?;
let x509_cred = Credential::builder().mechanism(AuthMechanism::MongoDbAws).build();
client_options.credential = Some(x509_cred);
let client = Client::with_options(client_options)?;

MongoDB 인증에 대해 자세히 알아보려면 서버 매뉴얼의 인증을 참조하세요.

MongoDB deployment 사용자 관리에 대해 자세히 알아보려면 서버 매뉴얼의 사용자를 참조하세요.

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

돌아가기

Stable API

다음

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