개요
MongoDB 데이터베이스 연결을 보호하는 여러 메커니즘을 지원합니다. 이 페이지에는 이러한 각 메커니즘을 보여주는 코드 예제가 포함되어 있습니다.
팁
이 페이지에 표시된 메커니즘에 학습 보려면 각 섹션에 제공된 링크를 참조하세요.
이 페이지의 예시 사용하려면 코드 예시 샘플 애플리케이션 또는 자체 애플리케이션 에 복사합니다. 코드 예제의 모든 자리 <hostname> 표시자(예:)를 MongoDB deployment 에 맞는 관련 값으로 바꿔야 합니다.
샘플 애플리케이션
다음 샘플 애플리케이션을 사용하여 이 페이지의 코드 예제를 테스트할 수 있습니다. 샘플 애플리케이션을 사용하려면 다음 단계를 수행하세요.
프로젝트 에 MongoDB PHP 라이브러리가 설치되어 있는지 확인합니다. MongoDB PHP 라이브러리 설치에 학습 보려면 다운로드 및 설치 가이드 를 참조하세요.
다음 코드를 복사하여 새
.php파일에 붙여넣습니다.이 페이지에서 코드 예제를 복사하여 파일의 지정된 줄에 붙여넣습니다.
팁
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
다음 코드는 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 인증을 참조하세요.
MONGODB 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 제약 조건을 완화하는 방법을 보여줍니다.
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsInsecure' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsInsecure=true'; $client = new MongoDB\Client($uri);
안전하지 않은 TLS 허용에 학습 보려면 TLS 구성 가이드 에서 안전하지 않은 TLS 허용 을 참조하세요.
경고
tlsInsecure 옵션을 true 로 설정하면 애플리케이션 이 보안 위험에 노출될 수 있습니다. 이 옵션을 활성화하면 애플리케이션 이 안전하지 않고 만료된 인증서와 유효한 클라이언트 인스턴스로 가장하는 외부 프로세스에 잠재적으로 취약해집니다.
인증서 유효성 검사 비활성화
다음 코드는 인증서 유효성 검사 를 비활성화하는 방법을 보여줍니다.
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidCertificates' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidCertificates=true'; $client = new MongoDB\Client($uri);
인증서 유효성 검사 비활성화에 대한 학습 내용은 TLS 구성 가이드 에서 안전하지 않은 TLS 허용 을 참조하세요.
호스트 이름 확인 사용 안 함
다음 코드는 호스트 이름 확인을 비활성화하는 방법을 보여줍니다.
$client = new MongoDB\Client( 'mongodb://<hostname>:<port>/', ['tls' => true, 'tlsAllowInvalidHostnames' => true], );
$uri = 'mongodb://<hostname>:<port>/?tls=true&tlsAllowInvalidHostnames=true'; $client = new MongoDB\Client($uri);
호스트 이름 확인 비활성화에 학습 보려면 TLS 구성 가이드 에서 안전하지 않은 TLS 허용 을 참조하세요.