인증 메커니즘.
개요
이 가이드에서는 MongoDB Community Edition에서 사용할 수 있는 각 인증 메커니즘을 사용하는 방법을 배울 수 있습니다. MongoDB는 인증 메커니즘을 사용하여 ID를 확인하고 신뢰를 구축하여 연결하기 전에 드라이버와 서버의 보안을 보장합니다.
GSSAPI/Kerberos
또는 LDAP
를 사용하여 인증하려면 엔터프라이즈 인증 메커니즘 기본 사항 페이지를 참조하세요. MongoDB cluster 에 연결을 설정하는 방법에 학습 보려면 연결 가이드를 참조하세요.
지원되는 메커니즘
고(Go) 드라이버는 다음과 같은 인증 메커니즘을 지원합니다:
고 (Go) 드라이버 클라이언트 유형을 통해 인증 메커니즘 과 연결을 설정합니다. 유형은 Client
자격 증명 유형에서 연결 옵션으로 사용할 메커니즘과 자격 증명 지정합니다. 이러한 옵션을 구성하려면 Credential
유형을 ClientOptions 유형의 SetAuth() 메서드에 전달합니다.
다음 섹션에서는 MongoDB Community Edition이 지원하는 5가지 메커니즘을 사용하여 이 프로세스를 보여 줍니다.
규칙 예시
각 인증 메커니즘에는 다음과 같은 자리 표시자가 포함되어 있습니다.
db_username
- MongoDB 데이터베이스 사용자 이름db_password
- MongoDB 데이터베이스 사용자의 비밀번호hostname
- 클라이언트가 액세스할 수 있는 MongoDB 서버 네트워크 주소port
- MongoDB 서버 포트 번호authenticationDb
- 사용자의 인증 데이터가 포함된 MongoDB 데이터베이스. 이 옵션을 생략하면 드라이버는 기본값admin
을 사용합니다.
기본값
기본 메커니즘은 서버가 지원하는 MongoDB 버전에 따라 다음 인증 메커니즘 중 하나를 사용합니다.
메커니즘 | 버전 |
---|---|
| MongoDB 4.0 이상 |
| MongoDB 3.0, 3.2, 3.4, 3.6 |
| MongoDB 2.6 및 이전 버전 |
기본 인증 메커니즘을 지정하려면 AuthMechanism
옵션을 생략합니다:
credential := options.Credential{ AuthSource: "<authenticationDb>", Username: "<db_username>", Password: "<db_password>", } clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>"). SetAuth(credential) client, err := mongo.Connect(clientOpts)
MongoDB가 지원하는 CR(챌린지-응답) 및 SCRAM(솔티드 챌린지-응답 인증 메커니즘)에 대한 자세한 내용은 MongoDB Server 매뉴얼의 SCRAM 섹션을 참조하세요.
SCRAM-SHA-256
중요
SCRAM-SHA-256
MongoDB 4.0부터 지원되는 MongoDB의 기본 인증 방법입니다.
SCRAM-SHA-256
SHA-256
알고리즘으로 암호화된 데이터베이스 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 솔트 SCRAM(Challenge-Response Authentication Mechanism)입니다.
SCRAM-SHA-256
인증 메커니즘을 지정하려면 AuthMechanism
옵션에 "SCRAM-SHA-256"
값을 할당합니다:
credential := options.Credential{ AuthMechanism: "SCRAM-SHA-256", AuthSource: "<authenticationDb>", Username: "<db_username>", Password: "<db_password>", } clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>"). SetAuth(credential) client, err := mongo.Connect(clientOpts)
SCRAM-SHA-1
중요
SCRAM-SHA-1
MongoDB 버전 3.0, 3.2, 3.4, 3.6의 기본 인증 방법입니다.
SCRAM-SHA-1
SHA-1
알고리즘으로 암호화된 사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 SCRAM(솔티드 챌린지-응답 메커니즘)입니다.
SCRAM-SHA-1
인증 메커니즘을 지정하려면 AuthMechanism
옵션에 "SCRAM-SHA-1"
값을 할당합니다:
credential := options.Credential{ AuthMechanism: "SCRAM-SHA-1", AuthSource: "<authenticationDb>", Username: "<db_username>", Password: "<db_password>", } clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>"). SetAuth(credential) client, err := mongo.Connect(clientOpts)
MONGODB-CR
MONGODB-CR
사용자 이름과 비밀번호를 사용하여 사용자를 인증하는 과제-응답 인증 메커니즘입니다.
중요
이 인증 메커니즘은 MongoDB 3.6부터 사용되지 않으며 MongoDB 4.0부터 더 이상 지원되지 않습니다.
MONGODB-AWS
중요
MONGODB-AWS 인증 메커니즘은 MongoDB 버전 4.4 이상에서만 사용할 수 있습니다.
MONGODB-AWS
인증 메커니즘은 AWS IAM(Amazon Web Services Identity and Access Management) 자격 증명을 사용해 사용자를 인증합니다.
MONGODB-AWS
인증을 활성화한 상태로 MongoDB에 연결하려면 MONGODB-AWS
인증 메커니즘을 지정합니다.
운전자 나열된 순서대로 다음 소스에서 자격 자격 증명 확인합니다.
연결 문자열입니다.
환경 변수.
웹 ID 토큰 파일.
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
환경 변수에 지정된 Amazon Web Services ECS 엔드포인트.AWS EC2 엔드포인트. 자세한 학습 은 AWS 설명서에서 작업에 대한 IAM 역할 을 참조하세요.
중요
운전자 자격 증명 얻습니다. 예시 들어 연결 문자열 에 AWS 자격 증명 지정하면 운전자 환경 변수에 지정한 모든 자격 증명 무시합니다.
팁
다음 예시에서는 SetAuth()
메서드를 사용하여 적절한 자격 증명을 설정합니다. ApplyURI()
메서드를 사용하여 이러한 자격 증명을 지정할 수도 있습니다. ApplyURI()
메서드를 사용하는 경우 사용자 이름과 비밀번호가 올바르게 구문 분석되도록 URL을 인코딩해야 합니다.
AWS IAM 자격 증명을 사용하여 MongoDB 인스턴스에 연결하려면 다음 단계를 수행하십시오.
AuthMechanism
옵션에MONGODB-AWS
값을 할당합니다.Username
옵션에accessKeyID
값을 할당합니다.Password
옵션에secretAccessKey
값을 할당합니다.
var accessKeyID, secretAccessKey string awsCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", AuthSource: "<authenticationDb>", Username: "<accessKeyID>", Password: "<secretAccessKey>", } awsIAMClient, err := mongo.Connect(options.Client().SetAuth(awsCredential)) if err != nil { panic(err) } _ = awsIAMClient
AWS 세션 토큰을 지정해야 하는 경우 역할 수임 요청에서 반환된 임시 자격 증명을 사용합니다.
임시 자격 증명을 사용하려면 AuthMechanismProperties
옵션에 sessionToken
값을 할당합니다.
var accessKeyID, secretAccessKey, sessionToken string assumeRoleCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", AuthSource: "<authenticationDb>", Username: "<accessKeyID>", Password: "<secretAccessKey>", AuthMechanismProperties: map[string]string{ "AWS_SESSION_TOKEN": "<sessionToken>", }, } assumeRoleClient, err := mongo.Connect(options.Client().SetAuth(assumeRoleCredential))
환경 변수에 저장된 Amazon Web Services 자격 증명을 사용하여 MongoDB 인스턴스에 인증하려면 셸을 사용하여 다음과 같이 변수를 설정합니다.
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
참고
인증 대상 역할에 AWS 세션 토큰이 필요하지 않은 경우 AWS_SESSION_TOKEN
이(가) 포함된 줄을 생략하세요.
위의 환경 변수를 설정한 후 다음 예와 같이 MONGODB-AWS
인증 메커니즘을 지정합니다.
envVariablesCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", } envVariablesClient, err := mongo.Connect(options.Client().SetAuth(envVariablesCredential)) if err != nil { panic(err) } _ = envVariablesClient
웹 ID 제공자 로부터 얻은 OIDC(OpenID Connect) 토큰을 사용하여 Amazon Elastic Kubernetes Service(EKS) 또는 기타 서비스에 인증할 수 있습니다. OIDC 토큰을 사용하려면 토큰이 포함된 파일 만들거나 찾습니다. 그런 다음 다음 환경 변수를 설정하다 .
AWS_WEB_IDENTITY_TOKEN_FILE
: OIDC 토큰이 포함된 파일 의 절대 경로로 설정합니다.AWS_ROLE_ARN
: 클러스터 에 연결하는 데 사용되는 IAM 역할 로 설정합니다. 예시:arn:aws:iam::111122223333:role/my-role
.
다음 셸 명령은 이러한 환경 변수를 설정합니다.
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file that contains OIDC token> export AWS_ROLE_ARN=<IAM role name>
앞의 환경 변수를 설정하다 후 다음 예시 와 같이 MONGODB-AWS
인증 메커니즘 지정합니다.
envVariablesCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", } envVariablesClient, err := mongo.Connect(options.Client().SetAuth(envVariablesCredential)) if err != nil { panic(err) } _ = envVariablesClient
X.509
X.509
인증 메커니즘은 클라이언트 인증서의 RDN(상대적 고유 이름)으로 식별되는 사용자를 인증하기 위해 X.509 인증서가 있는 TLS를 사용합니다. X.509
인증 메커니즘을 지정하면 서버는 다음 파일의 경로를 사용하여 연결을 인증합니다.
tlsCAFile
여기에는 TLS 연결을 만들 때 신뢰할 수 있는 단일 인증 기관 또는 다수 인증 기관이 포함됩니다.tlsCertificateKeyFile
클라이언트 인증서 파일 또는 클라이언트 비공개 키 파일의 경로를 참고합니다.
X.509
인증 메커니즘을 지정하려면 다음을 수행합니다:
연결 문자열에서 해당 파일의 경로를
tlsCAFile
에 할당합니다.연결 문자열에서 해당 파일의 경로를
tlsCertificateKeyFile
에 할당합니다.AuthMechanism
옵션에"MONGODB-X509"
값을 할당합니다.
caFilePath := "<cafile_path>" certificateKeyFilePath := "<client_certificate_path>" uri := "mongodb://<hostname>:<port>/?tlsCAFile=%s&tlsCertificateKeyFile=%s" uri = fmt.Sprintf(uri, caFilePath, certificateKeyFilePath) credential := options.Credential{ AuthMechanism: "MONGODB-X509", } clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)