Docs Menu
Docs Home
/ /

Amazon Web Services ID 및 액세스 관리

참고

Amazon Web Services 인증 MongoDB 4.4 용 MongoDB 엔터프라이즈 에서만 사용할 수 있습니다.

MONGODB-AWS 인증 메커니즘 AWS ID 및 액세스 관리(IAM) 및 AWS 보안 토큰 서비스(STS)를 사용하여 MongoDB deployment 에 클라이언트의 ID를 증명합니다. 다음 단계에서는 AWS 인증 프로세스 설명합니다.

  1. 클라이언트 는 AWS IAM 자격 증명 사용하여 서명을 생성하고 이를 MongoDB deployment 로 전송합니다.

  2. 배포서버 클라이언트의 서명을 사용하여 Amazon Web Services STS에 요청 보냅니다.

  3. 요청 이 성공하면 STS는 클라이언트의 자격 증명 에 해당하는 IAM 사용자 또는 역할 의 Amazon 리소스 이름(ARN)을 반환합니다.

  4. 배포서버 반환된 ARN을 사용하여 사용자를 조회합니다. 클라이언트 는 이 사용자로 인증합니다.

참고

클라이언트 와 서버 서로 다른 사용자 이름을 사용합니다. 클라이언트 AWS 액세스 키 ID 사용자 이름 으로 전송합니다. 서버 액세스 키 ID 에 해당하는 IAM 사용자 또는 역할 의 ARN을 사용자 이름 으로 사용합니다.

이 메커니즘으로 인증하려면 다음을 수행합니다.

  • $external 데이터베이스 에 인증하려는 IAM 사용자 또는 역할 의 ARN인 사용자를 생성합니다.

  • MONGODB-AWS 인증 메커니즘 사용하도록 클라이언트 구성합니다.

Amazon Web Services 자격 증명 다음 구성 요소가 포함됩니다.

  • 액세스 키 ID

  • 시크릿 액세스 키

  • 선택적 세션 토큰

AWS IAM 자격 증명 사용한 인증은 액세스 키 ID 와 보안 액세스 키를 사용합니다. 임시 AWS IAM 자격 증명 사용한 인증은 액세스 키 ID, 비밀 액세스 키, 세션 토큰의 세 가지 구성 요소를 모두 사용합니다.

참고

드라이버는 네트워크를 통해 비밀 액세스 키 또는 세션 토큰을 전송하지 않습니다.

임시 자격 증명은 다음과 함께 사용됩니다.

이 페이지의 코드 예제에서는 다음 자리 표시자를 사용합니다.

  • <hostname>: MongoDB deployment 의 네트워크 주소 .

  • <port>: MongoDB deployment 의 포트 번호입니다.

  • <aws_access_key_id>: AWS 액세스 키 ID.

  • <aws_secret_access_key>: AWS 시크릿 액세스 키입니다.

  • <aws_session_token>: AWS 세션 토큰입니다.

이 페이지의 코드 예제를 사용하려면 이러한 자리 표시자를 원하는 값으로 바꾸세요.

C++ 운전자 환경에서 AWS IAM 자격 증명 조회 하거나 애플리케이션 코드에 명시적으로 제공할 수 있습니다.

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

  1. 연결 URI로 전달된 자격 증명

  2. 환경 변수

  3. Amazon Web Services EKS AssumeRoleWithWebIdentity 요청

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

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

연결 URI에서 장기(비임시) IAM 자격 증명 제공할 수 있습니다. 이렇게 하려면 다음 URI 매개변수를 설정하다 .

  • username: AWS 액세스 키 ID 로 설정합니다.

  • password: AWS 시크릿 액세스 키로 설정합니다.

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

연결 URI를 단독으로 사용하거나 mongocxx::options::tlsmongocxx::options::client 클래스를 사용하여 구성된 TLS 옵션과 함께 연결 URI를 사용할 수 있습니다. Connection URI 또는 Client Options with TLS 탭 선택하여 해당 구문을 확인합니다.

auto uri = mongocxx::uri("mongodb://<aws_access_key_id>:<aws_secret_access_key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);
mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.ca_file("/path/to/ca.pem");
client_options.tls_opts(tls_options);
auto uri = mongocxx::uri("mongodb://<aws_access_key_id>:<aws_secret_access_key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS&tls=true");
auto client = mongocxx::client(uri, client_options);

참고

URI로 자격 증명 제공하는 경우 액세스 키 ID 또는 비밀 액세스 키의 모든 특수 문자를 퍼센트 인코딩합니다.

연결 URI의 authMechanismProperties 매개변수에 세션 토큰을 포함하여 연결 URI에 임시 IAM 자격 증명 제공할 수 있습니다.

Connection URI 또는 Client Options with TLS 탭 선택하여 해당 구문을 확인합니다.

auto uri = mongocxx::uri("mongodb://<aws_access_key_id>:<aws_secret_access_key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<aws_session_token>");
auto client = mongocxx::client(uri);
mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.ca_file("/path/to/ca.pem");
client_options.tls_opts(tls_options);
auto uri = mongocxx::uri("mongodb://<aws_access_key_id>:<aws_secret_access_key>@<hostname>:<port>/?"
"authMechanism=MONGODB-AWS"
"&authMechanismProperties=AWS_SESSION_TOKEN:<aws_session_token>&tls=true");
auto client = mongocxx::client(uri, client_options);

MONGODB-AWS 인증 메커니즘 지정하고 usernamepassword를 생략하면 C++ 운전자 환경 변수, 웹 ID 역할 및 AWS 메타데이터 엔드포인트에서 AWS 자격 증명 자동으로 조회 하려고 시도합니다.

C++ 운전자 먼저 다음 환경 변수에서 자격 증명 확인합니다.

  • AWS_ACCESS_KEY_ID

  • AWS_SECRET_ACCESS_KEY

  • AWS_SESSION_TOKEN (선택 사항)

이러한 변수는 AWS CLI 와 같은 많은 AWS 도구 및 SDK에서 인식할 수 있으며, 일반적으로 AWS Lambda 환경에서도 설정하다 됩니다.

이러한 변수 설정의 예:

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>

이러한 환경 변수를 설정하다 후 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS"(으)로 설정하다 . Connection URI 또는 Client Options with TLS 탭 선택하여 해당 구문을 확인합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);
mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.ca_file("/path/to/ca.pem");
client_options.tls_opts(tls_options);
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS&tls=true");
auto client = mongocxx::client(uri, client_options);

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

이 메커니즘을 구성하려면 다음을 수행합니다.

  1. AWS 구성 파일 생성하거나 업데이트 . 이 구성 파일 생성하는 방법을 학습 AWS SDK 및 도구를 전역적으로 구성하기를 참조하세요.

  2. 다음 환경 변수를 설정합니다.

    • AWS_ROLE_ARN: 수임할 IAM 역할 의 ARN으로 설정합니다.

    • AWS_WEB_IDENTITY_TOKEN_FILE: 서비스 계정의 OIDC 토큰이 포함된 파일 의 경로로 설정합니다.

    • AWS_ROLE_SESSION_NAME (선택 사항): 수임된 역할 세션의 식별자로 설정합니다. 이 변수를 생략하면 운전자 임의의 식별자를 생성합니다.

  3. 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS"(으)로 설정합니다.

Connection URI 또는 Client Options with TLS 탭 선택하여 해당 구문을 확인합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);
mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.ca_file("/path/to/ca.pem");
client_options.tls_opts(tls_options);
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS&tls=true");
auto client = mongocxx::client(uri, client_options);

웹 ID 역할을 사용한 인증에 대해 자세히 학습 AssumeRoleWithWebIdentity API 참조하세요.

애플리케이션 Amazon ECS 컨테이너 에서 실행되는 경우 C++ 운전자 ECS 작업 메타데이터 엔드포인트에서 임시 AWS 자격 증명 조회 할 수 있습니다.

이 동작을 활성화 하려면 다음 예시 와 같이 AWS_CONTAINER_CREDENTIALS_RELATIVE_URI 환경 변수를 ECS 작업 메타데이터 엔드포인트의 상대 URI로 설정하다 .

export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<relative URI of the ECS task metadata endpoint>

그런 다음 authMechanism 을(를) "MONGODB-AWS"(으)로 설정하다 클라이언트 를 구성합니다. Connection URI 또는 Client Options with TLS 탭 선택하여 해당 구문을 확인합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);
mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.ca_file("/path/to/ca.pem");
client_options.tls_opts(tls_options);
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS&tls=true");
auto client = mongocxx::client(uri, client_options);

애플리케이션 Amazon EC2 인스턴스 에서 실행되는 경우 C++ 운전자 EC2 인스턴스 메타데이터 엔드포인트에서 임시 AWS 자격 증명 조회 할 수 있습니다.

이 동작을 활성화 하려면 연결 URI의 authMechanism 매개 변수를 "MONGODB-AWS"(으)로 설정하다 . Connection URI 또는 Client Options with TLS 탭 선택하여 해당 구문을 확인합니다.

auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS");
auto client = mongocxx::client(uri);
mongocxx::options::client client_options;
mongocxx::options::tls tls_options;
tls_options.ca_file("/path/to/ca.pem");
client_options.tls_opts(tls_options);
auto uri = mongocxx::uri("mongodb://<hostname>:<port>/?"
"authMechanism=MONGODB-AWS&tls=true");
auto client = mongocxx::client(uri, client_options);

참고

앞의 Amazon Web Services 인증 방법에서 환경 변수를 설정하다 한 경우, C++ 운전자 는 EC2 인스턴스 에서 자격 증명을 조회 하기 전에 해당 방법을 사용하여 자격 증명 조회 을 시도합니다. EC2 인스턴스 에서만 자격 증명 을 조회 하려면 환경 변수가 설정하다 되어 있지 않은지 확인합니다.

애플리케이션 EC2 인스턴스 의 ECS 컨테이너 에서 실행되고 컨테이너 가 인스턴스 메타데이터 에 대한 액세스 허용된 경우 운전자 EC2 인스턴스 메타데이터 엔드포인트에서 Amazon Web Services 자격 증명 조회 하려고 시도합니다. 운전자 이러한 방식으로 자격 증명 검색하면 애플리케이션 EC2 인스턴스 에 할당된 IAM 역할 로 인증할 수 있습니다.

컨테이너가 EC2 인스턴스 메타데이터에 액세스하지 못하도록 하는 방법을 학습하려면 Amazon Web Services 설명서를 참조하세요.

C++ 운전자 에서 mongocxx::client 객체 만들거나 TLS를 구성하는 방법에 대해 자세히 학습 다음 API 설명서를 참조하세요.

돌아가기

X.509

이 페이지의 내용