엔터프라이즈 인증 메커니즘
개요
이 가이드에서는 MongoDB Enterprise 에디션에서 제공되는 인증 메커니즘을 사용하여 MongoDB에서 인증하는 방법을 알아볼 수 있습니다. 인증 메커니즘은 연결 전에 보안을 보장하기 위해 드라이버와 서버가 클라이언트의 신원을 확인하는 프로세스입니다.
최신 버전의 MongoDB Enterprise Edition에서 다음 인증 메커니즘을 사용할 수 있습니다.
다른 메커니즘을 사용하여 인증하려면 인증 메커니즘 기본 사항 페이지를 참조하세요. MongoDB cluster 에 연결을 설정하는 방법에 학습 보려면 연결 가이드를 참조하세요.
다음 메서드를 통해 MongoDB에 연결할 때 인증 메커니즘과 자격 증명을 지정할 수 있습니다.
연결 문자열 URI를 사용합니다. 엔터프라이즈 인증을 위한 연결 문자열 URI 사용에 대해 자세히 알아보려면 연결 문자열 URI에 대한 서버 매뉴얼 항목을 참조하세요.
Credential
유형으로 자격 증명 및 인증 메커니즘을 지정합니다.
GSSAPI/Kerberos 인증
일반 보안 서비스 API(GSSAPI) 인증 메커니즘을 통해 사용자는 사용자의 주체를 사용하여 Kerberos 서비스에 인증할 수 있습니다.
Kerberos 인증을 사용하려면 컴파일 중에 gssapi
빌드 태그를 사용하고 cgo 지원을 지정해야 합니다. cgo
지원은 이전에 다른 플랫폼으로 크로스 컴파일하도록 환경 변수를 설정하지 않는 한 기본적으로 활성화됩니다. gssapi
빌드 태그를 사용하려면 다음 명령으로 코드를 컴파일하세요.
go build -tags gssapi
예시
이 예시에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.
username
: Kerberos 주체입니다. 샘플 사용자 이름은myuser@KERBEROS.EXAMPLE.COM
입니다.password
: Kerberos 사용자의 비밀번호입니다. 또한keytab
파일에 비밀번호를 저장하여 코드에 비밀번호가 노출되는 것을 방지할 수 있습니다.connection uri
: 사용자의 연결 문자열 URI입니다.
다음 코드에서는 Credential
구조체를 정의하여 Kerberos에 인증하고 인증 기본 설정을 사용하여 클라이언트를 만드는 방법을 보여 줍니다.
credential := options.Credential{ AuthMechanism: "GSSAPI", Username: "<username>", Password: "<password>", PasswordSet: true, } uri := "<connection uri>" clientOpts := options.Client().ApplyURI(uri).SetAuth(credential) client, err := mongo.Connect(context.TODO(), clientOpts)
인증 키를 keytab
파일에 저장하는 경우 Credential
구조체의 암호 또는 PasswordSet
필드를 정의할 필요가 없습니다. kinit
바이너리를 사용하여 Kerberos 주체를 인증하기 위한 자격 증명 캐시를 초기화할 수 있습니다. kinit
바이너리에 대해 자세히 알아보려면 Oracle 설명서를 참조하세요.
다음 명령은 샘플 사용자 이름에 대한 자격 증명 캐시를 호출하는 방법을 보여줍니다.
kinit myuser@KERBEROS.EXAMPLE.COM
또는 URL로 인코딩된 Kerberos 주체, 암호 및 MongoDB 서버의 내 네트워크 주소인 hostname
를 지정하는 연결 문자열 URI를 사용하여 인증할 수 있습니다.
uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=GSSAPI"
사용자 지정 SERVICE_NAME
및 필드 설정 SERVICE_REALM
Credential
구조체의 AuthMechanismProperties
필드를 사용하여 인증 메커니즘으로 추가 속성을 지정할 수 있습니다. Kerberos의 기본 서비스 이름은 "mongodb"입니다. 다음 코드는 Credential
구조체를 정의할 때 SERVICE_NAME
및 SERVICE_REALM
필드에 사용자 지정 값을 설정하는 방법을 보여줍니다.
credential := options.Credential{ AuthMechanism: "GSSAPI", Username: "<username>", Password: "<password>", AuthMechanismProperties: map[string]string{ "SERVICE_REALM": "<Kerberos service realm>", "SERVICE_NAME": "<service name>", }, }
추가 속성은 인증 속성에 대한 서버 매뉴얼 항목을 참조하십시오.
LDAP 인증(일반)
디렉토리 서버 사용자 이름 및 비밀번호를 사용하여 LDAP(Lightweight Directory Access Protocol) 서버에 인증할 수 있습니다.
경고
이 인증 메커니즘은 비밀번호를 일반 텍스트로 서버에 전송하므로 TLS 연결에만 이 메커니즘을 사용해야 합니다.
예시
이 예시에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.
username
: LDAP 사용자 이름password
: LDAP 비밀번호connection uri
: 연결 문자열 URI
다음 코드에서는 Credential
구조체를 정의하여 LDAP에 인증하고 인증 기본 설정을 사용하여 클라이언트를 만드는 방법을 보여 줍니다.
credential := options.Credential{ AuthMechanism: "PLAIN", Username: "<username>", Password: "<password>", } uri := "<connection uri>" clientOpts := options.Client().ApplyURI(uri).SetAuth(credential) client, err := mongo.Connect(context.TODO(), clientOpts)
또는 연결 문자열 URI를 사용하여 인증할 수 있으며, LDAP 사용자 이름, 암호 및 hostname
, MongoDB 서버의 네트워크 주소를 지정할 수 있습니다.
uri := "mongodb://<username>:<password>@<hostname>/?authMechanism=PLAIN"
참고
이 메서드는 RFC-4616에 정의된 PLAIN 간이 인증 및 보안 계층 서비스(SASL)를 사용하여 인증하므로 LDAP 대신 PLAIN을 참조합니다.
추가 정보
이 가이드의 개념에 대해 자세히 알아보려면 다음 문서를 참조하세요.