Menu Docs
Página inicial do Docs
/ / /
Driver C++
/

Mecanismos de autenticação

Nesta página

  • Visão geral
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB X.509
  • MONGODB-AWS
  • URI de conexão
  • Variáveis de ambiente
  • Solicitação AssumeRoleWithWebIdentity
  • ECS Metadata
  • EC2 Metadados de instância
  • Documentação da API

Este guia descreve os mecanismos que você pode usar no driver C++ para autenticar usuários.

SCRAM-SHA-256, conforme definido por RFC 7677, é o mecanismo de autenticação padrão em sistemas do MongoDB que executam o MongoDB v4.0 ou mais tarde.

Para autenticar com esse mecanismo, defina as seguintes opções de conexão:

  • db_username: O nome de usuário do banco de dados de dados a ser autenticado.

  • db_password: a senha do banco de dados de dados para autenticar.

  • authSource: O banco de banco de dados MongoDB para autenticar. Por padrão, o driver C++ autentica no banco de banco de dados no URI de conexão, se você incluir um. Caso contrário, ele autentica no banco de banco de dados do admin .

  • authMechanism: Defina como "SCRAM-SHA-256".

Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client , como mostrado no exemplo a seguir:

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-256");
auto client = mongocxx::client(uri);

SCRAM-SHA-1, conforme definido por RFC 5802, é o mecanismo de autenticação padrão em sistemas do MongoDB que executam o MongoDB v3.6.

Para autenticar com esse mecanismo, defina as seguintes opções de conexão:

  • db_username: o nome de usuário para autenticar.

  • db_password: A senha para autenticar.

  • authSource: O banco de banco de dados MongoDB para autenticar. Por padrão, o driver C++ autentica no banco de banco de dados do admin .

  • authMechanism: Defina como "SCRAM-SHA-1".

Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client , como mostrado no exemplo a seguir:

auto uri = mongocxx::uri("mongodb://<db_username>:<db_password>@<hostname>:<port>/?"
"authSource=admin&authMechanism=SCRAM-SHA-1");
auto client = mongocxx::client(uri);

Se você habilitar o TLS, durante a negociação do TLS, o driver do C++ poderá apresentar um certificado de cliente X.509 ao MongoDB para provar sua identidade. O mecanismo de autenticação do MONGODB-X509 utiliza este certificado para autenticar o cliente.

Para autenticar com esse mecanismo, defina as seguintes opções de conexão:

  • tls: Defina como True.

  • tlsCertificateKeyFile: o caminho do arquivo .pem que contém seu certificado de cliente e chave privada.

  • authMechanism: Defina como "MONGODB-X509".

Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client , como mostrado no exemplo a seguir:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"tls=true&tlsCertificateKeyFile=path/to/client.pem&authMechanism=MONGODB-X509");
auto client = mongocxx::client(uri);

Para saber mais sobre como habilitar o TLS, consulte Configurar o TLS (Transport Layer Security).

Importante

O mecanismo de autenticação MONGODB-AWS requer MongoDB v4.4 ou posterior.

O mecanismo de autenticação do MONGODB-AWS utiliza Credenciais do Amazon Web Services IAM (Amazon Web Services Identity and Access Management) ou Amazon Web Services Lambda para autenticar seu aplicação. Para autenticar usando esse mecanismo, primeiro crie um usuário com um Amazon Resource Name (ARN) associado no banco de banco de dados $external e, em seguida, especifique o MONGODB-AWS authMechanism no URI.

Quando você usa o mecanismo MONGODB-AWS, o driver C++ tenta recuperar suas credenciais do Amazon Web Services das seguintes fontes, na ordem listada:

  1. Parâmetros nomeados passados para o URI de conexão

  2. Variáveis de ambiente

  3. Solicitação de Amazon Web Services EKS AssumeRoleWithWebIdentity

  4. Metadados do container ECS

  5. Metadados de instância do EC2

As seções a seguir descrevem como usar o driver C++ para recuperar credenciais dessas fontes e usá-las para autenticar seu aplicação.

Primeiro, o driver C++ verifica se você passou as credenciais do Amazon Web Services para o construtor MongoClient como parte do URI de conexão. Para passar suas credenciais no URI de conexão, defina as seguintes opções de conexão:

  • username: O da Amazon Web Services chave de acesso IAM ID para autenticar.

  • password: A chave de acesso secreto IAM Amazon Web Services .

  • authMechanism: Defina como "MONGODB-AWS".

Você pode definir estas opções na string de conexão ao criar um objeto mongocxx::client , como mostrado no exemplo a seguir:

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

Você também pode incluir um token de sessão Amazon Web Services passando-o para o parâmetro authMechanismProperties :

auto uri = mongocxx::uri("mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWSS&authMechanismProperties=AWS_SESSION_TOKEN:<token>");
auto client = mongocxx::client(uri);

Se você não fornecer um nome de usuário e senha ao construir seu objeto MongoClient , o driver C++ 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 (Opcional)

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>

Após definir essas variáveis de ambiente, defina o parâmetro authMechanism em seu URI de conexão para "MONGODB-AWS", conforme mostrado no exemplo a seguir:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

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

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

Após configurar seu ambiente para uma solicitação do AssumeRoleWithWebIdentity , configure o parâmetro authMechanism em seu URI de conexão para "MONGODB-AWS", como mostrado no seguinte exemplo:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(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 o seu aplicação for executado em um container do Elastic Container Service (ECS), o driver do C++ poderá recuperar automaticamente credenciais temporárias Amazon Web Services de um endpoint do ECS. Para fazer isso, especifique o URI do ponto de conexão ECS em uma variável de ambiente chamada AWS_CONTAINER_CREDENTIALS_RELATIVE_URI, conforme mostrado no exemplo a seguir:

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

Após definir a variável de ambiente, defina o parâmetro authMechanism em seu URI de conexão para "MONGODB-AWS", conforme mostrado no exemplo a seguir:

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

O driver C++ pode recuperar automaticamente credenciais temporárias Amazon Web Services de uma instância da Amazon Elastic Cloud Compute (EC2). Para usar credenciais temporárias de dentro de uma instância do EC2 , configure o parâmetro authMechanism em seu URI de conexão para "MONGODB-AWS", como mostrado no exemplo a seguir :

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);

Observação

Se você definir qualquer uma das variáveis de ambiente dos métodos de autenticação anteriores do Amazon Web Services , o driver C++ tentará recuperar as credenciais usando esses métodos antes de tentar recuperá-las de uma instância do EC2. Para tentar recuperar credenciais somente de uma instância do EC2 , certifique-se de que as variáveis de ambiente não estejam definidas.

Para saber mais sobre como criar um objeto mongocxx::client no driver C++ , consulte a seguinte documentação da API:

Voltar

Proteja seus dados