Docs Menu
Docs Home
/ / /
PHP 라이브러리 매뉴얼
/

인증 메커니즘.

이 페이지의 내용

  • 개요
  • SCRAM-SHA-256
  • SCRAM-SHA-1
  • MONGODB-X509
  • MONGODB-AWS
  • MongoDB\Client 자격 증명
  • 환경 변수
  • AssumeRoleWithWebIdentity 요청
  • ECS Metadata
  • EC2 인스턴스 메타데이터
  • 추가 정보
  • API 문서

이 가이드 에서는 PHP 라이브러리에서 사용자를 인증하는 데 사용할 수 있는 메커니즘에 대해 설명합니다.

중요

백분율 인코딩

를 인코딩 해야 합니다. 사용자 이름 과 비밀번호를 MongoDB URI에 포함하기 전에 확인합니다. 메서드를 사용하여 rawurlencode() RFC 에 지정된 URI 구문에 따라 이러한 값을 인코딩할 수 3986 있습니다. 옵션 배열 매개변수로 사용자 이름이나 비밀번호를 MongoDB\Client 생성자에 전달할 때 사용자 이름 이나 비밀번호를 퍼센트 인코딩하지 마세요.

자세히 알아보려면 다음 리소스를 참조하세요.

  • RFC 3986

  • rawurlencode PHP 매뉴얼에서

SCRAM -SHA-256,RFC 7677 에 정의된 대로 는 MongoDB Server v 실행 MongoDB 배포의 기본값 인증 메커니즘4 0 입니다. 이상.

이 메커니즘으로 인증하려면 다음 연결 옵션을 설정합니다.

  • username: 인증할 사용자 이름입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • password: 인증할 비밀번호입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • authSource: 인증할 MongoDB database 입니다. 기본값 MongoDB PHP 라이브러리는 연결 URI를 포함하는 경우 해당 데이터베이스 에 대해 인증합니다. 그렇지 않으면 admin 데이터베이스 를 기준으로 인증합니다.

  • authMechanism: 'SCRAM-SHA-256' 로 설정합니다. MongoDB Server v4.0 에 연결된 경우 authMechanism 설정은 선택 사항입니다.

옵션 배열 을 MongoDB\Client 생성자에 전달하거나 연결 URI의 매개변수를 통해 두 가지 방법으로 이러한 옵션을 설정하다 수 있습니다.

$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-1,RFC 5802 에 정의된 대로 는 MongoDB Server v 실행 MongoDB 배포의 기본값 인증 메커니즘 입니다. .36

참고

MongoDB PHP 라이브러리 v1.20 는 MongoDB Server v3.6 에 대한 지원 을 중단합니다. 라이브러리의 v1.20+를 사용하는 경우, 지원되는 모든 서버 버전은 기본값 으로 SCRAM-SHA-256 인증 메커니즘 합니다.

이 메커니즘으로 인증하려면 SCRAM-SHA-256 와 동일한 구문을 사용하되 authMechanism 옵션의 값을 'SCRAM-SHA-1' 로 변경합니다.

TLS를 활성화 하면 TLS 핸드셰이크 중에 MongoDB PHP 라이브러리가 X.509 클라이언트 인증서를 MongoDB 에 제공하여 신원을 증명할 수 있습니다. MONGODB-X509 인증 메커니즘 은 이 인증서를 사용하여 클라이언트 를 인증합니다.

이 메커니즘으로 인증하려면 다음 연결 옵션을 설정합니다.

  • tls: true 로 설정합니다.

  • tlsCertificateKeyFile: 클라이언트 인증서 및 비공개 키가 포함된 .pem 파일의 파일 경로입니다.

  • authMechanism: 'MONGODB-X509' 로 설정합니다.

옵션 배열 을 MongoDB\Client 생성자에 전달하거나 연결 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);

중요

MONGODB-AWS 인증 메커니즘 에는 MongoDB Server v4.4 이상이 필요합니다.

MONGODB-AWS 인증 메커니즘 은 AWS IAM(Amazon Web Services ID 및 액세스 관리) 또는 AWS Lambda 자격 증명 을 사용하여 애플리케이션 을 인증합니다. 이 메서드를 사용하여 인증하려면 authMechanism 연결 옵션의 값으로 'MONGODB-AWS' 를 지정해야 합니다.

참고

MongoDB PHP 라이브러리는 libmongoc의 MONGODB-AWS 인증 메커니즘 구현 을 사용합니다. libmongoc에서 이 인증 메커니즘 을 사용하는 방법에 학습 보려면 C 운전자 설명서에서 AWS IAM을 통한 인증을 참조하세요.

MONGODB-AWS 메커니즘을 사용하는 경우 운전자 는 나열된 순서대로 다음 소스에서 AWS 자격 증명 을 조회 하려고 시도합니다.

  1. 연결 URI의 일부로 또는 옵션 매개변수로 MongoDB\Client 에 전달된 옵션

  2. 환경 변수

  3. AWS EKS AssumeRoleWithWebIdentity 요청

  4. ECS 컨테이너 메타데이터

  5. EC2 인스턴스 메타데이터

다음 섹션에서는 이러한 소스에서 자격 증명 을 조회 하고 이를 사용하여 PHP 애플리케이션 을 인증하는 방법을 설명합니다.

먼저 운전자 는 AWS 자격 증명 을 연결 URI 또는 $uriOptions 배열 매개변수의 일부로 MongoDB\Client 생성자에 전달했는지 확인합니다. 자격 증명 을 MongoDB\Client 에 전달하려면 다음 연결 옵션을 설정하다 합니다.

  • username: 인증할 Amazon Web Services IAM 액세스 키 ID 입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • password: Amazon Web Services IAM 시크릿 액세스 키입니다. 이 값을 연결 URI에 포함하기 전에 퍼센트 인코딩합니다.

  • authMechanism: 'MONGODB-AWS' 로 설정합니다.

옵션 배열 을 MongoDB\Client 생성자에 전달하거나 연결 URI의 매개변수를 통해 두 가지 방법으로 이러한 옵션을 설정하다 수 있습니다.

$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 객체 를 구성할 때 사용자 이름 과 비밀번호를 제공하지 않으면 운전자 는 다음 환경 변수에서 AWS 자격 증명 을 조회 하려고 시도합니다.

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN

이러한 환경 변수를 사용하여 애플리케이션 을 인증하려면 먼저 인증 에 필요한 AWS IAM 값으로 설정하다 합니다. 다음 코드 예시 와 같이 셸 에서 export 명령을 실행 하거나 .env 파일 에 변수를 추가할 수 있습니다.

export AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
export AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
export AWS_SESSION_TOKEN=<AWS session token>
AWS_ACCESS_KEY_ID=<AWS IAM access key ID>
AWS_SECRET_ACCESS_KEY=<AWS IAM secret access key>
AWS_SESSION_TOKEN=<AWS session token>

중요

이러한 환경 변수의 값은 퍼센트 인코딩하지 마세요.

이러한 환경 변수를 설정하다 한 후 authMechanism 연결 옵션을 'MONGODB-AWS' 로 설정하다 합니다.

다음 예시 에서는 authMechanism 연결 옵션을 설정합니다. 옵션 배열 을 MongoDB\Client 생성자에 전달하거나 연결 URI의 매개변수를 통해 두 가지 방법으로 이 옵션을 설정하다 수 있습니다.

$client = new MongoDB\Client(
'mongodb://<hostname>:<port>',
['authMechanism' => 'MONGODB-AWS']
);
$uri = 'mongodb://<hostname>:<port>/?authMechanism=MONGODB-AWS';
$client = new MongoDB\Client($uri);

AWS Lambda

AWS Lambda 런타임은 초기화 중에 이러한 환경 변수를 자동으로 설정할 수 있습니다. AWS Lambda 환경에서 환경 변수를 사용하는 방법에 대한 자세한 내용은 Lambda 환경 변수 사용 을 참조하세요. AWS 설명서에 있습니다.

애플리케이션 이 OIDC(OpenID Connect) ID 제공자 로부터 EKS 클러스터 의 사용자를 인증하는 경우 운전자 는 AssumeRoleWithWebIdentity 요청 을 통해 OIDC 토큰을 애플리케이션 의 임시 AWS 자격 증명 으로 교환할 수 있습니다.

요청 에서 반환된 임시 AWS IAM 자격 증명 으로 인증하려면 AssumeRoleWithWebIdentity AWS 구성 파일 이 환경에 있고 올바르게 구성되어 있는지 확인합니다. AWS 구성 파일 을 생성하고 구성하는 방법을 학습 보려면 구성 을 참조하세요. AWS 설명서에 있습니다.

AssumeRoleWithWebIdentity 요청 에 대한 환경을 구성한 후 authMechanism 연결 옵션을 'MONGODB-AWS' 로 설정하다 합니다. authMechanism 옵션을 설정하는 예시 를 보려면 이 페이지의 authMechanism 예시 를 참조하세요.

AssumeRoleWithWebIdentity 요청을 사용하여 애플리케이션을 인증하는 방법에 대한 자세한 내용은 다음 Amazon Web Services 설명서를 참조하세요.

애플리케이션 이 Elastic Container Service(ECS) 컨테이너 에서 실행되는 경우 운전자 는 ECS 엔드포인트에서 임시 AWS 자격 증명 을 자동으로 조회 할 수 있습니다. 이렇게 하려면 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 이라는 환경 변수에 ECS 엔드포인트의 URI를 지정합니다. 다음 예시 와 같이 export 셸 명령을 실행 하거나 .env 파일 에 추가하여 이 변수를 설정하다 수 있습니다.

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<URI of the ECS endpoint>

환경 변수를 설정하다 한 후 authMechanism 연결 옵션을 'MONGODB-AWS' 로 설정하다 합니다. authMechanism 옵션을 설정하는 예시 를 보려면 이 페이지의 authMechanism 예시 를 참조하세요.

운전자 는 Amazon Elastic Cloud Compute(EC2) 인스턴스 에서 임시 AWS 자격 증명 을 자동으로 조회 할 수 있습니다. EC2 인스턴스 내에서 임시 자격 증명 을 사용하려면 authMechanism 연결 옵션을 'MONGODB-AWS' 로 설정하다 합니다. authMechanism 옵션을 설정하는 예시 를 보려면 이 페이지의 authMechanism 예시 를 참조하세요.

참고

MongoDB PHP 라이브러리는 환경 변수 섹션에 설명된 환경 변수가 설정하다 되지 않은 경우에만 EC2 인스턴스 에서 자격 증명 을 검색합니다.

MongoDB PHP 라이브러리에서 MongoDB\Client 객체 를 만드는 방법에 학습 보려면 MongoDB 클라이언트 만들기 가이드 를 참조하세요.

MongoDB\Client 클래스에 학습 보려면 라이브러리 API 문서에서 MongoDB\Client 를 참조하세요.

에 전달할 수 있는 URI 옵션의 전체 목록을 MongoDB\Client 보려면 MongoDB\ 드라이버\ 관리자::__construct() 매개변수 를 참조하세요. 확장 API 문서에서 확인 가능합니다.

돌아가기

데이터 보안 유지