Página inicial do Docs → Desenvolver aplicações → Drivers Python → PyMongo
Mecanismos de autenticação empresarial![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
Nesta página
Visão geral![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
O MongoDB Enterprise Edition inclui mecanismos de autenticação que não estão disponíveis no MongoDB Community Edition. Neste guia, você pode aprender como autenticar no MongoDB usando esses mecanismos de autenticação. Para saber mais sobre os outros mecanismos de autenticação disponíveis no MongoDB, consulte Mecanismos de autenticação.
Kerberos![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
A API de serviços de segurança genérica (GSSAPI) fornece uma interface para a autenticação Kerberos. Selecione a guia que corresponde ao seu sistema operacional para saber como usar o Kerberos para autenticar.
PLAIN SASL![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
A PLAIN Camada de Autenticação e Segurança Simples (SASL), conforme definido por RFC 4616, é um mecanismo de autenticação de nome de usuário e senha frequentemente usado com TLS ou outra camada de criptografia.
Importante
PLAIN SASL é um mecanismo de autenticação de texto não criptografado. É altamente recomendável usar TLS/SSL com validação de certificado ao usar PLAIN SASL para autenticar no MongoDB.
Para saber mais sobre como habilitar o TLS para sua conexão, consulte Configurar o TLS (Transport Layer Security).
Para autenticar com SASL, configure a opção de conexão do authMechanism
para PLAIN
. Você pode definir essa opção de duas maneiras: passando um argumento para o construtor MongoClient
ou por meio de um parâmetro em sua connection string.
MONGODB-OIDC![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
Importante
O mecanismo de autenticação MONGODB-OIDC requer o MongoDB v7.0 ou posteriores em execução em uma plataforma Linux.
O PyMongo oferece suporte à autenticação OIDC para identidades de volume de trabalho. Uma identidade de carga de trabalho é uma identidade que você atribui a uma carga de trabalho de software, como um aplicativo, serviço, script ou contêiner, para autenticar e acessar outros serviços e recursos.
As seções a seguir descrevem como usar o mecanismo de autenticação MONGODB-OIDC para autenticar em várias plataformas.
Para obter mais informações sobre o mecanismo de autenticação MONGODB-OIDC, consulte Autenticação do OpenID Connect no manual do MongoDB Server .
IMDS do Azure![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
Se seu aplicativo for executado em uma VM do Azure ou usar o Serviço de Metadados de Instância do Azure (IMDS), você pode autenticar no MongoDB usando o suporte integrado do Azure do PyMongo.
Você pode configurar o OIDC para o Azure IMDS de duas maneiras: passando argumentos para o construtor MongoClient
ou por meio de parâmetros em sua connection string.
Dica
Se seu aplicativo estiver em execução em uma VM do Azure e somente uma identidade gerenciada estiver associada à VM, você poderá omitir a opção de conexão username
.
GCP IMDS![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
Se seu aplicativo é executado em uma VM GCP ou usa o Serviço de Metadados de Instância GCP, você pode autenticar no MongoDB usando o suporte GCP integrado do PyMongo.
Você pode configurar o OIDC para o GCP IMDS de duas maneiras: passando argumentos para o construtor MongoClient
ou por meio de parâmetros em sua connection string.
Outros ambientes Azure![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
Se o seu aplicativo for executado no Azure Functions, App Service Environment (ASE) ou Azure Kubernetes Service (AKS), você pode usar a identidade azure pacote para buscar credenciais de autenticação.
Primeiro, use o pip para instalar a biblioteca azure-identity
, como mostrado no exemplo a seguir:
python3 -m pip install azure-identity
Em seguida, defina uma classe que herda da classe OIDCCallback
. Esta classe deve implementar um método fetch()
, que retorna o token OIDC na forma de um objeto OIDCCallbackResult
.
O exemplo seguinte mostra como definir uma classe de retorno de chamada MyCallback
. Essa classe inclui um método fetch()
que recupera um token OIDC de um arquivo no local padrão do arquivo de token de conta de serviço.
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)
Após definir sua classe de retorno de chamada, crie um dicionário Python que contenha uma chave, "OIDC_CALLBACK"
, cujo valor seja uma instância de sua classe de retorno de chamada personalizada:
properties = {"OIDC_CALLBACK": MyCallback()}
Por fim, defina as seguintes opções de conexão passando argumentos para o construtor MongoClient
:
authMechanism
: Defina como"MONGODB-OIDC"
.authMechanismProperties
: defina para o dicionárioproperties
que você criou na etapa anterior.
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![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
Se o seu aplicativo for executado em um cluster GCP do Google Kubernetes Engine (GKE) com uma conta de serviço configurada, você pode ler o token OIDC a partir do local padrão do arquivo de token da conta de serviço.
Primeiro, defina uma classe que herda da classe OIDCCallback
. Esta classe deve implementar um método fetch()
, que retorna o token OIDC na forma de um objeto OIDCCallbackResult
.
O exemplo seguinte mostra como definir uma classe de retorno de chamada MyCallback
. Essa classe inclui um método fetch()
que recupera um token OIDC de um arquivo no local padrão do arquivo de token de conta de serviço.
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)
Após definir sua classe de retorno de chamada, crie um dicionário Python que contenha uma chave, "OIDC_CALLBACK"
, cujo valor seja uma instância de sua classe de retorno de chamada personalizada:
properties = {"OIDC_CALLBACK": MyCallback()}
Por fim, defina as seguintes opções de conexão passando argumentos para o construtor MongoClient
:
authMechanism
: Defina como"MONGODB-OIDC"
.authMechanismProperties
: defina para o dicionárioproperties
que você criou na etapa anterior.
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 )
Documentação da API![](/pt-br/docs/languages/python/pymongo-driver/assets/link.svg)
Para saber mais sobre como usar mecanismos de autenticação empresarial com o PyMongo, consulte a seguinte documentação da API: