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.
To use an example from this page, copy the code example into the sample application or your own application. Make sure to replace all placeholders in the code examples, such as <hostname>, with the relevant values for your MongoDB deployment.
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 de download 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.
Dica
The require statement in the sample application loads the MongoDB PHP Library and assumes that the vendor directory is in the same directory as your application file. If your application file is located elsewhere, adjust the path to vendor/autoload.php accordingly.
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 sobre a autenticação SCRAM-SHA-256, 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 sobre a autenticação X.509, 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$uriOptionsVariáveis de ambiente
Solicitação Amazon Web Services EKS
AssumeRoleWithWebIdentityMetadados 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 como autenticar com o Amazon Web Services, consulte Autenticação do Amazon Web Services IAM no guia de 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 porcentagem.
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.