Docs Menu
Docs Home
/ / /
C++ 드라이버
/

인증 메커니즘.

이 페이지의 내용

  • 개요
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB X.509
  • MONGODB-AWS
  • 연결 URI
  • 환경 변수
  • AssumeRoleWithWebIdentity 요청
  • ECS Metadata
  • EC2 인스턴스 메타데이터
  • API 문서

이 가이드 에서는 C++ 운전자 에서 사용자를 인증하는 데 사용할 수 있는 메커니즘에 대해 설명합니다.

RFC 7677 에 정의된 SCRAM -SHA-256 는 MongoDB v 실행 MongoDB 배포의 기본값 인증 메커니즘 입니다.40 또는 그 이후 버전.

이 메커니즘으로 인증하려면 다음 연결 옵션을 설정합니다.

  • db_username: 인증할 데이터베이스 사용자 이름 입니다.

  • db_password: 인증할 데이터베이스 비밀번호입니다.

  • authSource: 인증할 MongoDB database 입니다. 기본값 으로 C++ 운전자 는 연결 URI를 포함하는 경우 해당 데이터베이스 에 대해 인증합니다. 그렇지 않으면 admin 데이터베이스 를 기준으로 인증합니다.

  • authMechanism: "SCRAM-SHA-256" 로 설정합니다.

다음 예시 와 같이 mongocxx::client 객체 를 생성할 때 연결 string 에서 이러한 옵션을 설정하다 수 있습니다.

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-256");
auto client = mongocxx::client(uri);

SCRAM-SHA-1,RFC 5802 에 정의된 대로 는 MongoDB v 를 실행하는 MongoDB 배포의 기본 인증 메커니즘입니다. .36

이 메커니즘으로 인증하려면 다음 연결 옵션을 설정합니다.

  • db_username: 인증할 사용자 이름 입니다.

  • db_password: 인증할 비밀번호입니다.

  • authSource: 인증할 MongoDB database 입니다. 기본값 으로 C++ 운전자 는 admin 데이터베이스 에 대해 인증합니다.

  • authMechanism: "SCRAM-SHA-1" 로 설정합니다.

다음 예시 와 같이 mongocxx::client 객체 를 생성할 때 연결 string 에서 이러한 옵션을 설정하다 수 있습니다.

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-1");
auto client = mongocxx::client(uri);

TLS를 활성화 하면 TLS 핸드셰이크 중에 C++ 운전자 가 X.509 클라이언트 인증서를 MongoDB 에 제공하여 신원을 증명할 수 있습니다. MONGODB-X509 인증 메커니즘 은 이 인증서를 사용하여 클라이언트 를 인증합니다.

이 메커니즘으로 인증하려면 다음 연결 옵션을 설정합니다.

  • tls: True 로 설정합니다.

  • tlsCertificateKeyFile: 클라이언트 인증서 및 비공개 키가 포함된 .pem 파일의 파일 경로입니다.

  • authMechanism: "MONGODB-X509" 로 설정합니다.

다음 예시 와 같이 mongocxx::client 객체 를 생성할 때 연결 string 에서 이러한 옵션을 설정하다 수 있습니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"tls=true&tlsCertificateKeyFile=path/to/client.pem&authMechanism=MONGODB-X509");
auto client = mongocxx::client(uri);

TLS 활성화에 학습 보려면 전송 계층 보안(TLS) 구성을 참조하세요.

중요

MONGODB-AWS 인증 메커니즘에는 MongoDB v4.4 이상이 필요합니다.

MONGODB-AWS 인증 메커니즘 은 Amazon Web Services IAM(Amazon Web Services ID 및 액세스 관리) 또는 Amazon Web Services Lambda 자격 증명 을 사용하여 애플리케이션 을 인증합니다. 이 메커니즘을 사용하여 인증하려면 먼저 $external 데이터베이스 에 연결된 Amazon 리소스 이름(ARN)으로 사용자를 생성한 다음 URI에 MONGODB-AWS authMechanism을 지정합니다.

MONGODB-AWS 메커니즘을 사용하는 경우 C++ 운전자 는 나열된 순서대로 다음 소스에서 Amazon Web Services 자격 증명 을 조회 하려고 시도합니다.

  1. 연결 URI에 전달된 명명된 매개변수

  2. 환경 변수

  3. Amazon Web Services EKS AssumeRoleWithWebIdentity 요청

  4. ECS 컨테이너 메타데이터

  5. EC2 인스턴스 메타데이터

다음 섹션에서는 C++ 운전자 를 사용하여 이러한 소스에서 자격 증명 을 조회 하고 이를 사용하여 애플리케이션 을 인증하는 방법을 설명합니다.

먼저 C++ 운전자 는 Amazon Web Services 자격 증명 을 연결 URI의 일부로 MongoClient 생성자에 전달했는지 확인합니다. 연결 URI에 자격 증명 을 전달하려면 다음 연결 옵션을 설정하다 합니다.

  • username: 인증할 Amazon Web Services IAM 액세스 키 ID 입니다.

  • password: Amazon Web Services IAM 시크릿 액세스 키입니다.

  • authMechanism: "MONGODB-AWS" 로 설정합니다.

다음 예시 와 같이 mongocxx::client 객체 를 생성할 때 연결 string 에서 이러한 옵션을 설정하다 수 있습니다.

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

Amazon Web Services 세션 토큰을 authMechanismProperties 매개변수에 전달하여 포함할 수도 있습니다.

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWSS&authMechanismProperties=AWS_SESSION_TOKEN:<token>");
auto client = mongocxx::client(uri);

MongoClient 객체 를 구성할 때 사용자 이름 과 비밀번호를 제공하지 않으면 C++ 운전자 는 다음 환경 변수에서 Amazon Web Services 자격 증명 을 조회 하려고 시도합니다.

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN (선택 사항)

이러한 환경 변수를 사용하여 애플리케이션을 인증하려면 먼저 다음 코드 예제와 같이 인증에 필요한 Amazon Web Services IAM 값으로 설정합니다.

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

이러한 환경 변수를 설정하다 한 후 다음 예시 와 같이 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS" 로 설정하다 합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

애플리케이션 이 OIDC(OpenID Connect) ID 제공자 로부터 EKS 클러스터 의 사용자를 인증하는 경우 C++ 운전자 는 AssumeRoleWithWebIdentity 요청 을 통해 OIDC 토큰을 애플리케이션 의 임시 Amazon Web Services 자격 증명 으로 교환할 수 있습니다.

AssumeRoleWithWebIdentity 요청 에서 반환된 임시 Amazon Web Services IAM 자격 증명 으로 인증하려면 Amazon Web Services 구성 파일 이 사용자 환경에 있고 AWS_WEB_IDENTITY_TOKEN_FILEAWS_ROLE_ARN 환경 변수로 구성되어 있는지 확인합니다. 구성 파일 을 생성하고 구성하는 방법을 학습 보려면 Amazon Web Services 구성 을 Amazon Web Services 참조하세요. 문서에서 확인 가능합니다.

AssumeRoleWithWebIdentity 요청 에 대한 환경을 구성한 후 다음 예시 와 같이 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS" 로 설정하다 합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

AssumeRoleWithWebIdentity 요청을 사용하여 애플리케이션을 인증하는 방법에 대한 자세한 내용은 다음 Amazon Web Services 설명서를 참조하세요.

애플리케이션 이 Elastic Container Service(ECS) 컨테이너 에서 실행되는 경우 C++ 운전자 는 ECS 엔드포인트에서 임시 Amazon Web Services 자격 증명 을 자동으로 조회 할 수 있습니다. 이렇게 하려면 다음 예시 와 같이 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 이라는 환경 변수에 ECS 엔드포인트의 URI를 지정합니다.

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

환경 변수를 설정하다 한 후 다음 예시 와 같이 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS" 로 설정하다 합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

C++ Amazon Web Services 운전자 는 Amazon Elastic Cloud Compute(EC) 인스턴스2 에서 임시 자격 증명 을 자동으로 조회 할 수 있습니다. EC2 인스턴스 내에서 임시 자격 증명 을 사용하려면 다음 예시 와 같이 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS" 로 설정하다 합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

참고

앞의 Amazon Web Services 인증 방법에서 환경 변수를 설정하다 한 경우, C++ 운전자 는 EC2 인스턴스 에서 자격 증명을 조회 하기 전에 해당 방법을 사용하여 자격 증명 조회 을 시도합니다. EC2 인스턴스 에서만 자격 증명 을 조회 하려면 환경 변수가 설정하다 되어 있지 않은지 확인합니다.

C++ 운전자 에서 mongocxx::client 객체 를 만드는 방법에 학습 보려면 다음 API 설명서를 참조하세요.

돌아가기

보안