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

Mecanismos de autenticação

Nesta página

  • Visão geral
  • Mecanismos compatíveis
  • Exemplos de convenções
  • Default
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-CR
  • MONGODB-AWS
  • X.509

Neste guia, você aprenderá a usar cada mecanismo de autenticação disponível no MongoDB Community Edition. O MongoDB usa mecanismos de autenticação para confirmar uma identidade e estabelecer confiança para garantir a segurança no driver e no servidor antes da conexão.

Para autenticar usando GSSAPI/Kerberos ou LDAP, consulte a página de fundamentos do Enterprise Authentication Mechanisms . Para saber mais sobre como estabelecer uma conexão com seu Cluster MongoDB , consulte o Guia de Conexão.

O driver Go é compatível com os seguintes mecanismos de autenticação:

  • SCRAM-SHA-256

  • SCRAM-SHA-1

  • MONGODB-CR

  • MongoDB-AWS

  • X.509

O Go Driver estabelece uma conexão com um mecanismo Client de autenticação por meio Credential de um tipo de Cliente. O tipo especifica o mecanismo e as credenciais a serem usados como opções de conexão em um tipo de Credenciais. Para configurar estas opções, passe um tipo de para o método SetAuth() do tipo ClientOptions.

As seções abaixo demonstram este processo ao usar os cinco mecanismos compatíveis com o MongoDB Community Edition.

Cada mecanismo de autenticação contém os seguintes placeholders:

  • db_username - Seu nome de usuário do banco de dados do MongoDB

  • db_password - A senha do usuário do banco de dados MongoDB

  • hostname - Seu endereço de rede de servidores MongoDB, acessível por seu cliente

  • port - Número da porta dos servidores MongoDB

  • authenticationDb - Seu banco de dados MongoDB que contém os dados de autenticação do usuário. Se omitir esta opção, o condutor utiliza o valor predefinido admin.

O mecanismo padrão usa um dos seguintes mecanismos de autenticação, dependendo das versões do MongoDB compatíveis com o seu servidor:

Mecanismo
Versões

SCRAM-SHA-256

MongoDB 4.0 e mais recente

SCRAM-SHA-1

MongoDB 3.0, 3.2, 3.4 e 3.6

MONGODB-CR

MongoDB 2.6 e mais antiga

Para especificar o mecanismo de autenticação padrão, omita a opção AuthMechanism:

credential := options.Credential{
AuthSource: "<authenticationDb>",
Username: "<db_username>",
Password: "<db_password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(clientOpts)

Para saber mais sobre os mecanismos de autenticação de resposta e desafio (CR) e mecanismos de autenticação de resposta e desafio baseada em senha (SCRAM) que o MongoDB suporta, consulte a seção SCRAM do manual do servidor.

Importante

SCRAM-SHA-256 é o método de autenticação padrão para o MongoDB começando no MongoDB 4.0.

SCRAM-SHA-256 é um mecanismo de autenticação de desafio-resposta (SCRAM) que usa seu nome de usuário e senha do banco de dados, criptografados com o algoritmo SHA-256 para autenticar seu usuário.

Para especificar o mecanismo de autenticação SCRAM-SHA-256, atribua à opção AuthMechanism o valor "SCRAM-SHA-256":

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-256",
AuthSource: "<authenticationDb>",
Username: "<db_username>",
Password: "<db_password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(clientOpts)

Importante

SCRAM-SHA-1 é o método de autenticação padrão para as versões 3.0, 3.2, 3.4 e 3.6. do MongoDB.

SCRAM-SHA-1 é um mecanismo de desafio-resposta (SCRAM) que utiliza seu nome de usuário e senha, criptografados usando o algoritmo do SHA-1, para autenticar seu usuário.

Para especificar o mecanismo de autenticação SCRAM-SHA-1, atribua à opção AuthMechanism o valor "SCRAM-SHA-1":

credential := options.Credential{
AuthMechanism: "SCRAM-SHA-1",
AuthSource: "<authenticationDb>",
Username: "<db_username>",
Password: "<db_password>",
}
clientOpts := options.Client().ApplyURI("mongodb://<hostname>:<port>").
SetAuth(credential)
client, err := mongo.Connect(clientOpts)

MONGODB-CR é um mecanismo de autenticação de resposta e desafio que usa seu nome de usuário e senha para autenticar seu usuário.

Importante

Esse mecanismo de autenticação começou a ficar obsoleto no MongoDB 3.6 e não é mais compatível no MongoDB 4.0.

Importante

O mecanismo de autenticação MONGODB-AWS está disponível somente nas versões 4.4 e mais recentes do MongoDB.

O mecanismo de autenticação do MONGODB-AWS utiliza suas credenciais do Amazon Web Services Identity and Access Management (AWS IAM) para autenticar o usuário.

Para se conectar a uma instância do MongoDB com a autenticação MONGODB-AWS habilitada, especifique o mecanismo de autenticação MONGODB-AWS.

O driver verifica suas credenciais nas seguintes fontes, na ordem em que estão listadas:

  1. Connection string

  2. Variáveis de ambiente

  3. Arquivo de token de identidade da Web

  4. Ponto de conexão AWS ECS especificado na variável de ambiente AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

  5. Endpoint AWS EC2 . Para obter mais informações, consulte Funções do IAM para tarefas.

Importante

O driver obtém as credenciais somente da primeira fonte na qual elas são encontradas. Por exemplo, se você especificar suas credenciais da AWS na cadeia de conexão, o Driver ignora todas as credenciais que você especificou em variáveis de ambiente.

Dica

Os exemplos seguintes definem as credenciais apropriadas utilizando o método SetAuth() . Você também pode especificar estas credenciais utilizando o método ApplyURI(). Se você usar o método ApplyURI() , deverá codificar o nome de usuário e a senha por URL para garantir que eles sejam analisados corretamente.

Para se conectar à sua instância MongoDB usando suas credenciais AWS IAM, execute as seguintes etapas:

  • Atribua à opção AuthMechanism o valor MONGODB-AWS

  • Atribua à opção Username o valor do seu accessKeyID

  • Atribua à opção Password o valor do seu secretAccessKey

var accessKeyID, secretAccessKey string
awsCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
}
awsIAMClient, err := mongo.Connect(options.Client().SetAuth(awsCredential))
if err != nil {
panic(err)
}
_ = awsIAMClient

Se você precisar especificar um token de sessão da AWS, use as credenciais temporárias retornadas de uma solicitação de assumir função .

Para utilizar credenciais temporárias, atribua o valor do seu sessionToken à opção AuthMechanismProperties:

var accessKeyID, secretAccessKey, sessionToken string
assumeRoleCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
AuthSource: "<authenticationDb>",
Username: "<accessKeyID>",
Password: "<secretAccessKey>",
AuthMechanismProperties: map[string]string{
"AWS_SESSION_TOKEN": "<sessionToken>",
},
}
assumeRoleClient, err := mongo.Connect(options.Client().SetAuth(assumeRoleCredential))

Para autenticar na instância do MongoDB usando credenciais da AWS armazenadas em variáveis de ambiente, use um shell para definir as variáveis da seguinte forma:

export AWS_ACCESS_KEY_ID=<awsKeyId>
export AWS_SECRET_ACCESS_KEY=<awsSecretKey>
export AWS_SESSION_TOKEN=<awsSessionToken>

Observação

Se você não precisar de um token de sessão da AWS para a função com a qual está se autenticando, omita a linha que contém AWS_SESSION_TOKEN.

Depois de definir as variáveis de ambiente anteriores, especifique o mecanismo de autenticação MONGODB-AWS, conforme mostrado no exemplo a seguir:

envVariablesCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
}
envVariablesClient, err := mongo.Connect(options.Client().SetAuth(envVariablesCredential))
if err != nil {
panic(err)
}
_ = envVariablesClient

Você pode usar o token OpenID Connect (OIDC) obtido de um provedor de identidade da web para se autenticar no Amazon Elastic Kubernetes Service (EKS) ou em outros serviços. Para usar um token OIDC, crie um arquivo que contenha seu token e defina o caminho absoluto para esse arquivo em uma variável de ambiente usando um shell, conforme mostrado no exemplo a seguir:

export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>

Depois de definir a variável de ambiente anterior, especifique o mecanismo de autenticação MONGODB-AWS , conforme mostrado no exemplo a seguir:

envVariablesCredential := options.Credential{
AuthMechanism: "MONGODB-AWS",
}
envVariablesClient, err := mongo.Connect(options.Client().SetAuth(envVariablesCredential))
if err != nil {
panic(err)
}
_ = envVariablesClient

O mecanismo de autenticação X.509 usa TLS com certificados X.509 para autenticar seu usuário, identificado pelos nomes diferenciados relativos (RDNs) do seu certificado de cliente. Quando você especifica o mecanismo de autenticação X.509, o servidor autentica a conexão usando os caminhos dos seguintes arquivos:

  • tlsCAFile que contém uma única ou um grupo de autoridades de certificação nas quais confiar ao fazer uma conexão TLS

  • tlsCertificateKeyFile que referencia o caminho para o arquivo de certificado do cliente ou o arquivo de chave privada do cliente

Para especificar o mecanismo de autenticação X.509, faça o seguinte:

  • Atribua a tlsCAFile o caminho para seu arquivo na connection string

  • Atribua a tlsCertificateKeyFile o caminho para seu arquivo na connection string

  • Atribua à opção AuthMechanism o valor "MONGODB-X509"

caFilePath := "<cafile_path>"
certificateKeyFilePath := "<client_certificate_path>"
uri := "mongodb://<hostname>:<port>/?tlsCAFile=%s&tlsCertificateKeyFile=%s"
uri = fmt.Sprintf(uri, caFilePath, certificateKeyFilePath)
credential := options.Credential{
AuthMechanism: "MONGODB-X509",
}
clientOpts := options.Client().ApplyURI(uri).SetAuth(credential)

Voltar

Contexto