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

인증

이 페이지의 내용

  • 기본 인증(SCRAM-SHA-256)
  • 기본 인증(SCRAM-SHA-1)
  • 레거시 인증(MONGODB-CR)
  • GSSAPI(Kerberos) 인증
  • SASL 일반 인증
  • X.509 인증서 인증
  • Amazon Web Services IAM을 통한 인증
  • URI를 통한 Amazon Web Services 자격 증명
  • 환경을 통한 Amazon Web Services 자격 증명
  • ECS를 통한 Amazon Web Services 자격 증명
  • EC2를 통한 Amazon Web Services 자격 증명

이 가이드 에서는 MongoDB C 드라이버 에서 인증 옵션을 사용하는 방법에 대해 설명합니다. 연결하기 전에 MongoDB 서버 가 인증 을 위해 올바르게 구성되었는지도 확인합니다. 자세한 내용은 MongoDB 보안 문서 를 참조하세요.

MongoDB C 드라이버는 MongoDB 연결 URI를 사용하여 여러 인증 메커니즘을 지원합니다.

기본값 으로 사용자 이름 과 비밀번호가 연결 string (및 선택적 인증 데이터베이스 )의 일부로 제공되는 경우 서버 의 기본값 인증 메커니즘 을 통해 연결하는 데 사용됩니다.

기본값 이외의 특정 인증 메커니즘 을 선택하려면 아래 지원되는 메커니즘 목록을 참조하세요.

mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb");

현재 authMechanism 연결 string 옵션에 지원되는 값은 다음과 같습니다.

MongoDB 4.0 은256 RFC 7677 에 설명된 보다 안전한 SHA- 해시를 사용하여 SCRAM 프로토콜 을 사용한 인증 지원 을 도입합니다. . 이 인증 메커니즘 을 사용하면 인증할 때 비밀번호가 실제로 유선으로 전송되지 않고 클라이언트 비밀번호가 서버 가 알고 있는 비밀번호와 동일하다는 계산된 증명이 의미합니다. MongoDB 4.0, C 운전자 는 저장된 SCRAM-SHA-1 및 SCRAM-SHA-256 자격 증명 을 가진 사용자에 대한 올바른 기본값 인증 메커니즘 을 결정할 수 있습니다.

mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authSource=mydb");
/* the correct authMechanism is negotiated between the driver and server. */

또는 SCRAM-SHA-256 를 authMechanism으로 명시적으로 지정할 수 있습니다.

mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM-SHA-256&authSource=mydb");

MongoDB 이전의 기본값 인증 메커니즘 4.0 은 SCRAM-SHA-1 (RFC 5802). 이 인증 메커니즘 을 사용하면 인증할 때 비밀번호가 실제로 유선으로 전송되지 않고 클라이언트 비밀번호가 서버 가 알고 있는 비밀번호와 동일하다는 계산된 증명이 의미합니다.

mongoc_client_t *client = mongoc_client_new ("mongodb://user:password@localhost/?authMechanism=SCRAM-SHA-1&authSource=mydb");

참고

SCRAM-SHA-1 기본값 admin 데이터베이스 에 대해 인증합니다. 사용자가 다른 데이터베이스 에서 생성된 경우 authSource를 지정해야 합니다.

MONGODB-CR authMechanism은 더 이상 사용되지 않으며 MongoDB 4.0 에서 더 이상 작동하지 않습니다. 대신 authMechanism을 지정하지 않으면 드라이버가 서버와 호환되는 인증 메커니즘을 사용합니다.

참고

UNIX와 유사한 환경에서 Kerberos 를 지원 하려면 cyrus-sasl 에 대해 운전자 를 컴파일해야 합니다.

Windows 에서 Kerberos 를 지원 하려면 Windows 네이티브 SSPI 또는 cyrus-sasl 에 대해 운전자 를 컴파일해야 합니다. 운전자 의 기본값 구성은 Windows 네이티브 SSPI를 사용합니다.

기본 구성을 수정하려면 cmake 옵션 ENABLE_SASL 을 사용합니다.

GSSAPI (Kerberos) 인증 은 MongoDB Enterprise Edition 에서 사용할 수 있습니다 . GSSAPI 을 사용하여 인증하려면 SASL 지원 과 함께 MongoDB C 운전자 를 설치해야 합니다.

UNIX와 유사한 환경에서는 다음 인증 방법을 사용하기 전에 kinit 명령을 실행 합니다.

$ kinit mongodbuser@EXAMPLE.COM
mongodbuser@EXAMPLE.COM's Password:
$ klistCredentials cache: FILE:/tmp/krb5cc_1000
Principal: mongodbuser@EXAMPLE.COM
Issued Expires Principal
Feb 9 13:48:51 2013 Feb 9 23:48:51 2013 krbtgt/EXAMPLE.COM@EXAMPLE.COM

이제 MongoDB URI를 사용하여 인증합니다. GSSAPI 은(는) $external 가상 데이터베이스에 대해 인증하므로 데이터베이스를 URI에 지정할 필요가 없습니다. Kerberos 주체는 URL로 인코딩 되어야 합니다 .

mongoc_client_t *client;
client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo-server.example.com/?authMechanism=GSSAPI");

참고

GSSAPI $external 데이터베이스 에 대해 인증하므로 authSource 데이터베이스 를 지정할 필요가 없습니다.

드라이버는 다음과 같은 GSSAPI 속성을 지원합니다.

  • CANONICALIZE_HOST_NAME참고: 호스트가 Kerberos 데이터베이스 에 사용된 것과 다른 호스트 이름을 보고하는 경우 Cyrus-SASL에 이 작업이 필요할 수 있습니다. 기본값 은 "false"입니다.

  • SERVICE_NAME: 기본값 인 'MongoDB'가 아닌 다른 서비스 이름을 사용합니다.

URL 에서 속성을 설정합니다.

mongoc_client_t *client;
client = mongoc_client_new ("mongodb://mongodbuser%40EXAMPLE.COM@mongo-server.example.com/?authMechanism=GSSAPI&"
"authMechanismProperties=SERVICE_NAME:other,CANONICALIZE_HOST_NAME:true");

Invalid net address 과 같은 오류가 발생하는 경우 애플리케이션 이 NAT(네트워크 주소 변환) 방화벽 뒤에 있는지 확인하세요. 이 경우 forwardableaddressless Kerberos 티켓을 사용하는 티켓 을 만듭니다. 이 작업은 -f -Akinit 로 전달하여 수행할 수 있습니다.

$ kinit -f -A mongodbuser@EXAMPLE.COM

참고

SASL PLAIN 인증 을 사용하려면 MongoDB C 드라이버 를 SASL 지원 으로 컴파일해야 합니다.

MongoDB Enterprise 는 처음에는 인증 을 LDAP 서버 에 위임하기 위한 SASL PLAIN 인증 메커니즘 을 지원합니다. SASL PLAIN 메커니즘을 사용하는 것은 사용자 이름과 비밀번호를 사용하는 과제 응답 메커니즘과 매우 유사합니다. 이 인증 메커니즘 은 LDAP 지원 을 위해 $external 가상 데이터베이스 를 사용합니다.

참고

SASL PLAIN 일반 텍스트 인증 메커니즘입니다. PLAIN 메커니즘을 사용할 때는 인증서 유효성 검사와 함께 TLS를 사용하여 MongoDB에 연결하는 것이 좋습니다.

mongoc_client_t *client;
client = mongoc_client_new ("mongodb://user:password@example.com/?authMechanism=PLAIN");

PLAIN $external 데이터베이스 에 대해 인증하므로 authSource 데이터베이스 를 지정할 필요가 없습니다.

참고

MongoDB C 드라이버 는 X.509 인증 지원 을 위한 TLS 지원 으로 컴파일되어야 합니다. 이 작업이 완료되면 다음 옵션을 사용하여 서버 를 시작합니다.

$ mongod --tlsMode requireTLS --tlsCertificateKeyFile server.pem --tlsCAFile ca.pem

MONGODB-X509 메커니즘은 TLS 협상 중에 운전자 가 제시한 X.509 인증서의 고유 주체 이름에서 파생된 사용자 이름 을 인증합니다. 이 인증 방법을 사용하려면 인증서 유효성 검사 와 함께 TLS 연결을 사용해야 합니다.

mongoc_client_t *client;
mongoc_ssl_opt_t ssl_opts = { 0 };
ssl_opts.pem_file = "mycert.pem";
ssl_opts.pem_pwd = "mycertpassword";
ssl_opts.ca_file = "myca.pem";
ssl_opts.ca_dir = "trust_dir";
ssl_opts.weak_cert_validation = false;
client = mongoc_client_new ("mongodb://x509_derived_username@localhost/?authMechanism=MONGODB-X509");
mongoc_client_set_ssl_opts (client, &ssl_opts);

MONGODB-X509 $external 데이터베이스 에 대해 인증하므로 authSource 데이터베이스 를 지정할 필요가 없습니다. x509파생 사용자 이름에 대한 자세한 내용은 MongoDB 서버 x를 참조하세요.509 튜토리얼.

참고

MongoDB C 드라이버 는 사용자 이름이 제공되지 않을 때 x509 파생 사용자 이름 을 확인하려고 시도하며, MongoDB 3.4 현재 사용자 이름을 제공하면 이 사용자 이름 이 전혀 필요하지 않습니다.

메커니즘은 ID 및 액세스 관리(IAM)에서 제공하는 자격 증명 을 사용하여 서버를 인증합니다.MONGODB-AWS MongoDB Amazon Web Services

인증하려면 $external 데이터베이스 에 연결된 Amazon 리소스 이름(ARN)이 있는 사용자를 생성하고 URI에 MONGODB-AWS authMechanism 를 지정합니다.

mongoc_uri_t *uri = mongoc_uri_new ("mongodb://localhost/?authMechanism=MONGODB-AWS");

MONGODB-AWS 은 항상 $external 데이터베이스 에 대해 인증하므로 authSource 데이터베이스 를 지정할 필요가 없습니다.

자격 증명에는 access key id, secret access key 및 선택적 session token 가 포함됩니다. 다음과 같은 방법으로 얻을 수 있습니다.

자격 증명은 URI에 사용자 이름/비밀번호로 직접 전달될 수 있습니다.

mongoc_uri_t *uri = mongoc_uri_new ("mongodb://<access key id>:<secret access key>localhost/?authMechanism=MONGODB-AWS");

여기에는 authMechanismProperties 과 함께 전달된 session token 가 포함될 수 있습니다.

mongoc_uri_t *uri = mongoc_uri_new ("mongodb://<access key id>:<secret access key>localhost/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<token>");

자격 증명 이 URI를 통해 전달되지 않으면 libmongoc은 다음 환경 변수를 확인합니다.

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN (optional)

자격 증명 이 URI 또는 환경 변수와 함께 전달되지 않는 경우, libmongoc은 환경 변수 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 이 설정하다 되어 있는지 확인하고, 설정된 경우 링크 로컬 주소 를 쿼리하여 ECS 작업 메타데이터 에서 임시 자격 증명 조회 을 시도합니다.

자격 증명 이 URI 또는 환경 변수와 함께 전달되지 않고 환경 변수 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 이 설정하다 되지 않은 경우 libmongoc은 링크 로컬 주소를 쿼리하여 EC2 머신 메타데이터 에서 임시 자격 증명 을 조회 하려고 시도합니다.

다음도 참조하세요.

돌아가기

튜토리얼