Docs Menu
Docs Home
/ / /
Go
/

엔터프라이즈 인증 메커니즘

이 페이지의 내용

  • 개요
  • GSSAPI/Kerberos 인증
  • 예시
  • 사용자 지정 SERVICE_NAMESERVICE_REALM 필드 설정
  • LDAP 인증(일반)
  • 예시
  • 추가 정보
  • API 문서

이 가이드에서는 MongoDB Enterprise 에디션에서 제공되는 인증 메커니즘을 사용하여 MongoDB에서 인증하는 방법을 알아볼 수 있습니다. 인증 메커니즘은 연결 전에 보안을 보장하기 위해 드라이버와 서버가 클라이언트의 신원을 확인하는 프로세스입니다.

최신 버전의 MongoDB Enterprise Edition에서 다음 인증 메커니즘을 사용할 수 있습니다.

  • GSSAPI/Kerberos

  • LDAP (Plain)

다른 메커니즘을 사용하여 인증하려면 인증 메커니즘 기본 사항 페이지를 참조하세요. MongoDB cluster 에 연결을 설정하는 방법에 학습 보려면 연결 가이드를 참조하세요.

다음 메서드를 통해 MongoDB에 연결할 때 인증 메커니즘과 자격 증명을 지정할 수 있습니다.

  • 연결 문자열 URI를 사용합니다. 엔터프라이즈 인증을 위한 연결 문자열 URI 사용에 대해 자세히 알아보려면 연결 문자열 URI에 대한 서버 매뉴얼 항목을 참조하세요.

  • Credential 유형으로 자격 증명 및 인증 메커니즘을 지정합니다.

일반 보안 서비스 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"

Credential 구조체의 AuthMechanismProperties 필드를 사용하여 인증 메커니즘으로 추가 속성을 지정할 수 있습니다. Kerberos의 기본 서비스 이름은 "mongodb"입니다. 다음 코드는 Credential 구조체를 정의할 때 SERVICE_NAMESERVICE_REALM 필드에 사용자 지정 값을 설정하는 방법을 보여줍니다.

credential := options.Credential{
AuthMechanism: "GSSAPI",
Username: "<username>",
Password: "<password>",
AuthMechanismProperties: map[string]string{
"SERVICE_REALM": "<Kerberos service realm>",
"SERVICE_NAME": "<service name>",
},
}

추가 속성은 인증 속성에 대한 서버 매뉴얼 항목을 참조하십시오.

디렉토리 서버 사용자 이름 및 비밀번호를 사용하여 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을 참조합니다.

이 가이드의 개념에 대해 자세히 알아보려면 다음 문서를 참조하세요.

돌아가기

인증 메커니즘.