인증 메커니즘.
이 페이지의 내용
개요
이 가이드 에서는 MongoDB 에 사용자를 인증하기 위해 C 운전자 에서 사용할 수 있는 메커니즘에 대해 설명합니다.
SCRAM-SHA-256
SCRAM-SHA-256,RFC 7677 에 정의된 대로 는 MongoDB v 를 실행하는 MongoDB 배포의 기본 인증 메커니즘입니다.40 또는 그 이후 버전.
SCRAM-SHA-256 를 사용하여 인증하려면 다음 연결 옵션을 설정하다 합니다.
username
: 인증할 사용자 이름 입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.password
: 인증할 비밀번호입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.authSource
: 인증할 MongoDB database 입니다. 기본값 C 운전자 는 연결 URI를 포함하는 경우 해당 데이터베이스 에 대해 인증합니다. 인증 데이터베이스 를 지정하지 않으면admin
데이터베이스 를 기준으로 인증합니다.authMechanism
:SCRAM-SHA-256
로 설정합니다.
다음 코드 예시 와 같이 연결 문자열 에 매개 변수를 사용하여 이러한 옵션을 설정하다 수 있습니다.
const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-256&authSource=<authentication database>"; mongoc_client_t *client = mongoc_client_new(uri);
SCRAM-SHA-1
SCRAM-SHA-1,RFC 5802 에 정의된 대로 는 MongoDB v 를 실행하는 MongoDB 배포의 기본 인증 메커니즘입니다. .36
이 메커니즘으로 인증하려면 다음 연결 옵션을 설정합니다.
username
: 인증할 사용자 이름 입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.password
: 인증할 비밀번호입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.authSource
: 인증할 MongoDB database 입니다. 기본값 C 운전자 는admin
데이터베이스 에 대해 인증합니다.authMechanism
:"SCRAM-SHA-1"
로 설정합니다.
다음 코드 예시 와 같이 연결 문자열 에 매개 변수를 사용하여 이러한 옵션을 설정하다 수 있습니다.
const char *uri = "mongodb://<percent-encoded username>:<percent-encoded password>@<hostname>:<port>/?authMechanism=SCRAM-SHA-1&authSource=<authentication database>"; mongoc_client_t *client = mongoc_client_new(uri);
MONGODB-X509
TLS 지원 을 사용하여 C 운전자 를 컴파일하는 경우, C 운전자 는 TLS 핸드셰이크 중에 ID를 증명하기 위해 X.509 클라이언트 인증서를 MongoDB 에 제공할 수 있습니다. MONGODB-X509 인증 메커니즘 은 이 인증서를 사용하여 클라이언트 를 인증합니다.
이 메커니즘으로 인증하려면 다음 단계를 수행하세요.
mongoc_ssl_opt_t
구조를 만듭니다. 이 구조에서pem_file
필드 를 클라이언트 인증서 및 비공개 키가 포함된.pem
파일 의 파일 경로로 설정하다 합니다.연결 URI에서
authMechanism
연결 옵션을"MONGODB-X509"
로 설정하다 합니다.
다음 코드 예시 는 MONGODB-X509 메커니즘을 사용하여 인증하는 MongoDB 클라이언트 를 생성하는 방법을 보여줍니다.
mongoc_client_t *client; mongoc_ssl_opt_t ssl_opts = {0}; ssl_opts.pem_file = "mycert.pem"; const char *uri = "mongodb://<percent-encoded username>@<hostname>:<port>/?authMechanism=MONGODB-X509"; mongoc_client_t *client = mongoc_client_new(uri); mongoc_client_set_ssl_opts(client, &ssl_opts);
MONGODB-AWS
중요
MONGODB-AWS 인증 메커니즘에는 MongoDB v4.4 이상이 필요합니다.
MONGODB-AWS
인증 메커니즘 은 AWS IAM(Amazon Web Services ID 및 액세스 관리) 또는 AWS Lambda 자격 증명 을 사용하여 애플리케이션 을 인증합니다. 이 메커니즘을 사용하여 애플리케이션 을 인증하려면 먼저 $external
데이터베이스 에 연결된 Amazon 리소스 이름(ARN)을 가진 사용자를 생성합니다. 그런 다음 연결 URI에 MONGODB-AWS
authMechanism을 지정합니다.
MONGODB-AWS
메커니즘을 사용하는 경우 C 운전자 는 나열된 순서대로 다음 소스에서 AWS 자격 증명 을 조회 하려고 시도합니다.
연결 URI에 전달된 명명된 매개변수
환경 변수
Amazon Web Services EKS AssumeRoleWithWebIdentity 요청
ECS 컨테이너 메타데이터
EC2 인스턴스 메타데이터
다음 섹션에서는 C 운전자 를 사용하여 이러한 소스에서 자격 증명 을 조회 하고 이를 사용하여 애플리케이션 을 인증하는 방법에 대해 설명합니다.
연결 URI
먼저 C 운전자 는 AWS 자격 증명 을 연결 URI의 일부로 mongoc_client_t
생성자에 전달했는지 확인합니다. 연결 URI에 자격 증명 을 전달하려면 다음 연결 옵션을 설정하다 합니다.
username
: 인증할 Amazon Web Services IAM 액세스 키 ID 입니다.password
: Amazon Web Services IAM 시크릿 액세스 키입니다.authMechanism
:"MONGODB-AWS"
로 설정합니다.
다음 예시 와 같이 연결 URI에서 이러한 옵션을 설정하다 수 있습니다.
const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
Amazon Web Services 세션 토큰을 authMechanismProperties
매개변수에 전달하여 포함할 수도 있습니다.
const char *uri = "mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<token>"); mongoc_client_t *client = mongoc_client_new(uri);
환경 변수
연결 URI에 사용자 이름 과 비밀번호를 포함하지 않으면 C 운전자 는 다음 환경 변수에서 AWS 자격 증명 을 조회 하려고 시도합니다.
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"
로 설정하다 합니다.
const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
ECS Metadata
애플리케이션 이 Elastic Container Service(ECS) 컨테이너 에서 실행되는 경우, C 운전자 는 ECS 엔드포인트에서 임시 AWS 자격 증명 을 자동으로 조회 할 수 있습니다. 이렇게 하려면 다음 예시 와 같이 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
이라는 환경 변수에 ECS 엔드포인트의 URI를 지정합니다.
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
환경 변수를 설정하다 한 후 다음 예시 와 같이 연결 URI의 authMechanism
매개 변수를 "MONGODB-AWS"
로 설정하다 합니다.
const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
EC2 인스턴스 메타데이터
C 운전자 는 Amazon Elastic Cloud Compute(EC2) 인스턴스 에서 임시 AWS 자격 증명 을 자동으로 조회 할 수 있습니다. EC2 인스턴스 내에서 임시 자격 증명 을 사용하려면 다음 예시 와 같이 연결 URI의 authMechanism
매개 변수를 "MONGODB-AWS"
로 설정하다 합니다.
const char *uri = "mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS"); mongoc_client_t *client = mongoc_client_new(uri);
참고
앞의 AWS 인증 방법에서 환경 변수를 설정하다 한 경우, C 운전자 는 EC2 인스턴스 에서 자격 증명을 조회 하기 전에 해당 방법을 사용하여 자격 증명 조회 을 시도합니다. EC2 인스턴스 에서만 자격 증명 을 조회 하려면 환경 변수가 설정하다 되어 있지 않은지 확인합니다.
API 문서
C 운전자 에서 애플리케이션 을 인증하는 방법에 학습 보려면 다음 API 설명서를 참조하세요.