Menu Docs
Página inicial do Docs
/ / /
Driver Pymongo
/ /

Gerenciamento de identidade e acesso do Amazon Web Services

O mecanismo de autenticação do MONGODB-AWS utiliza Gerenciamento de Identidade e Acesso do Amazon Web Services (Amazon Web Services IAM) ou credenciais do Amazon Web Services Lambda para autenticar um usuário no MongoDB. Você pode usar esse mecanismo somente ao autenticar no MongoDB Atlas.

Dica

Configurar Atlas para Autenticação IAM do Amazon Web Services

Para saber mais sobre como configurar o MongoDB Atlas para autenticação do Amazon Web Services IAM, consulte Configurar a autenticação com o Amazon Web Services IAM na documentação do Atlas .

Os exemplos de código nesta página usam os seguintes espaços reservados:

  • <hostname>: O endereço de rede da sua implantação do MongoDB Atlas

  • <AWS IAM access key ID>: IDda chave de acesso do Amazon Web Services

  • <AWS IAM secret access key>: Sua chave de acesso secreto Amazon Web Services

  • <AWS session token>: Seu token de sessão do Amazon Web Services

Para usar os exemplos de código nesta página, substitua esses espaços reservados por seus próprios valores.

Importante

Codificação percentual

Você deve codificar por cento para um nome de usuário e senha antes de incluí-los em um URI MongoDB . O quote_plus() método, disponível no módulo urllib.parse, é uma maneira de executar esta tarefa. Por exemplo, chamar quote_plus("and / or") retorna a string and+%2F+or.

Não codifique percentualmente o nome de usuário ou a senha ao passá-los como argumentos para MongoClient.

Para usar a autenticação do Amazon Web Services IAM, você deve instalar o PyMongo com a opção aws, como mostrado no seguinte exemplo:

python -m pip install pymongo[aws]

PyMongo usa o Boto3, o Amazon Web Services SDK para Python, para lidar com credenciais. O Boto3 tenta recuperar as credenciais do Amazon Web Services das seguintes fontes, na ordem listada:

  1. Argumentos nomeados passados para o construtor MongoClient ou parâmetros na string de conexão

  2. Variáveis de ambiente

  3. Arquivo de credenciais compartilhado

  4. Arquivo de configuração do Amazon Web Services

  5. AssumeRole solicitar ao Amazon Web Services Security Token Service (STS)

  6. AssumeRoleWithWebIdentity solicitação ao Amazon Web Services STS

  7. Serviço de metadados de instância em uma instância do Amazon EC2 com uma função do IAM configurada

As seções a seguir descrevem como usar o PyMongo para recuperar credenciais dessas fontes e como usá-las para autenticar seu aplicativo.

Primeiro, o PyMongo verifica se você passou as credenciais do Amazon Web Services para o construtor MongoClient, como um argumento nomeado ou como parte da string de conexão. Para passar suas credenciais para MongoClient, defina as seguintes opções de conexão:

  • username: O ID da chave de acesso do Amazon Web Services IAM para autenticar. Porcentagem Codifique esse valor antes de incluí-lo em uma string de conexão.

  • password: A chave de acesso secreto IAM do Amazon Web Services. Porcentagem Codifique esse valor antes de incluí-lo em uma string de conexão.

  • authMechanism: Defina como "MONGODB-AWS".

Você pode definir estas opções de duas maneiras: passando argumentos para o construtor MongoClient ou por meio de parâmetros em sua connection string.

client = pymongo.MongoClient("mongodb+srv://<hostname>",
username="<AWS IAM access key ID>",
password="<AWS IAM secret access key>",
authMechanism="MONGODB-AWS")
uri = ("mongodb+srv://<percent-encoded AWS IAM access key ID>:"
"<percent-encoded AWS IAM secret access key>"
"@<hostname>/?"
"&authMechanism=MONGODB-AWS")
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb+srv://<hostname>",
username="<AWS IAM access key ID>",
password="<AWS IAM secret access key>",
authMechanism="MONGODB-AWS")
uri = ("mongodb+srv://<percent-encoded AWS IAM access key ID>:"
"<percent-encoded AWS IAM secret access key>"
"@<hostname>/?"
"&authMechanism=MONGODB-AWS")
client = pymongo.AsyncMongoClient(uri)

Se você não fornecer um nome de usuário e senha ao construir seu objeto do MongoClient, PyMongo tentará recuperar as credenciais do Amazon Web Services a partir das seguintes variáveis de ambiente:

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

Para usar essas variáveis de ambiente para autenticar seu aplicativo, primeiro defina-as para os valores do Amazon Web Services IAM necessários para a autenticação, conforme mostrado no exemplo de código a seguir:

export AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
export AWS_SESSION_TOKEN=<AWS session token>

Importante

Não codifique os valores nessas variáveis de ambiente.

Após configurar estas variáveis de ambiente, configure a opção de conexão do authMechanism para "MONGODB-AWS". 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.

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.AsyncMongoClient(uri)

Dica

AWS Lambda

Os tempos de execução Amazon Web Services Lambda podem definir automaticamente essas variáveis de ambiente durante a inicialização. Para obter mais informações sobre o uso de variáveis de ambiente em um Amazon Web Services Lambda ambiente do , consulte Uso de Lambda variáveis de ambiente do na documentação do Amazon Web Services .

Se o PyMongo não encontrar as credenciais do Amazon Web Services nas variáveis de ambiente anteriores, ele tentará lê-las a partir de um arquivo de credenciais compartilhado.

Para usar um arquivo de credenciais compartilhado para autenticar seu aplicativo, verifique se o arquivo existe em seu ambiente e está configurado corretamente. Para saber como criar um arquivo de credenciais compartilhado, consulte Credenciais na3 documentação e Configuração do Boto na documentação do Amazon Web Services.

Após criar o arquivo de credenciais compartilhado, configure a opção de conexão do authMechanism para "MONGODB-AWS". 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.

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.AsyncMongoClient(uri)

Dica

Para evitar que o PyMongo use um arquivo de credenciais compartilhado para autenticação, execute uma das seguintes ações:

  • Defina a variável de ambiente AWS_SHARED_CREDENTIALS_FILE para "" em seu terminal.

  • Adicione os.environ["AWS_SHARED_CREDENTIALS_FILE"] = "" ao seu script ou aplicativo.

  • Crie um perfil do Amazon Web Services especificamente para suas credenciais do MongoDB . Defina a variável de ambiente AWS_PROFILE para o nome do perfil que você criou.

Se o PyMongo não encontrar as credenciais no arquivo de credenciais compartilhado, ele tentará lê-las a partir de um arquivo de configuração do Amazon Web Services.

Para usar um arquivo de configuração do Amazon Web Services para autenticar seu aplicativo, verifique se o arquivo existe em seu ambiente e está configurado corretamente. Para saber como criar um arquivo de 3 configuração do Amazon Web Services, consulte Credenciais na documentação e Configuração do Boto na documentação do Amazon Web Services.

Depois de criar o arquivo de configuração, defina a opção de conexão authMechanism como "MONGODB-AWS". 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.

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.AsyncMongoClient(uri)

Em vez de armazenar credenciais do Amazon Web Services em seu arquivo de configuração do Amazon Web Services, você pode instruir o PyMongo a fazer uma solicitação do AssumeRole para um endpoint STS do Amazon Web Services. Essa solicitação retorna credenciais temporárias que seu aplicativo pode usar para autenticação.

Para autenticar com credenciais temporárias do Amazon Web Services IAM retornadas por uma solicitação de AssumeRole , verifique se o arquivo de configuração do Amazon Web Services existe em seu ambiente e está configurado corretamente. Para saber como criar e configurar um arquivo de configuração do Amazon Web Services, consulte Credenciais na3 documentação e configuração do Boto na documentação do Amazon Web Services.

Depois de criar o arquivo de configuração, defina as seguintes opções de conexão:

  • username: o ID da chave de acesso do Amazon Web Services IAM para autenticar retornado pela solicitação AssumeRole. Porcentagem Codifique esse valor antes de incluí-lo em uma string de conexão.

  • password: a chave de acesso secreto IAM do Amazon Web Services retornada pela solicitação AssumeRole. Porcentagem Codifique esse valor antes de incluí-lo em uma string de conexão.

  • authMechanismProperties: Defina como AWS_SESSION_TOKEN: e o token de sessão do Amazon Web Services retornado pela solicitação AssumeRole.

  • authMechanism: Defina como "MONGODB-AWS".

Você pode definir estas opções de duas maneiras: passando argumentos para o construtor MongoClient ou por meio de parâmetros em sua connection string.

Observação

Se seus valores authMechanismProperties incluírem uma vírgula, você deverá usar o construtor MongoClient para definir suas opções de autenticação.

client = pymongo.MongoClient("mongodb+srv://@<hostname>",
username="<AWS IAM access key ID>",
password="<AWS IAM secret access key>",
authMechanismProperties="AWS_SESSION_TOKEN:<AWS session token>",
authMechanism="MONGODB-AWS")
uri = ("mongodb+srv://<percent-encoded AWS IAM access key ID>:"
"<percent-encoded AWS IAM secret access key>"
"@<hostname>/?"
"authMechanismProperties=AWS_SESSION_TOKEN:<AWS session token>"
"&authMechanism=MONGODB-AWS")
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb+srv://@<hostname>",
username="<AWS IAM access key ID>",
password="<AWS IAM secret access key>",
authMechanismProperties="AWS_SESSION_TOKEN:<AWS session token>",
authMechanism="MONGODB-AWS")
uri = ("mongodb+srv://<percent-encoded AWS IAM access key ID>:"
"<percent-encoded AWS IAM secret access key>"
"@<hostname>/?"
"authMechanismProperties=AWS_SESSION_TOKEN:<AWS session token>"
"&authMechanism=MONGODB-AWS")
client = pymongo.AsyncMongoClient(uri)

Para obter mais informações sobre como usar a solicitação AssumeRole para autenticar seu aplicativo, consulte a seguinte documentação do Amazon Web Services:

Importante

Seu aplicativo deve usar pymongo_auth_aws v1.1.0 ou posterior para obter suporte ao EKS.

Se o seu aplicativo autenticar usuários para o seu cluster EKS a partir de um fornecedor de identidade OpenID Connect (OIDC), PyMongo poderá fazer uma solicitação do AssumeRoleWithWebIdentity para trocar o token OIDC por credenciais temporárias do Amazon Web Services para seu aplicativo.

Para autenticar com credenciais temporárias do Amazon Web Services IAM retornadas por uma solicitação de AssumeRoleWithWebIdentity , verifique se o arquivo de configuração do Amazon Web Services existe em seu ambiente e está configurado corretamente. Para saber como criar e configurar um arquivo de configuração do Amazon Web Services, consulte Credenciais na3 documentação e configuração do Boto na documentação do Amazon Web Services.

Após configurar seu ambiente para uma solicitação do AssumeRoleWithWebIdentity , configure a opção de conexão do authMechanism para "MONGODB-AWS". 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.

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.AsyncMongoClient(uri)

Para obter mais informações sobre como usar uma solicitação AssumeRoleWithWebIdentity para autenticar seu aplicativo, consulte a seguinte documentação do Amazon Web Services:

Se seu aplicativo for executado em uma instância do Amazon Elastic Cloud Compute (EC2) em um container do Elastic Container Service (ECS), PyMongo poderá recuperar automaticamente credenciais temporárias da Amazon Web Services de um endpoint do ECS.

Para usar credenciais temporárias de dentro de uma instância do EC2 , configure a opção de conexão do authMechanism para "MONGODB-AWS". 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.

client = pymongo.MongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.MongoClient(uri)
client = pymongo.AsyncMongoClient("mongodb+srv://<hostname>",
authMechanism="MONGODB-AWS")
uri = "mongodb+srv://<hostname>/?&authMechanism=MONGODB-AWS"
client = pymongo.AsyncMongoClient(uri)

Para saber mais sobre como autenticar seu aplicativo no PyMongo, consulte a seguinte documentação da API:

Voltar

X.509

Nesta página