Docs Home → 애플리케이션 개발 → Python 드라이버 → PyMongo
엔터프라이즈 인증 메커니즘
개요
MongoDB Enterprise 에는 MongoDB Community Edition 에서는 사용할 수 없는 인증 메커니즘이 포함되어 있습니다. 이 가이드 에서는 이러한 인증 메커니즘을 사용하여 MongoDB 에 인증하는 방법을 학습 수 있습니다. MongoDB 에서 사용할 수 있는 다른 인증 메커니즘에 학습 보려면 인증 메커니즘을 참조하세요.
Kerberos
일반 보안 서비스 API(GSSAPI)는 Kerberos 인증을 위한 인터페이스를 제공합니다. 운영 체제에 해당하는 탭을 선택하여 Kerberos를 사용하여 인증하는 방법을 알아보세요.
PLAIN SASL
RFC 4616 에 정의된 PLAIN SASL(Simple Authentication and Security Layer)은(는) TLS 또는 다른 암호화 계층과 함께 자주 사용되는 사용자 이름-비밀번호 인증 메커니즘입니다.
중요
PLAIN SASL은 일반 텍스트 인증 메커니즘입니다. PLAIN SASL을 사용하여 MongoDB에 인증할 때는 인증서 유효성 검사와 함께 TLS/SSL을 사용할 것을 강력히 권장합니다.
연결에 TLS를 활성화하는 방법에 대해 자세히 알아보려면 TLS (전송 계층 보안) 구성을 참조하세요.
SASL로 인증하려면 authMechanism
연결 옵션을 PLAIN
로 설정합니다. MongoClient
생성자에 인수를 전달하거나 연결 string 의 매개변수를 통해 이 옵션을 설정할 수 있습니다.
MONGODB-OIDC
중요
MONGODB-OIDC 인증 메커니즘을 사용하려면 Linux 플랫폼에서 실행되는 MongoDB v7.0 이상이 필요합니다.
PyMongo는 워크로드 ID 에 대한 OIDC 인증을 지원합니다. 워크로드 ID는 다른 서비스 및 리소스를 인증하고 액세스하기 위해 애플리케이션, 서비스, 스크립트 또는 컨테이너와 같은 소프트웨어 워크로드에 할당하는 ID입니다.
다음 섹션에서는 MONGODB-OIDC 인증 메커니즘을 사용하여 다양한 플랫폼에서 인증하는 방법을 설명합니다.
MONGODB-OIDC 인증 메커니즘에 대한 자세한 내용은 MongoDB Server 매뉴얼의 OpenID Connect 인증 을 참조하세요.
Azure IMDS
애플리케이션이 Azure VM에서 실행되거나 Azure 인스턴스 메타데이터 서비스 를 사용하는 경우 (IMDS)부터는 PyMongo의 기본 제공 Azure 지원을 사용하여 MongoDB에 인증할 수 있습니다.
생성자에 인수를 전달하거나 연결 의 매개변수를 사용하는 두 가지 방법으로 IMDS용 OIDC를 구성할 수 Azure MongoClient
string 있습니다.
팁
애플리케이션이 Azure VM에서 실행 중이고 VM과 연결된 관리 ID가 하나만 있는 경우 username
연결 옵션을 생략할 수 있습니다.
GCP IMDS
애플리케이션이 GCP VM에서 실행되거나 GCP 인스턴스 메타데이터 서비스 를 사용하는 경우 , PyMongo의 기본 제공 GCP 지원을 사용하여 MongoDB에 인증할 수 있습니다.
생성자에 인수를 전달하거나 연결 의 매개변수를 사용하는 두 가지 방법으로 IMDS용 OIDC를 구성할 수 GCP MongoClient
string 있습니다.
기타 Azure 환경
애플리케이션이 Azure Functions, ASE(App Service Environment) 또는 AKS(Azure Kubernetes Service)에서 실행되는 경우 Azure ID 를 사용할 수 있습니다. 패키지를 사용하여 인증 자격 증명을 가져옵니다.
먼저 다음 예제와 같이 pip를 사용하여 azure-identity
라이브러리를 설치합니다.
python3 -m pip install azure-identity
다음으로, OIDCCallback
클래스에서 상속되는 클래스를 정의합니다. 이 클래스는 OIDCCallbackResult
객체 형식으로 OIDC 토큰을 반환하는 fetch()
메서드를 구현해야 합니다.
다음 예제에서는 MyCallback
이라는 콜백 클래스를 정의하는 방법을 보여줍니다. 이 클래스에는 표준 서비스 계정 토큰 파일 위치에 있는 파일에서 OIDC 토큰을 검색하는 fetch()
메서드가 포함되어 있습니다.
audience = "<audience configured on the MongoDB deployment>" client_id = "<Azure client ID>" class MyCallback(OIDCCallback): def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: credential = DefaultAzureCredential(managed_identity_client_id=client_id) token = credential.get_token(f"{audience}/.default").token return OIDCCallbackResult(access_token=token)
콜백 클래스를 정의한 후 사용자 지정 콜백 클래스의 인스턴스인 값을 가진 하나의 키 "OIDC_CALLBACK"
을 포함하는 Python 사전을 만듭니다.
properties = {"OIDC_CALLBACK": MyCallback()}
마지막으로 MongoClient
생성자에 인수를 전달하여 다음 연결 옵션을 설정합니다.
authMechanism
:"MONGODB-OIDC"
로 설정합니다.authMechanismProperties
: 이전 단계에서 만든properties
딕셔너리로 설정합니다.
from pymongo import MongoClient from azure.identity import DefaultAzureCredential from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResult # define callback, properties, and MongoClient audience = "<audience configured on the MongoDB deployment>" client_id = "<Azure client ID>" class MyCallback(OIDCCallback): def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: credential = DefaultAzureCredential(managed_identity_client_id=client_id) token = credential.get_token(f"{audience}/.default").token return OIDCCallbackResult(access_token=token) properties = {"OIDC_CALLBACK": MyCallback()} client = MongoClient( "mongodb://<hostname>:<port>", authMechanism="MONGODB-OIDC", authMechanismProperties=properties )
GCP GKE
애플리케이션이 구성된 서비스 계정 으로 GCP Google Kubernetes Engine(GKE) 클러스터에서 실행되는 경우 , 표준 서비스 계정 토큰 파일 위치에서 OIDC 토큰을 읽을 수 있습니다.
먼저 OIDCCallback
클래스에서 상속되는 클래스를 정의합니다. 이 클래스는 OIDCCallbackResult
객체 형식으로 OIDC 토큰을 반환하는 fetch()
메서드를 구현해야 합니다.
다음 예제에서는 MyCallback
이라는 콜백 클래스를 정의하는 방법을 보여줍니다. 이 클래스에는 표준 서비스 계정 토큰 파일 위치에 있는 파일에서 OIDC 토큰을 검색하는 fetch()
메서드가 포함되어 있습니다.
class MyCallback(OIDCCallback): def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: with open("/var/run/secrets/kubernetes.io/serviceaccount/token") as fid: token = fid.read() return OIDCCallbackResult(access_token=token)
콜백 클래스를 정의한 후 사용자 지정 콜백 클래스의 인스턴스인 값을 가진 하나의 키 "OIDC_CALLBACK"
을 포함하는 Python 사전을 만듭니다.
properties = {"OIDC_CALLBACK": MyCallback()}
마지막으로 MongoClient
생성자에 인수를 전달하여 다음 연결 옵션을 설정합니다.
authMechanism
:"MONGODB-OIDC"
로 설정합니다.authMechanismProperties
: 이전 단계에서 만든properties
딕셔너리로 설정합니다.
from pymongo import MongoClient from pymongo.auth_oidc import OIDCCallback, OIDCCallbackContext, OIDCCallbackResult # define callback, properties, and MongoClient class MyCallback(OIDCCallback): def fetch(self, context: OIDCCallbackContext) -> OIDCCallbackResult: with open("/var/run/secrets/kubernetes.io/serviceaccount/token") as fid: token = fid.read() return OIDCCallbackResult(access_token=token) properties = {"OIDC_CALLBACK": MyCallback()} client = MongoClient( "mongodb://<hostname>:<port>", authMechanism="MONGODB-OIDC", authMechanismProperties=properties )
API 문서
PyMongo에서 엔터프라이즈 인증 메커니즘을 사용하는 방법에 대해 자세히 알아보려면 다음 API 문서를 참조하세요.