Visão geral
Observação
A autenticação do Amazon Web Services está disponível apenas no MongoDB Enterprise Edition para MongoDB 4.4 e posterior.
O mecanismo de autenticação do Amazon Web Services usa o Amazon Web Services Identity and Access Management (IAM) e o Amazon Web Services Security Token Service (STS) para confirmar a identidade do cliente em um sistema do MongoDB. As etapas a seguir descrevem o processo de autenticação do Amazon Web Services:
O cliente usa credenciais do Amazon Web Services IAM para criar uma assinatura que é enviada para a implantação do MongoDB .
A implantação usa a assinatura do cliente para enviar uma solicitação ao Amazon Web Services STS.
Se a solicitação for bem-sucedida, o STS retornará o nome do recurso da Amazon (ARN) do usuário ou da função do IAM que corresponde às credenciais do cliente.
A implantação usa o ARN retornado para procurar o usuário. O cliente é autenticado como este usuário.
Observação
O cliente e o servidor usam nomes de usuário diferentes. O cliente usa o ID da chave de acesso do Amazon Web Services, mas o servidor usa o ARN do usuário ou da função do IAM correspondente ao ID da chave de acesso.
As credenciais do Amazon Web Services incluem os seguintes componentes:
ID da chave de acesso
chave de acesso secreta
Token de sessão opcional
A autenticação com credenciais do Amazon Web Services IAM usa o ID da chave de acesso e a chave de acesso secreta. A autenticação com credenciais temporárias do Amazon Web Services IAM usa todos os três componentes.
Observação
O driver nunca envia a chave de acesso secreta ou o token de sessão pela rede.
As credenciais temporárias são usadas com:
STS Assumir Função pedidos.
Espaços reservados de código
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<aws-access-key-id>
: O ID da chave de acesso do Amazon Web Services<aws_secret_access_key>
: A chave de acesso secreto do Amazon Web Services<aws_session_token>
: O token de sessão do Amazon Web Services
Uso da autenticação IAM do Amazon Web Services em seu aplicativo
As seções a seguir descrevem como usar o mecanismo de autenticação Amazon Web Services IAM em seu aplicação.
Fornecendo credenciais explicitamente
Você pode fornecer credenciais IAM regulares (não temporárias) como opções do cliente ou usando um URI. Selecione a aba Connection String ou Client Options para ver a sintaxe correspondente :
client = Mongo::Client.new( 'mongodb://<aws_access_key_id>:<aws_secret_access_key>@host/?authMechanism=MONGODB-AWS')
client = Mongo::Client.new(['<host>'], auth_mech: :aws, user: '<aws_access_key_id>', password: '<aws_secret_access_key>')
Observação
Se você fornecer credenciais em um URI, deverá codificá-las por porcentagem.
Fornecendo Credenciais Temporárias
Para fornecer credenciais temporárias, especifique o token da sessão nas opções do cliente ou usando um URI. Selecione a aba Connection String ou Client Options para ver a sintaxe correspondente:
client = Mongo::Client.new( 'mongodb://<aws_access_key_id>:<aws_secret_access_key>@host/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<<aws_session_token>>')
client = Mongo::Client.new(['<host>'], auth_mech: :aws, user: '<aws_access_key_id>', password: '<aws_secret_access_key>', auth_mech_properties: { aws_session_token: '<<aws_session_token>>', })
Recuperando credenciais automaticamente
O cliente pode recuperar credenciais do ambiente ou dos endpoints de metadados EC2 ou ECS. Para recuperar as credenciais automaticamente, especifique o mecanismo de autenticação do Amazon Web Services, mas não especifique um nome de usuário ou senha. Selecione a aba Connection String ou Client Options para ver a sintaxe correspondente:
client = Mongo::Client.new( 'mongodb://host/?authMechanism=MONGODB-AWS')
client = Mongo::Client.new(['<hostname>'], auth_mech: :aws) )
O condutor tenta obter credenciais das seguintes fontes, na ordem especificada:
AWS_ACCESS_KEY_ID
,AWS_SECRET_ACCESS_KEY
eAWS_SESSION_TOKEN
variáveis de ambiente. Essas variáveis de ambiente são reconhecidas por uma variedade de bibliotecas e ferramentas relacionadas ao Amazon Web Services, como o Amazon Web Services Ruby SDK oficial e a Amazon Web Services CLI. Eles também são definidos quando executados em um ambiente do Amazon Web Services Lambda.ação AssumeRoleWithWebIdentity do STS do Amazon Web Services . Esse mecanismo retorna credenciais associadas ao token da conta de serviço e requer que as seguintes variáveis de ambiente sejam definidas:
AWS_WEB_IDENTITY_TOKEN_FILE
: Caminho para um arquivo que contém o token da conta de serviço.AWS_ROLE_ARN
: O Amazon Resource Name (ARN) do role que o chamador está assumindo.AWS_ROLE_SESSION_NAME
(opcional): identificador para a sessão de função presumida. Se esta variável estiver vazia, o driver gera um identificador aleatório.
O endpoint de metadados de tarefa do Amazon Web Services ECS. Este endpoint retorna credenciais associadas à função de tarefa ECS atribuída ao container.
O endpoint de metadados de instância do Amazon Web Services EC2 . Este endpoint retorna credenciais associadas ao papel de instância do EC2 atribuído à instância.
Importante
Uma origem de credenciais deve fornecer um conjunto completo de credenciais. Por exemplo, se o seu aplicação usar as variáveis de ambiente AWS_ACCESS_KEY_ID
e AWS_SECRET_ACCESS_KEY
, o driver gerará um erro se apenas uma dessas variáveis tiver um valor.
Observação
Se um aplicação for executado em um container do ECS em uma instância do EC2 e o container tiver acesso aos metadados da instância, o driver tentará recuperar as credenciais do Amazon Web Services do endpoint de metadados da instância do EC2. Se o driver recuperar as credenciais dessa forma, seu aplicação poderá se autenticar como a função IAM atribuída à instância do EC2.
Para saber como impedir que os contêineres acessem os metadados da instância EC2, consulte a documentação do Amazon Web Services.
Documentaçã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: