인증 메커니즘.
개요
이 가이드에서는 MongoDB Community Edition에서 제공되는 인증 메커니즘을 사용하여 MongoDB로 인증하는 방법을 배울 수 있습니다. 인증 메커니즘은 연결 전에 보안을 보장하기 위해 드라이버와 서버가 클라이언트의 신원을 확인하는 프로세스입니다.
최신 버전의 MongoDB Community Edition에서 다음 인증 메커니즘을 사용할 수 있습니다.
GSSAPI/Kerberos
또는 LDAP
를 사용하여 인증하려면 엔터프라이즈 인증 메커니즘 기본 사항 페이지를 참조하세요. MongoDB cluster 에 대한 연결 설정에 대한 자세한 내용은 연결 가이드를 참조하세요.
인증 메커니즘 지정
다음 방법 중 하나를 사용하여 MongoDB에 연결할 때 인증 메커니즘 및 자격 증명을 지정할 수 있습니다.
연결 문자열(연결 URI 라고도 함)은 MongoDB deployment에 연결하는 방법과 연결된 동안 작동하는 방법을 드라이버에 알려주는 문자열입니다.
지원되는 인증 메커니즘을 위한 팩토리 메서드로
MongoCredential
클래스에 포함되어 있습니다.
메커니즘
다음 예시에는 다음 자리 표시자를 사용하는 코드 예시가 포함되어 있습니다.
<db_username>
- MongoDB 사용자 이름<db_password>
- MongoDB 사용자의 비밀번호입니다.<hostname>
- 클라이언트가 액세스할 수 있는 MongoDB 서버의 네트워크 주소입니다.<port>
- MongoDB 서버의 포트 번호입니다.<authenticationDb>
- 사용자의 인증 데이터가 포함된 MongoDB database입니다. 이 매개 변수를 생략하면 드라이버는 기본값admin
을(를) 사용합니다.
기본값
기본 인증 메커니즘 설정은 서버가 지원하는 MongoDB 버전에 따라 다음의 인증 메커니즘 중 하나를 사용합니다.
SCRAM-SHA-256
SCRAM-SHA-1
MONGODB-CR
참고
MongoDB 버전 4.0은 SCRAM을 기본 메커니즘으로 사용하며 더 이상 MONGODB-CR
을 지원하지 않습니다.
기본값 인증 메커니즘을 지정하는 데 해당하는 구문을 보려면 Connection String 또는 MongoCredential 탭을 선택하세요.
var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>");
var credential = MongoCredential.CreateCredential("<authenticationDb>", "<db_username>", "<db_password>"); var settings = MongoClientSettings.FromConnectionString("<connection string>"); settings.Credential = credential; var mongoClient = new MongoClient(settings);
SCRAM-SHA-256
SCRAM-SHA-256
SHA-256
알고리즘으로 암호화된 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 SCRAM(솔티드 챌린지-응답 인증 메커니즘)입니다.
다음과 같이 연결 문자열을 사용하여 SCRAM-SHA-256
인증 메커니즘을 지정할 수 있습니다.
var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-256");
팁
기본 메커니즘
MongoDB 4.0 버전 이상에서는 MongoDB 서버 버전이 지원하는 경우 기본 인증 메커니즘으로 SCRAM-SHA-256
을(를)사용합니다.
기본 메커니즘 지정에 대해 자세히 알아보려면 기본값을 참조하세요.
SCRAM-SHA-1
SCRAM-SHA-1
SHA-1
알고리즘으로 암호화된 사용자 이름과 암호를 사용하여 사용자를 인증하는 솔티드 챌린지 응답 메커니즘(SCRAM)입니다.
다음과 같이 연결 문자열을 사용하여 SCRAM-SHA-1
인증 메커니즘을 지정할 수 있습니다.
var mongoClient = new MongoClient("mongodb://<db_username>:<db_password>@<hostname>:<port>/?authSource=<authenticationDb>&authMechanism=SCRAM-SHA-1");
팁
기본 메커니즘
MongoDB 버전 4.0은 서버가 SCRAM-SHA-256
을 지원하지 않는 경우 기본 인증 메커니즘으로 SCRAM-SHA-1
을 사용합니다.
기본 메커니즘 지정에 대해 자세히 알아보려면 기본값을 참조하세요.
MONGODB-AWS
참고
MONGODB-AWS
인증 메커니즘은 MongoDB Atlas의 MongoDB deployment에만 사용할 수 있습니다.
MONGODB-AWS
인증 메커니즘은 AWS IAM(Amazon Web Services Identity and Access Management) 자격 증명을 사용해 사용자를 인증합니다. 자격 증명을 명시적으로 지정하거나 외부 소스에서 자동으로 검색하도록 드라이버에 지시할 수 있습니다.
다음 섹션에는 다음 자리 표시자를 사용하는 코드 예시가 포함되어 있습니다.
<awsKeyId>
- AWS 액세스 키 ID의 값<awsSecretKey>
- AWS 시크릿 액세스 키의 값<awsSessionToken>
- AWS 세션 토큰의 값
팁
AWS IAM으로 MongoDB Atlas를 구성하는 자세한 방법은 AWS IAM 역할로 비밀번호 없는 인증 설정하기 가이드를 참조하세요.
AWS IAM 자격 증명 지정하기
MongoCredential
객체를 사용하거나 연결 문자열의 일부로 MongoClientSettings
객체에 대한 AWS IAM 자격 증명을 제공할 수 있습니다. Connection String 또는 MongoCredential 탭을 선택해 자격 증명을 지정하는 구문을 확인하세요.
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS"; var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
AWS 세션 토큰을 사용하는 경우 아래와 같이 연결 문자열에 authMechanismProperties
매개변수를 포함시키세요.
var connectionString = "mongodb+srv://<awsKeyId>:<awsSecretKey>@<hostname>[:<port>]?authSource=$external&authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>";
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]"); mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")); var client = new MongoClient(mongoClientSettings);
Amazon Web Services 세션 토큰을 사용하는 경우 아래와 같이 MongoCredential
객체에서 WithMechanismProperty()
메서드를 호출합니다.
mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalIdentity("<awsKeyId>"), new PasswordEvidence("<awsSecretKey>")) .WithMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>");
자동으로 자격 증명 검색하기
MongoClientSettings
에서 AWS IAM 자격 증명을 지정하는 대신 .NET/C# 드라이버에 AWS SDK를 사용하여 외부 소스에서 자격 증명을 자동으로 검색하도록 지시할 수 있습니다. 드라이버에 자격 증명을 검색하도록 지시하려면 다음 작업을 수행하세요.
MONGODB-AWS
를 인증 메커니즘으로 지정하기인증 소스를 MongoDB 외부로 지정합니다.
적절한 위치에 자격 증명을 설정합니다.
MongoCredential
객체를 사용하거나 연결 문자열의 일부로 인증 메커니즘과 소스를 지정할 수 있습니다. Connection String 또는 MongoCredential 탭을 선택하여 MONGODB-AWS
인증 메커니즘 및 외부 인증 소스를 지정하기 위한 해당 구문을 확인합니다.
var connectionString = "mongodb+srv://<hostname>[:<port>]?authMechanism=MONGODB-AWS&authSource=$external"; var mongoClientSettings = MongoClientSettings.FromConnectionString(connectionString); var client = new MongoClient(mongoClientSettings);
var mongoClientSettings = MongoClientSettings.FromConnectionString("mongodb+srv://<hostname>[:<port>]"); mongoClientSettings.Credential = new MongoCredential("MONGODB-AWS", new MongoExternalAwsIdentity(), new ExternalEvidence()); var client = new MongoClient(mongoClientSettings);
인증 메커니즘과 소스를 지정한 후에는 자격 증명 유형에 적합한 위치에 자격 증명을 설정해야 합니다. .NET/C# 드라이버는 아래에 나열된 순서대로 각 위치에서 자격 증명을 확인합니다.
웹 멱등
공유된 AWS 자격 증명 파일
환경 변수
ECS 컨테이너 자격 증명
EC2 컨테이너 자격 증명
OIDC(OpenID Connect)와 호환되는 웹 멱등을 사용해 Amazon Elastic Kubernetes Service(EKS) 또는 기타 서비스에 인증할 수 있습니다. 웹 멱등을 사용하려면 다음 예시와 같이 bash
또는 유사한 셸을 사용해 환경 변수에 이 파일의 절대 경로를 설정하여 OIDC 토큰이 포함된 파일을 만든 다음 이 파일의 절대 경로를 설정하면 됩니다.
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
공유된 AWS 자격 증명 파일의 프로필을 사용해 인증하려면 텍스트 편집기, .NET용 AWS SDK 또는 AWS CLI를 사용하여 적절한 자격 증명 파일을 생성하면 됩니다.
환경 변수에서 직접 자격 증명을 검색하려면 bash
또는 유사한 셸을 사용해 다음 환경 변수를 설정하세요.
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
참고
해당 역할에 대해 AWS 세션 토큰이 필요하지 않은 경우 AWS_SESSION_TOKEN
이 포함된 줄을 생략하세요.
ECS 컨테이너 자격 증명을 사용하여 인증하려면 bash
또는 유사한 셸을 사용하여 환경 변수에서 ECS 엔드포인트의 URI를 설정합니다. 해당 환경 변수를 지정하는 구문을 보려면 Full ECS URI 또는 Relative ECS URI 탭을 선택합니다.
export AWS_CONTAINER_CREDENTIALS_FULL_URI=<full ECS endpoint>
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative ECS endpoint>
EC2 container 자격 증명을 사용해 인증하려면 앞서 언급한 환경 변수의 설정 여부를 확인하세요. 드라이버는 기본 IPv4 EC2 인스턴스 메타데이터 엔드포인트에서 자격 증명을 가져옵니다.
X.509
인증 메커니즘 은 TLS 를 사용합니다.X.509
클라이언트 인증서의 X.509
고유 이름으로 식별되는 인증서로 사용자를 인증합니다. X.509
인증 메커니즘 을 지정하면 서버 는 클라이언트 인증서의 주체 이름을 사용하여 연결을 인증합니다.
TLS/SSL 사용에 대한 자세한 내용은 TLS/SSL 가이드를 참조하세요.
X.509
인증서에 학습 보려면 X.509 서버 수동 항목을 참조하세요.
X.509
인증 메커니즘을 지정하는 데 해당하는 구문을 보려면 Connection String 또는 MongoCredential 탭을 선택하세요.
var connectionString = "mongodb://<hostname>/?authMechanism=MONGODB-X509"; var settings = MongoClientSettings.FromConnectionString(connectionString); settings.useTls = true; settings.SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") } };
var credential = MongoCredential.CreateMongoX509Credential("<X.509 certificate username>") var settings = new MongoClientSettings { Credential = credential SslSettings = new SslSettings { ClientCertificates = new List<X509Certificate>() { new X509Certificate2("<path to X.509 certificate>", "<X.509 certificate password>") }, }, UseTls = true, Server = new MongoServerAddress("<hostname", "<port>"), };
팁
Username parameter
CreateMongoX509Credential
에 제공된 사용자 이름 매개 변수는 X.509
인증서의 고유 주체 이름과 정확히 일치해야 합니다. 또는 null
를 매개 변수로 전달하여 MongoDB 서버 가 X.509
인증서를 기반으로 사용자 이름 을 유추하도록 요청할 수 있습니다.
참고
Windows 를 사용하는 경우 운전자 가 메모리에 생성된 X.509
인증 인증서를 찾지 못할 수 있습니다. 이 문제의 잠재적인 해결 방법에 학습 보려면 연결 문제 해결 가이드 의 X.509 자격 증명 오류 섹션을 참조하세요.
API 문서
이 가이드에서 설명하는 메서드나 유형에 대해 자세히 알아보려면 다음 API 설명서를 참조하세요.