Importante
O mecanismo de autenticação MONGODB-AWS está disponível apenas na versão 4.4 do MongoDB e posterior.
Visão geral
O mecanismo de autenticação do MONGODB-AWS utiliza credenciais do Amazon Web Services Identity and Access Management (Amazon Web Services IAM) 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 a autenticação do Amazon Web Services IAM, consulte Configurar a autenticação com o Amazon Web Services IAM na documentação do Atlas .
Especifique a autenticação MONGODB-AWS
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 listada:
Connection string.
Provedor de credenciais personalizado. Para saber mais, consulte Especificar um provedor de credenciais personalizado da Amazon Web Services.
Variáveis de ambiente.
Arquivo de token de identidade da Web.
Amazon Web Services ECS endpoint especificado na variável de ambiente do
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.Desfecho Amazon Web Services EC2. Para saber mais, consulte Funções de IAM para tarefas na documentação do Amazon Web Services.
Importante
O motorista obtém as credenciais somente da primeira fonte na qual elas são encontradas. Por exemplo, se você especificar suas credenciais do Amazon Web Services na string de conexão, o driver ignorará todas as credenciais especificadas nas 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
AuthMechanismo valorMONGODB-AWSAtribua à opção
Usernameo valor do seuaccessKeyIDAtribua à opção
Passwordo valor do seusecretAccessKey
var accessKeyID, secretAccessKey stringawsCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", AuthSource: "<authenticationDb>", Username: "<accessKeyID>", Password: "<secretAccessKey>",}
awsIAMClient, err := mongo.Connect(options.Client().SetAuth(awsCredential))if err != nil { panic(err)}_ = awsIAMClientSe 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 stringassumeRoleCredential := 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)}_ = envVariablesClientVocê 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 ou localize o arquivo que contém seu token. Em seguida, defina as seguintes variáveis de ambiente:
AWS_WEB_IDENTITY_TOKEN_FILE: Defina o caminho absoluto do arquivo que contém seu token OIDC.AWS_ROLE_ARN: defina para o role IAM usado para conectar ao seu cluster. Por exemplo:arn:aws:iam::111122223333:role/my-role.
O comando shell a seguir define essas variáveis de ambiente:
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file that contains OIDC token>export AWS_ROLE_ARN=<IAM role name>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)}_ = envVariablesClientEspecifique um provedor de credenciais AWS personalizado
Você pode fornecer seu próprio provedor de credenciais da Amazon Web Services para o driver, o que permite usar a cadeia de credenciais completa do AWS SDK for Go v2. Se você se autenticar usando um mecanismo da Amazon Web Services que a cadeia de credenciais integrada do driver não suporta, como o Amazon EKS Pod Identity, use este método.
Pré-requisitos
Antes de começar, certifique-se de ter o seguinte:
Go 1.26 ou posterior
Go driver v2.9 ou posterior
Observação
Recurso experimental
O módulo ext/awsauth está em pré-lançamento. Sua API é instável e pode mudar de maneiras não retrocompatíveis.
Para fornecer um provedor de credenciais do AWS SDK, instale o módulo ext/awsauth e o AWS SDK para Go v2:
go get go.mongodb.org/mongo-driver/ext/awsauth github.com/aws/aws-sdk-go-v2/configO exemplo a seguir passa uma cadeia de provedores do AWS SDK para o mecanismo de autenticação do AWS:
awsConfig, err := config.LoadDefaultConfig(context.TODO())if err != nil { panic(err)}
awsSdkCredential := options.Credential{ AuthMechanism: "MONGODB-AWS", AWSCredentialsProvider: awsauth.NewCredentialsProvider(awsConfig.Credentials),}
awsSdkClient, err := mongo.Connect(options.Client().SetAuth(awsSdkCredential))if err != nil { panic(err)}_ = awsSdkClientDocumentação da API
Para saber mais sobre qualquer um dos métodos ou tipos discutidos nesta página, consulte a seguinte documentação da API: