개요
MongoDB 데이터베이스 연결을 보호하는 여러 메커니즘을 지원합니다. 이 페이지에는 이러한 각 메커니즘을 보여주는 코드 예제가 포함되어 있습니다.
팁
이 페이지에 표시된 메커니즘에 학습 보려면 각 섹션에 제공된 링크를 참조하세요.
이 페이지의 예시 사용하려면 코드 예시 샘플 애플리케이션 또는 자체 애플리케이션 에 복사합니다. 코드 예시의 모든 자리 표시자(예: <hostname>)를 MongoDB deployment 에 필요한 관련 값으로 바꿔야 합니다.
샘플 애플리케이션
다음 샘플 애플리케이션을 사용하여 이 페이지의 코드 예제를 테스트할 수 있습니다. 샘플 애플리케이션을 사용하려면 다음 단계를 수행하세요.
프로젝트 에 MongoDB PHP 라이브러리가 설치되어 있는지 확인합니다. MongoDB PHP 라이브러리 설치에 학습 보려면 다운로드 및 설치 가이드 를 참조하세요.
다음 코드를 복사하여 새
.php파일에 붙여넣습니다.이 페이지에서 코드 예제를 복사하여 파일의 지정된 줄에 붙여넣습니다.
팁
샘플 애플리케이션의 require 성명서는 MongoDB PHP 라이브러리를 로드하며 vendor 디렉토리가 애플리케이션 파일과 같은 디렉토리에 있다고 가정합니다. 애플리케이션 파일이 다른 곳에 있는 경우 그에 따라 vendor/autoload.php 경로를 조정하세요.
require __DIR__ . '/vendor/autoload.php';
// Start example code here
// End example code here
try { $client->test->command(['ping' => 1]); echo 'Successfully pinged the MongoDB server.', PHP_EOL;} catch (MongoDB\Driver\Exception\RuntimeException $e) { printf("Failed to ping the MongoDB server: %s\n", $e->getMessage());}SCRAM-SHA-256
다음 코드는 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);SCRAM-SHA-256 인증 에 대해 자세히 학습 인증 가이드 의 SCRAM 인증을 참조하세요.
X.509
다음 코드는 X.509 인증 메커니즘 을 사용하여 인증할 연결 URI를 만드는 방법을 보여줍니다.
$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);X.509 인증에 대해 자세히 학습하려면 인증 가이드에서 X.509 인증 을 참조하세요.
MONGODB-AWS
다음 섹션에서는 MONGODB-AWS 인증 메커니즘 을 사용하여 MongoDB 에 연결하는 방법을 보여줍니다. MONGODB-AWS 메커니즘을 사용하는 경우, MongoDB PHP 라이브러리는 다음 소스에서 나열된 순서대로 Amazon Web Services 자격 증명 을 조회 하려고 시도합니다.
연결 string 또는
$uriOptions배열 매개 변수의 일부로MongoDB\Client생성자에 전달되는 옵션환경 변수
Amazon Web Services EKS
AssumeRoleWithWebIdentity요청ECS 컨테이너 메타데이터
EC2 인스턴스 메타데이터
각 섹션에서는 클라이언트 로 전달된 옵션이나 대체 외부 소스에서 Amazon Web Services 자격 증명 을 검색할 때 MONGODB-AWS 로 인증하는 방법을 보여줍니다.
Amazon Web Services 사용한 인증에 대해 자세히 학습하려면 인증 가이드의 Amazon Web Services IAM 인증 을 참조하세요.
MongoDB\Client 자격 증명
다음 코드는 MONGODB-AWS로 인증하기 위해 Amazon Web Services 자격 증명 을 MongoDB\Client 생성자에 전달하는 방법을 보여줍니다.
$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);MongoDB\Client 자격 증명 을 검색하여 Amazon Web Services 로 인증하는 방법에 학습 보려면 인증 가이드 에서 MongoDB\Client Credentials 를 참조하세요.
외부 자격 증명
다음 코드는 환경 변수, AssumeRoleWithWebIdentity 요청, ECS 메타데이터 또는 EC2 인스턴스 메타데이터 에서 자격 증명 을 가져올 때 MONGODB-AWS 로 인증하는 방법을 보여줍니다.
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>', ['authMechanism' => 'MONGODB-AWS'],);$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS';$client = new MongoDB\Client($uri);외부 자격 증명 을 얻어 Amazon Web Services 로 인증하는 방법에 학습 보려면 인증 가이드 의 다음 섹션을 참조하세요.
TLS(전송 계층 보안)
TLS 활성화
다음 코드는 MongoDB 인스턴스 에 대한 연결을 위해 TLS를 활성화 하는 방법을 보여줍니다.
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true],);$uri = 'mongodb://<hostname>:<port>/?tls=true';$client = new MongoDB\Client($uri);TLS 활성화에 학습 보려면 TLS 구성 가이드 에서 TLS 활성화 를 참조하세요.
인증 기관(CA) 파일 지정
다음 코드는 MongoDB 인스턴스 에 연결하기 위해 CA 파일 의 경로를 지정하는 방법을 보여줍니다.
$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);CA 파일 지정에 학습 보려면 TLS 구성 가이드 에서 CA 파일 지정 을 참조하세요.
OCSP 검사 비활성화
다음 코드는 운전자 가 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);OCSP 검사 비활성화에 학습 보려면 TLS 구성 가이드 의 OCSP 를 참조하세요.
인증서 해지 목록(CRL) 지정
다음 코드는 CRL과 비교하여 서버의 인증서를 확인하도록 운전자 에 지시하는 방법을 보여줍니다.
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true], ['crl_file' => '/path/to/file.pem'],);CRL 지정에 대해 자세히 알아보려면 TLS 구성 가이드의 인증서 해지 목록 을 참조하세요.
클라이언트 인증서 제시
다음 코드는 운전자 가 MongoDB deployment 에 제공하는 클라이언트 인증서를 지정하는 방법을 보여줍니다.
$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);클라이언트 인증서 지정에 학습 보려면 TLS 구성 가이드 의 클라이언트 인증서 제시 를 참조하세요.
인증서 키 파일 비밀번호 제공
다음 코드는 클라이언트 인증서의 비밀번호를 지정하는 방법을 보여줍니다.
$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);중요
연결 URI에서 <password> 자리 표시자를 바꿀 때는 값을 백분율로 인코딩 해야 합니다.
키 파일 비밀번호 제공에 학습 보려면 TLS 구성 가이드 의 키 비밀번호 제공 을 참조하세요.
안전하지 않은 TLS 허용
다음 코드는 인증서 유효성 검사 및 호스트 이름 확인을 모두 비활성화하는 것과 동일한 효과가 있는 TLS 제약 조건을 완화하는 방법을 보여줍니다.
// Warning: Use the tlsInsecure option only for testing. Don't use it in production.$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsInsecure' => true],);// Warning: Use the tlsInsecure option only for testing. Don't use it in production.$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsInsecure=true';$client = new MongoDB\Client($uri);안전하지 않은 TLS 허용에 학습 보려면 TLS 구성 가이드 에서 안전하지 않은 TLS 허용 을 참조하세요.
인증서 유효성 검사 비활성화
다음 코드는 인증서 유효성 검사 를 비활성화하는 방법을 보여줍니다.
// Warning: Use the tlsAllowInvalidCertificates option only for testing. Don't use it in production.$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidCertificates' => true],);// Warning: Use the tlsAllowInvalidCertificates option only for testing. Don't use it in production.$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidCertificates=true';$client = new MongoDB\Client($uri);인증서 유효성 검사 비활성화에 대한 학습 내용은 TLS 구성 가이드 에서 안전하지 않은 TLS 허용 을 참조하세요.
호스트 이름 확인 사용 안 함
다음 코드는 호스트 이름 확인을 비활성화하는 방법을 보여줍니다.
// Warning: Use the tlsAllowInvalidHostnames option only for testing. Don't use it in production.$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidHostnames' => true],);// Warning: Use the tlsAllowInvalidHostnames option only for testing. Don't use it in production.$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidHostnames=true';$client = new MongoDB\Client($uri);호스트 이름 확인 비활성화에 학습 보려면 TLS 구성 가이드 에서 안전하지 않은 TLS 허용 을 참조하세요.
경고
프로덕션 환경에서는 사용하지 마세요.
프로덕션 환경에서는 tlsInsecure, tlsAllowInvalidCertificates 및 tlsAllowInvalidHostnames 옵션을 항상 false로 설정하다 . 코드를 테스트할 때 이러한 옵션을 활성화 할 수 있습니다.
프로덕션 환경에서 이러한 옵션 중 하나를 true로 설정하면 앱 이 안전하지 않게 됩니다. 앱 은 만료된 인증서와 유효한 클라이언트 인스턴스로 가장하는 외부 프로세스에 취약해집니다.