Visão geral
O MongoDB suporta vários mecanismos que protegem sua conexão com o banco de dados . Esta página contém exemplos de código que demonstram cada um desses mecanismos.
Dica
Para saber mais sobre qualquer um dos mecanismos mostrados nesta página, consulte o link fornecido em cada seção.
Para usar um exemplo desta página, copie o exemplo de código no aplicação de amostra ou em seu próprio aplicação. Certifique-se de substituir todos os espaços reservados nos exemplos de código,<hostname>
como, pelos valores relevantes para sua implantação do MongoDB .
Aplicativo de amostra
Você pode usar o seguinte aplicativo de exemplo para testar os exemplos de código nesta página. Para usar o aplicativo de amostra, execute as seguintes etapas:
Verifique se a biblioteca PHP do MongoDB está instalada em seu projeto. Para saber mais sobre como instalar a biblioteca PHP do MongoDB , consulte o guia dedownload e instalação .
Copie o seguinte código e cole-o em um novo arquivo
.php
.Copie um exemplo de código desta página e cole-o nas linhas especificadas no arquivo.
1 2 3 require __DIR__ . '/../vendor/autoload.php'; 4 5 // Start example code here 6 7 // End example code here 8 9 try { 10 $client->test->command(['ping' => 1]); 11 echo 'Successfully pinged the MongoDB server.', PHP_EOL; 12 } catch (MongoDB\Driver\Exception\RuntimeException $e) { 13 printf("Failed to ping the MongoDB server: %s\n", $e->getMessage()); 14 }
SCRAM-SHA-256
O seguinte código mostra como autenticar utilizando o mecanismo de autenticação SCRAM-SHA-256
:
$uriOptions = [ 'username' => '<username>', 'password' => '<password>', 'authSource' => '<authentication database>', 'authMechanism' => 'SCRAM-SHA-256', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
$uri = 'mongodb://<username>:<password>@<hostname>:<port>/?authSource=admin&authMechanism=SCRAM-SHA-256'; $client = new MongoDB\Client($uri);
Para saber mais sobre256 a autenticação SCRAM-SHA-,consulte Autenticação SCRAM no guia Autenticação.
MONGODB X.509
O seguinte código mostra como criar um URI de conexão para autenticar utilizando o mecanismo de autenticação do X.509
:
$uriOptions = [ 'tls' => true, 'tlsCertificateKeyFile' => '<file path>', 'authMechanism' => 'MONGODB-X509', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=<file path>&authMechanism=MONGODB-X509'; $client = new MongoDB\Client($uri);
Para saber mais sobre509 a autenticação X.,consulte Autenticação X.509 no guia de Autenticação.
MONGODB-AWS
As seções a seguir mostram como se conectar ao MongoDB usando o mecanismo de autenticação MONGODB-AWS
. Quando você usa o MONGODB-AWS
mecanismo, a MongoDB PHP biblioteca do tenta recuperar suas Amazon Web Services credenciais do das seguintes fontes, na ordem listada:
Opções passadas para o construtor
MongoDB\Client
, como parte da string de conexão ou do parâmetro da array$uriOptions
Variáveis de ambiente
Solicitação Amazon Web Services EKS
AssumeRoleWithWebIdentity
Metadados do container ECS
Metadados de instância do EC2
Cada seção mostra como autenticar com MONGODB-AWS
ao recuperar suas credenciais do Amazon Web Services a partir de opções passadas para seu cliente ou fontes externas alternativas.
Para saber mais sobre autenticação com AWS, consulte Autenticação AWS IAM no guia Autenticação.
MongoDB\ClientCredentials
O código a seguir mostra como passar as credenciais do Amazon Web Services para o construtor MongoDB\Client
para autenticação com MONGODB-AWS
:
$uriOptions = [ 'username' => '<AWS IAM access key ID>', 'password' => '<AWS IAM secret access key>', 'authMechanism' => 'MONGODB-AWS', ]; $client = new MongoDB\Client( 'mongodb://<hostname>:<port>', $uriOptions, );
$uri = 'mongodb://<AWS IAM access key ID>:<AWS IAM secret access key>@<hostname>:<port>/?authMechanism=MONGODB-AWS'; $client = new MongoDB\Client($uri);
Para saber mais sobre como autenticar com Amazon Web Services recuperando credenciais MongoDB\Client
, consulte MongoDB\Client Credentials no guia Autenticação.
Credenciais externas
O código abaixo mostra como autenticar com MONGODB-AWS
ao obter credenciais de variáveis de ambiente, uma solicitação AssumeRoleWithWebIdentity
, metadados do ECS ou metadados de instância do EC2 :
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', ['authMechanism' => 'MONGODB-AWS'], );
$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS'; $client = new MongoDB\Client($uri);
Para saber mais sobre como autenticar com Amazon Web Services obtendo credenciais externas, consulte as seguintes seções no guia de Autenticação:
Segurança da camada de transporte (TLS)
Habilitar TLS
O código a seguir mostra como habilitar o TLS para a conexão com sua instância do MongoDB :
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true'; $client = new MongoDB\Client($uri);
Para saber mais sobre como habilitar o TLS, consulte Habilitar TLS no guia Configuração do TLS.
Especifique um arquivo de autoridade de certificação (CA)
O código a seguir mostra como especificar o caminho do arquivo CA para a conexão com a instância do MongoDB :
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsCAFile' => '/path/to/ca.pem'], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCAFile=/path/to/ca.pem'; $client = new MongoDB\Client($uri);
Para saber mais sobre como especificar um arquivo CA, consulte Especificar um arquivo CA no guia de configuração TLS.
Desativar verificações OCSP
O seguinte código mostra como impedir que o driver entre em contato com o endpoint OCSP:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsDisableOCSPEndpointCheck' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsDisableOCSPEndpointCheck=true'; $client = new MongoDB\Client($uri);
Para saber mais sobre como desativar as verificações OCSP, consulte OCSP no guia de configuração do TLS.
Especifique uma lista de revogação de certificados (CRL)
O seguinte código mostra como instruir o driver a verificar o certificado do servidor em relação a uma CRL:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], ['crl_file' => '/path/to/file.pem'], );
Para saber mais sobre como especificar uma CRL, consulte Lista de revogação de certificados no guia de configuração do TLS.
Apresentar um Certificado de Cliente
O seguinte código mostra como especificar o certificado do cliente que o driver apresenta para sua implantação MongoDB :
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsCertificateKeyFile' => '/path/to/client.pem'], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/client.pem'; $client = new MongoDB\Client($uri);
Para saber mais sobre como especificar um certificado de cliente , consulte Apresentar um certificado de cliente no guia de configuração do TLS.
Forneça uma senha para o arquivo de chave de certificado
O seguinte código mostra como especificar a senha do seu certificado de cliente :
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', [ 'tls' => true, 'tlsCertificateKeyFile' => '/path/to/client.pem', 'tlsCertificateKeyFilePassword' => '<password>', ], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsCertificateKeyFile=/path/to/client.pem&tlsCertificateKeyFilePassword=<password>'; $client = new MongoDB\Client($uri);
Importante
Ao substituir o <password>
espaço reservado no URI de conexão, certifique-se de codificar o valor por cento.
Para saber mais sobre como fornecer uma senha de arquivo de chave, consulte Fornecer uma senha de chave no guia Configuração TLS.
Permitir TLS Inseguro
O código a seguir mostra como relaxar as restrições de TLS, que tem o mesmo efeito que desabilitar a validação do certificado e a verificação do nome do host:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsInsecure' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsInsecure=true'; $client = new MongoDB\Client($uri);
Para saber mais sobre como permitir TLS inseguro, consulte Permitir TLS Inseguro no guia Configuração de TLS.
Aviso
Definir a opção tlsInsecure
como true
pode expor seu aplicação a riscos de segurança. A ativação dessa opção torna seu aplicação desprotegido e potencialmente vulnerável a certificados expirados e a processos externos que se apresentam como instâncias de cliente válidas.
Desativar validação do certificado
O seguinte código mostra como desabilitar a validação do certificado:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidCertificates' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidCertificates=true'; $client = new MongoDB\Client($uri);
Para saber mais sobre como desativar a validação do certificado, consulte Permitir TLS inseguro no guia Configuração de TLS.
Desativar verificação de nome de host
O seguinte código mostra como desabilitar a verificação de nome de host:
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidHostnames' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidHostnames=true'; $client = new MongoDB\Client($uri);
Para saber mais sobre como desativar a verificação de nome de host, consulte Permitir TLS inseguro no guia Configuração de TLS.