개요
MONGODB-AWS
인증 메커니즘 Amazon Web Services ID 및 액세스 관리(Amazon Web Services IAM) 자격 증명 사용하여 MongoDB 에 사용자를 인증합니다. 이 메커니즘은 MongoDB Atlas 에 인증할 때만 사용할 수 있습니다.
팁
Amazon Web Services IAM 인증을 위한 Atlas 구성
Amazon Web Services IAM 인증 위한 MongoDB Atlas 구성에 대해 자세히 학습 Atlas 설명서에서 Amazon Web Services IAM으로 인증 설정을 참조하세요.
MONGODB-AWS 인증 지정
MONGODB-AWS
인증 메커니즘은 AWS IAM(Amazon Web Services Identity and Access Management) 자격 증명을 사용하여 사용자를 인증합니다. AWS 서명 라이브러리가 아직 없는 경우 다음 npm
명령을 사용하여 설치하십시오.
npm install aws4
MONGODB-AWS
인증을 활성화한 상태로 MongoDB에 연결하려면 MONGODB-AWS
인증 메커니즘을 지정합니다.
드라이버는 다음 소스에서 자격 증명을 순서대로 확인합니다:
연결 문자열
환경 변수
웹 ID 토큰 파일
지정된 AWS ECS 엔드포인트
AWS_CONTAINER_CREDENTIALS_RELATIVE_URI
AWS EC2 엔드포인트. 자세한 내용은 작업에 대한 IAM 역할을 참조하세요.
중요
드라이버는 이전 목록에 지정된 순서에 따라 첫 번째로 탐지한 메서드에서만 자격 증명을 읽습니다. 예를 들어 연결 문자열에 AWS 자격 증명을 지정하면 드라이버는 환경 변수에 지정한 모든 자격 증명을 무시합니다.
연결 문자열을 사용하여 MongoDB 인스턴스에 연결하려면 연결을 시도할 때 AWS_ACCESS_KEY_ID
및 AWS_SECRET_ACCESS_KEY
자격 증명을 드라이버에 전달하세요. AWS 로그인에 세션 토큰이 필요한 경우 AWS_SESSION_TOKEN
도 포함합니다.
다음 코드는 연결 문자열을 사용하여 MONGODB-AWS
인증 메커니즘과 자격 증명을 지정하는 예를 보여줍니다.
중요
사용자 이름 및 인증서 파일 경로가 올바르게 구문 분석되도록 항상 encodeURIComponent
메서드를 사용하여 사용자 이름 및 인증서 파일 경로를 URI 인코딩합니다.
const { MongoClient } = require("mongodb"); // Replace the following with values for your environment. const accessKeyId = encodeURIComponent("<AWS_ACCESS_KEY_ID>"); const secretAccessKey = encodeURIComponent("<AWS_SECRET_ACCESS_KEY>"); const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${accessKeyId}:${secretAccessKey}@${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Uncomment the following lines if your AWS authentication setup requires a session token. // const sessionToken = encodeURIComponent("<AWS_SESSION_TOKEN>"); // uri = uri.concat(`&authMechanismProperties=AWS_SESSION_TOKEN:${sessionToken}`); // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
환경 변수에 저장된 Amazon Web Services 자격 증명을 사용하여 MongoDB 인스턴스를 인증하려면 shell 을 사용하여 다음 변수를 설정합니다.
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
참고
해당 역할에 대해 AWS 세션 토큰이 필요하지 않은 경우 AWS_SESSION_TOKEN
이 포함된 줄을 생략하세요.
AWS는 지연 시간을 줄이고 내장된 중복성을 구축하며, 세션 토큰의 유효성을 높이기 위해 글로벌 엔드포인트 대신 지역 AWS STS 엔드포인트를 사용할 것을 권장합니다. AWS 지역을 설정하려면 다음 예시와 같이 AWS_REGION 및 AWS_STS_REGIONAL_ENDPOINTS를 환경 변수로 설정하세요.
export AWS_STS_REGIONAL_ENDPOINTS=regional // Enables regional endpoints export AWS_REGION=us-east-1 // Sets your AWS region
두 환경 변수가 설정되지 않으면 기본값 지역은 us-east-1
입니다. 사용 가능한 AWS 지역 목록은 AWS 문서의 AWS 서비스 엔드포인트 참조에서 지역 엔드포인트 섹션을 참조하세요.
앞의 환경 변수를 설정한 후 다음 예와 같이 연결 string 에 MONGODB-AWS
인증 메커니즘을 지정합니다.
const { MongoClient } = require("mongodb"); // Remember to specify your AWS credentials in environment variables. const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
웹 ID 제공자로부터 얻은 OIDC(OpenID Connect) 토큰을 사용하여 Amazon Elastic Kubernetes Service(EKS) 또는 기타 서비스에 인증할 수 있습니다.
OIDC 토큰으로 인증하려면 먼저 @aws-sdk/credential-providers를 설치해야 합니다. . 다음 npm
명령을 사용하여 이 종속성을 설치할 수 있습니다.
npm install @aws-sdk/credential-providers
다음으로, OIDC 토큰이 포함된 파일을 만듭니다. 그런 다음 다음 예제와 같이 shell 을 사용하여 환경 변수에서 이 파일의 절대 경로를 설정합니다.
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
앞의 환경 변수를 설정한 후 다음 예와 같이 연결 string 에 MONGODB-AWS
인증 메커니즘을 지정합니다.
const { MongoClient } = require("mongodb"); // Remember to specify your AWS credentials in environment variables. const clusterUrl = "<cluster_url>"; const authMechanism = "MONGODB-AWS"; let uri = `mongodb+srv://${clusterUrl}/?authSource=%24external&authMechanism=${authMechanism}`; // Create a new MongoClient. const client = new MongoClient(uri); async function run() { try { // Establish and verify connection. await client.db("admin").command({ ping: 1 }); console.log("Connected successfully to server."); } finally { // Ensure that the client closes when it finishes/errors. await client.close(); } } run().catch(console.dir);
Amazon Web Services 자격 증명 지정
선택적 aws-sdk/credential-providers
종속성을 설치하면 운전자 Amazon Web Services SDK에 정의된 우선 순위 순위에 따라 자격 증명 검색합니다. 공유된 Amazon Web Services 자격 증명 파일 또는 구성 파일 이 있는 경우 운전자 기본값 으로 해당 자격 증명 사용합니다.
팁
aws-sdk/credential-providers
종속성이 자격 증명 검색하는 방법에 대해 자세히 학습하려면 Amazon Web Services SDK 설명서를 참조하세요.
조회 Amazon Web Services 자격 증명 수동으로 지정하려면 AWS_CREDENTIAL_PROVIDER
속성 Amazon Web Services SDK에서 정의된 자격 증명 제공자 로 설정하다 수 있습니다. 다음 예시 Amazon Web Services SDK의 제공자 체인을 Amazon Web Services 인증 메커니즘 으로 전달합니다.
const { MongoClient } = require('mongodb'); const { fromNodeProviderChain } = require('@aws-sdk/credential-providers'); const client = new MongoClient('<cluster_url>?authMechanism=MONGODB-AWS', { authMechanismProperties: { AWS_CREDENTIAL_PROVIDER: fromNodeProviderChain() } });
사용자 지정 제공자 사용하려면 AWS_CREDENTIAL_PROVIDER
인증 메커니즘 속성 에 자격 증명 반환하는 비동기 함수를 전달하면 됩니다. 다음 예시 환경 변수에서 자격 증명 가져오는 사용자 지정 제공자 함수를 Amazon Web Services 인증 메커니즘 으로 전달하는 방법을 보여줍니다.
const { MongoClient } = require('mongodb'); const client = new MongoClient('<cluster_url>?authMechanism=MONGODB-AWS', { authMechanismProperties: { AWS_CREDENTIAL_PROVIDER: async () => { return { accessKeyId: process.env.ACCESS_KEY_ID, secretAccessKey: process.env.SECRET_ACCESS_KEY } } } });
API 문서
이 페이지에서 설명하는 메서드 또는 유형에 대해 자세히 학습 다음 API 설명서를 참조하세요.