개요
MONGODB-AWS 인증 메커니즘 Amazon Web Services ID 및 액세스 관리(Amazon Web Services IAM) 자격 증명 사용하여 MongoDB 에 사용자를 인증합니다. 이 메커니즘은 MongoDB Atlas 에 인증할 때만 사용할 수 있습니다.
Amazon Web Services IAM 인증 위한 MongoDB Atlas 구성에 대해 자세히 학습 Atlas 설명서에서 Amazon Web Services IAM으로 인증 설정을 참조하세요.
참고
Amazon Web Services SDK 테스트
Java Reactive Streams 운전자 AWS SDK 버전 2.30.31 및 1.12.782 으로 MONGODB-AWS 을(를) 테스트합니다.
코드 자리 표시자
이 페이지의 코드 예제에서는 다음 자리 표시자를 사용합니다.
<awsKeyId>: Amazon Web Services 액세스 키 ID<atlasUri>: MongoDB Atlas 배포서버 서버의 네트워크 주소<awsSecretKey>: Amazon Web Services 시크릿 액세스 키<awsSessionToken>: Amazon Web Services 세션 토큰<hostname>: MongoDB Atlas 배포서버 서버의 호스트 이름<port>: MongoDB Atlas 배포서버 서버의 포트
이 페이지의 코드 예제를 사용하려면 이러한 자리 표시자를 원하는 값으로 바꾸세요.
MONGODB-AWS 인증 지정
드라이버에 이 인증 메커니즘을 사용하도록 지시하려면 연결 문자열의 매개변수로 또는 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하여 MONGODB-AWS 를 지정할 수 있습니다.
이 섹션에서는 이 인증 메커니즘 지정하는 방법과 AWS IAM 자격 증명 Java Reactive Streams 운전자 에 제공하는 다양한 방법에 대해 설명합니다.
Java 용 Amazon Web Services SDK 사용
중요
MONGODB-AWS 자격 증명 제공하는 이 메서드는 Java Reactive Streams 운전자 v4.8 이상에서만 사용할 수 있습니다.
다음 기능을 제공하는 Java 용 Amazon Web Services SDK의 v1 또는 v2 를 사용하여 자격 증명 지정할 수 있습니다.
자격 증명을 얻기 위한 다양한 옵션
애플리케이션이 속도 제한을 예방하는 데 도움이 되는 자격 증명 캐싱
Elastic Kubernetes Service와 함께 사용할 자격 증명 제공자 관리.
MONGODB-AWS 인증 에 Java 용 Amazon Web Services SDK를 사용하려면 다음 작업을 수행해야 합니다.
인증 메커니즘 지정합니다.
SDK를 프로젝트 에 종속성으로 추가합니다.
자격 증명 제공자 체인의 메서드 중 하나를 사용하여 자격 자격 증명 제공합니다.
다음을 사용하여 인증 메커니즘 지정 MongoCredential
MongoCredential를 사용하여 인증 메커니즘 지정하려면 다음 예시 와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고 MongoCredential 인스턴스 MongoClient에 추가합니다.
MongoCredential credential = MongoCredential.createAwsCredential(null, null); // Creates a MongoClient that receives configuration information from a MongoCredential and environment variables MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
연결 문자열 에 인증 메커니즘 지정하려면 다음 예시 와 같이 매개 변수로 추가합니다.
MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");
Amazon Web Services SDK 종속성 추가
프로젝트 에 AWS SDK를 종속성으로 추가하려면 다음 AWS 설명서를 참조하세요.
Java v2용 Amazon Web Services SDK의 경우 설정 가이드를 참조하세요.
Java v1용 Amazon Web Services SDK에 대해서는 시작하기 가이드를 참조하세요.
참고
Java v2용 AWS SDK의 경우 Java Reactive Streams 운전자 software.amazon.awssdk:auth:2.30.31 종속성을 사용하여 테스트합니다.
Java v1용 AWS SDK의 경우 Java Reactive Streams 운전자 com.amazonaws:aws-java-sdk-core:1.12.782 종속성을 사용하여 테스트합니다.
자격 증명 제공
Java Reactive Streams 운전자 에 자격 증명 제공하려면 다음 AWS 설명서를 참조하세요.
운전자 자격 증명 가져오는 데 사용하는 Java v 클래스용 AWS SDK에2 대해 자세히 학습 보려면 DefaultCredentialsProvider AWS API 설명서를 참조하세요.
AWS API 설명서의 기본값 자격 증명 제공자 체인 사용 섹션에서 이 클래스에 자격 증명 제공하는 방법을 알아보세요.
운전자 자격 증명 가져오는 데 사용하는 Java v 클래스용 AWS SDK에1 대해 자세히 학습 보려면 DefaultAWSCredentialsProviderChain AWS API 설명서를 참조하세요.
AWS API 설명서의 기본 자격 증명 제공자 체인 사용하기 섹션에서 이 클래스에 자격 증명 제공하는 방법을 알아보세요.
참고
프로젝트 에 AWS SDK for Java 의 v1 및 v2 를 모두 포함하는 경우 v2 메서드를 사용하여 Java Reactive Streams 운전자 에 자격 증명 제공해야 합니다.
환경 변수 사용
운전자 MONGODB-AWS 인증 메커니즘 사용하도록 지시하고 환경 변수를 설정하여 AWS IAM 자격 증명 제공할 수 있습니다.
환경 변수를 사용하여 자격 증명 제공하려면 다음 조치를 수행해야 합니다.
인증 메커니즘 지정
환경 변수 추가
인증 메커니즘 지정
MongoCredential 또는 연결 문자열 사용하여 인증 메커니즘 지정할 수 있습니다.
MongoCredential를 사용하여 인증 메커니즘 지정하려면 다음 예시 와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고 MongoCredential 인스턴스 MongoClient에 추가합니다.
MongoCredential credential = MongoCredential.createAwsCredential(null, null); // Creates a MongoClient that receives configuration information from a MongoCredential and environment variables MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
연결 문자열 에 인증 메커니즘 지정하려면 다음 예시 와 같이 매개 변수로 추가합니다.
MongoClient mongoClient = MongoClients.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS");
환경 변수 설정
환경 변수를 설정하다 다음 유형의 인증 활성화 할 수 있습니다.
프로그래밍 방식의 액세스 키
웹 멱등
ECS 컨테이너 자격 증명
EC2 컨테이너 자격 증명
프로그래밍 방식 액세스 키
다음 예시는 bash 또는 유사한 셸을 사용하여 환경 변수에서 프로그래밍 방식 액세스 키를 설정하는 방법을 보여 줍니다:
export AWS_ACCESS_KEY_ID=<awsKeyId> export AWS_SECRET_ACCESS_KEY=<awsSecretKey> export AWS_SESSION_TOKEN=<awsSessionToken>
해당 역할 에 대한 AWS 세션 토큰이 필요하지 않은 경우 AWS_SESSION_TOKEN가 포함된 명령을 생략합니다.
웹 멱등
OIDC(OpenID Connect)와 호환되는 웹 ID 제공자 사용하여 Amazon Elastic Kubernetes Service(EKS) 또는 기타 서비스에 인증할 수 있습니다.
중요
웹 멱등을 사용하여 인증하려면 프로젝트에 AWS SDK의 v1 또는 v2를 종속 요소로 포함해야 합니다.
웹 멱등을 사용하려면 OIDC 토큰이 포함된 파일을 만듭니다. 다음으로, 다음 예와 같이 bash 또는 유사한 셸을 사용하여 환경 변수를 이 파일의 절대 경로로 설정합니다.
export AWS_WEB_IDENTITY_TOKEN_FILE=<absolute path to file containing your OIDC token>
ECS 컨테이너 자격 증명
ECS 컨테이너 자격 증명 사용하여 인증하려면 bash 다음 예시 와 같이 또는 유사한 셸 사용하여 환경 변수에서 ECS 엔드포인트 상대 URI를 설정하다 .
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>
EC2 컨테이너 자격 증명
EC2 컨테이너 자격 증명 사용하여 인증하려면 이 섹션에 언급된 환경 변수가 설정하다 있지 않은지 확인합니다. 운전자 환경 변수 대신 기본값 IPv4 EC2 인스턴스 메타데이터 엔드포인트에서 자격 증명 가져옵니다.
MongoCredential 인스턴스 사용
MongoCredential 인스턴스 사용하여 MongoClient 에 Amazon Web Services IAM 자격 증명 제공할 수 있습니다. MONGODB-AWS 인증 위한 MongoCredential 인스턴스 구성하려면 createAwsCredential() 팩토리 메서드를 사용합니다.
메서드에는 프로그래밍 방식 액세스 키만 MongoCredential.createAwsCredential() 제공할 수 있습니다. ECS 또는 EC2 컨테이너 자격 증명 제공해야 하는 경우 환경 변수 사용 또는 Java 용 AWS SDK 사용 섹션의 지침을 따르세요.
MONGODB-AWS 인증 에 MongoCredential 를 사용하려면 다음 조치를 수행해야 합니다.
인증 메커니즘 지정
자격 증명 부여하기
다음을 사용하여 인증 메커니즘 지정 MongoCredential
MongoCredential를 사용하여 인증 메커니즘 지정하려면 다음 예시 와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고 MongoCredential 인스턴스 MongoClient에 추가합니다.
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()); // Creates a MongoClient that receives AWS credentials from the MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
세션 토큰 지정
AWS 세션 토큰을 지정해야 하는 경우 다음 예시 와 같이 withMechanismProperty() 메서드에 전달합니다.
MongoCredential credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>"); // Creates a MongoClient that receives configuration information from a MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>")))) .credential(credential) .build());
자격 증명 새로 고침
AWS IAM 자격 증명 새로 고치려면 다음 예시 와 같이 새 자격 증명 반환하는 Supplier lambda 표현식 선언합니다.
Supplier<AwsCredential> awsFreshCredentialSupplier = () -> { // Add your code to fetch new credentials return new AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>"); }; // Creates a MongoCredential instance to specify the new AWS credentials MongoCredential credential = MongoCredential.createAwsCredential(null, null) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier); // Creates a MongoClient that receives new configuration information from a MongoCredential instance MongoClient mongoClient = MongoClients.create( MongoClientSettings.builder() .applyToClusterSettings(builder -> builder.hosts(Collections.singletonList(new ServerAddress("<hostname>", <port>)))) .credential(credential) .build());
API 문서
이 페이지에서 설명하는 메서드 또는 유형에 대해 자세히 학습 다음 API 설명서를 참조하세요.