AI 에이전트의 경우: 문서 인덱스는 https://www.mongodb.com/ko-kr/docs/llms.txt에서 사용할 수 있으며, 모든 페이지의 마크다운 버전은 어떤 URL 경로에 .md를 추가하여 사용할 수 있습니다.
Docs Menu

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

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

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

다른 메커니즘을 사용하여 인증하려면 인증 메커니즘 기본 사항 페이지를 참조하세요. MongoDB 클러스터에 대한 연결 설정에 대해 자세히 알아보려면 연결 가이드를 참조하세요.

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

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

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

일반 보안 서비스 API(GSSAPI) 인증 메커니즘을 통해 사용자는 사용자의 주체를 사용하여 Kerberos 서비스에 인증할 수 있습니다.

You must use the gssapi build tag and specify cgo support during compilation to use Kerberos authentication. cgo support is enabled by default unless you previously set environment variables to cross-compile to a different platform. To use the gssapi build tag, compile your code with the following command:

go build -tags gssapi

이 예시에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.

  • Kerberos principal: Kerberos 주체입니다. 샘플 사용자 이름은 myuser@KERBEROS.EXAMPLE.COM 입니다.

  • password: Kerberos 사용자의 비밀번호입니다. 또한 keytab 파일에 비밀번호를 저장하여 코드에 비밀번호가 노출되는 것을 방지할 수 있습니다.

  • connection uri: 사용자의 연결 문자열 URI입니다.

다음 코드에서는 Credential 구조체를 정의하여 Kerberos에 인증하고 인증 기본 설정을 사용하여 클라이언트를 만드는 방법을 보여 줍니다.

credential := options.Credential{
AuthMechanism: "GSSAPI",
Username: "<Kerberos principal>",
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

You can alternatively authenticate using a connection string URI, specifying your URL-encoded Kerberos principal, password, and hostname, the network address of your MongoDB server:

uri := "mongodb://<Kerberos principal>:<password>@<hostname>/?authMechanism=GSSAPI"

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

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

추가 속성은 인증 속성에 대한 서버 수동 항목을 참조하세요.

디렉토리 서버 사용자 이름 및 비밀번호를 사용하여 LDAP(Lightweight Directory Access Protocol) 서버에 인증할 수 있습니다.

경고

이 인증 메커니즘은 비밀번호를 일반 텍스트로 서버에 전송하므로 이 메커니즘은 TLS 연결에만 사용합니다.

이 예시에서는 다음 자리 표시자를 사용하여 인증 메커니즘을 지정합니다.

  • LDAP username: LDAP 사용자 이름

  • password: LDAP 비밀번호

  • connection uri: 연결 문자열 URI

다음 코드에서는 Credential 구조체를 정의하여 LDAP에 인증하고 인증 기본 설정을 사용하여 클라이언트를 만드는 방법을 보여 줍니다.

credential := options.Credential{
AuthMechanism: "PLAIN",
Username: "<LDAP 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://<LDAP username>:<password>@<hostname>/?authMechanism=PLAIN"

중요

MONGODB-OIDC 인증 메커니즘을 사용하려면 Linux 플랫폼에서 실행되는 MongoDB Server v7.0 이상이 필요합니다.

고 (Go) 운전자 는 워크로드 ID 에 대한 OIDC(OpenID Connect) 인증 을 지원합니다. 워크로드 ID 는 다른 서비스 및 리소스를 인증하고 액세스 하기 위해 애플리케이션, 서비스, 스크립트 또는 컨테이너 와 같은 소프트웨어 워크로드 에 할당하는 ID입니다.

다음 섹션에서는 MONGODB-OIDC 인증 메커니즘을 사용하여 다양한 플랫폼에서 인증하는 방법을 설명합니다.

MONGODB-OIDC 인증 메커니즘 에 학습 보려면 MongoDB Server 매뉴얼에서 OpenID Connect 인증MongoDB Server 매개변수 를 참조하세요.

애플리케이션 이 Azure VM에서 실행되거나 IMDS(Azure 인스턴스 메타데이터 서비스)를 사용하는 경우 고 (Go) 드라이버의 내장 Azure 지원 사용하여 MongoDB 에 인증할 수 있습니다.

다음과 같은 방법으로 Azure IMDS용 OIDC를 구성할 수 있습니다.

  • 클라이언트 를 생성할 때 Credential 구조체를 생성하고 이를 SetAuth() 메서드에 전달합니다.

  • 연결 string에 매개변수를 설정합니다.

참고

AuthMechanismProperties 구조체 필드 값에 쉼표가 포함된 경우 Credential 인스턴스 를 만들어 인증 옵션을 설정하다 해야 합니다.

먼저 다음 예시 와 같이 인증 메커니즘 속성을 저장 맵을 만듭니다. <audience> 자리 표시자를 MongoDB deployment 에 구성된 audience 매개변수의 값으로 바꿉니다.

props := map[string]string{
"ENVIRONMENT": "azure",
"TOKEN_RESOURCE": "<audience>",
}

그런 다음 다음 Credential 구조체 필드를 설정하다 합니다.

  • Username: Azure managed ID를 사용하는 경우 이를 managed ID의 클라이언트 ID 로 설정하다 .

  • AuthMechanism: "MONGODB-OIDC" 로 설정합니다.

  • AuthMechanismProperties: 이전에 만든 props 맵으로 설정합니다.

다음 코드 예시 에서는 Client 를 만들 때 이러한 옵션을 설정하다 하는 방법을 보여 줍니다.

uri := "mongodb://<hostname>:<port>"
props := map[string]string{
"ENVIRONMENT": "azure",
"TOKEN_RESOURCE": "<audience>",
}
opts := options.Client().ApplyURI(uri)
opts.SetAuth(
options.Credential{
Username: "<Azure client ID or application ID>",
AuthMechanism: "MONGODB-OIDC",
AuthMechanismProperties: props,
},
)
client, err := mongo.Connect(context.TODO(), opts)
if err != nil {
panic(err)
}

연결 string 에 다음 연결 옵션을 포함합니다.

  • username: Azure managed ID를 사용하는 경우 이를 managed ID의 클라이언트 ID 로 설정하다 .

  • authMechanism: MONGODB-OIDC 로 설정합니다.

  • authMechanismProperties: ENVIRONMENT:azure,TOKEN_RESOURCE:<audience> 로 설정합니다. <audience> 자리 표시자를 MongoDB deployment 에 구성된 audience 매개변수의 값으로 바꿉니다.

다음 코드 예시 에서는 연결 string 에서 이러한 옵션을 설정하다 하는 방법을 보여 줍니다.

uri := "mongodb://<hostname>:<port>/?" +
"username=<Azure client ID or application ID>" +
"&authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:azure,TOKEN_RESOURCE:<percent-encoded audience>"
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
if err != nil {
panic(err)
}

애플리케이션이 Azure VM에서 실행 중이고 VM과 연결된 관리 ID가 하나만 있는 경우 username 연결 옵션을 생략할 수 있습니다.

애플리케이션 이 Google Compute Engine VM에서 실행되거나 GCP 인스턴스 메타데이터 서비스를 사용하는 경우 고 (Go) 드라이버 내장 GCP 지원 사용하여 MongoDB 에 인증할 수 있습니다.

다음과 같은 방법으로 GCP IMDS용 OIDC를 구성할 수 있습니다.

  • 클라이언트 를 생성할 때 Credential 구조체를 생성하고 이를 SetAuth() 메서드에 전달합니다.

  • 연결 string에 매개변수를 설정합니다.

참고

AuthMechanismProperties 구조체 필드 값에 쉼표가 포함된 경우 Credential 인스턴스 를 만들어 인증 옵션을 설정하다 해야 합니다.

먼저 다음 예시 와 같이 인증 메커니즘 속성을 저장 맵을 만듭니다. <audience> 자리 표시자를 MongoDB deployment 에 구성된 audience 매개변수의 값으로 바꿉니다.

props := map[string]string{
"ENVIRONMENT": "gcp",
"TOKEN_RESOURCE": "<audience>",
}

그런 다음 다음 Credential 구조체 필드를 설정하다 합니다.

  • AuthMechanism: "MONGODB-OIDC" 로 설정합니다.

  • AuthMechanismProperties: 이전에 만든 props 맵으로 설정합니다.

다음 코드 예시 에서는 Client 를 만들 때 이러한 옵션을 설정하다 하는 방법을 보여 줍니다.

uri := "mongodb://<hostname>:<port>"
props := map[string]string{
"ENVIRONMENT": "gcp",
"TOKEN_RESOURCE": "<audience>",
}
opts := options.Client().ApplyURI(uri)
opts.SetAuth(
options.Credential{
AuthMechanism: "MONGODB-OIDC",
AuthMechanismProperties: props,
},
)
client, err := mongo.Connect(context.TODO(), opts)
if err != nil {
panic(err)
}

연결 string 에 다음 연결 옵션을 포함합니다.

  • authMechanism: MONGODB-OIDC 로 설정합니다.

  • authMechanismProperties: ENVIRONMENT:gcp,TOKEN_RESOURCE:<audience> 로 설정합니다. <audience> 자리 표시자를 MongoDB deployment 에 구성된 audience 매개변수의 값으로 바꿉니다.

다음 코드 예시 에서는 연결 string 에서 이러한 옵션을 설정하다 하는 방법을 보여 줍니다.

uri := "mongodb://<hostname>:<port>/?" +
"&authMechanism=MONGODB-OIDC" +
"&authMechanismProperties=ENVIRONMENT:gcp,TOKEN_RESOURCE:<percent-encoded audience>"
client, err := mongo.Connect(context.TODO(), options.Client().ApplyURI(uri))
if err != nil {
panic(err)
}

Go 운전자 는 Amazon Web Services Elastic Kubernetes Service(EKS)를 포함한 모든 플랫폼에 대한 내장 지원 을 제공하지 않습니다. 지원되지 않는 플랫폼에 대해 인증하려면 OIDC를 사용하여 인증하는 사용자 지정 콜백 함수를 정의해야 합니다. 운전자 에서 options.OIDCCallback 함수를 정의하고 이를 Credential 구조체의 OIDCMachineCallback 구조체 필드 값으로 설정하다 수 있습니다.

다음 예시 에서는 구성된 IAM OIDC 제공자 가 있는 EKS 클러스터 에 대한 사용자 지정 콜백 을 정의합니다. 액세스 토큰은 AWS_WEB_IDENTITY_TOKEN_FILE 환경 변수에 설정하다 경로에서 읽습니다.

eksCallback := func(_ context.Context,
_ *options.OIDCArgs) (*options.OIDCCredential, error) {
accessToken, err := os.ReadFile(
os.Getenv("AWS_WEB_IDENTITY_TOKEN_FILE"))
if err != nil {
return nil, err
}
return &options.OIDCCredential{
AccessToken: string(accessToken),
}, nil
}

그런 다음 정의한 EKS 콜백 함수를 사용하는 Credential 구조체를 만들 수 있습니다.

uri := "mongodb://<hostname>:<port>"
opts := options.Client().ApplyURI(uri)
opts.SetAuth(
options.Credential{
AuthMechanism: "MONGODB-OIDC",
OIDCMachineCallback: eksCallback,
},
)
client, err := mongo.Connect(context.TODO(), opts)
if err != nil {
panic(err)
}

애플리케이션 Azure Functions, App Service Environment(ASE) 또는 Azure Kubernetes Service(AKS)에서 실행되는 경우, azidentity 모듈을 사용하여 인증 자격 증명 가져올 수 있습니다.

먼저 다음 명령을 실행 하여 azidentity 모듈을 설치합니다.

go get -u github.com/Azure/azure-sdk-for-go/sdk/azidentity

Your OIDCCallback function must return an OIDCCredential instance that uses the AccessToken generated from the azidentity package. See the preceding Custom Callback section for an example that implements a custom callback to retrieve an access token and then creates a Credential.

애플리케이션 구성된 서비스 계정으로 GCP Google Kubernetes Engine(GKE) 클러스터 에서 실행되는 경우 표준 서비스 계정 토큰 파일 위치 에서 OIDC 토큰을 읽을 수 있습니다.

먼저 OIDCCallback 함수를 정의합니다. 이 함수는 OIDC 토큰을 읽고 OIDCCredential 인스턴스 를 반환합니다.

다음 예시 에서는 gkeCallback 이라는 콜백 함수를 정의합니다. 이 함수는 표준 서비스 계정 토큰 파일 위치 에 있는 파일 에서 OIDC 토큰을 검색합니다.

gkeCallback := func(_ context.Context,
_ *options.OIDCArgs) (*options.OIDCCredential, error) {
accessToken, err := os.ReadFile(
"/var/run/secrets/kubernetes.io/serviceaccount/token")
if err != nil {
return nil, err
}
return &options.OIDCCredential{
AccessToken: string(accessToken),
}, nil
}

그런 다음 정의한 GKE 콜백 함수를 사용하는 Credential 구조체를 만들 수 있습니다.

uri := "mongodb://<hostname>:<port>"
opts := options.Client().ApplyURI(uri)
opts.SetAuth(
options.Credential{
AuthMechanism: "MONGODB-OIDC",
OIDCMachineCallback: gkeCallback,
},
)
client, err := mongo.Connect(context.TODO(), opts)
if err != nil {
panic(err)
}

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