개요
참고
MongoDB-AWS 인증 메커니즘은 MongoDB Atlas에 MongoDB를 배포하는 데 사용할 수 있습니다.
MONGODB-AWS 인증 메커니즘 은 AWS IAM( Amazon Web Services Identity and Access Management) 자격 증명 사용하여 사용자를 인증합니다. MongoDB Atlas 구성에 대해 자세히 학습 보려면 AWS IAM 역할로 암호 없는 인증 설정 가이드를 참조하세요.
드라이버 이 인증 메커니즘 사용하도록 지시하려면 연결 문자열 에서 MONGODB-AWS 을 매개 변수로 지정하거나 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하여 지정할 수 있습니다.
코드 자리 표시자
이 페이지의 코드 예제에서는 다음 자리 표시자를 사용합니다.
awsKeyId- AWS 액세스 키 ID의 값awsSecretKey- AWS 시크릿 액세스 키의 값atlasUri- MongoDB Atlas 배포의 네트워크 주소hostname- MongoDB Atlas 배포서버의 호스트 이름port- MongoDB Atlas 배포 포트awsSessionToken- AWS 세션 토큰의 값
Amazon Web Services SDK
Java v1 또는 v2용 AWS SDK 중 하나를 사용하여 자격 증명을 지정할 수 있습니다. 이 메서드는 다음과 같은 기능을 제공합니다:
자격 증명을 얻기 위한 다양한 옵션
애플리케이션이 속도 제한을 예방하는 데 도움이 되는 자격 증명 캐싱
Elastic Kubernetes Service와 함께 사용할 자격 증명 제공자 관리.
MONGODB-AWS 인증에 Java용 AWS SDK를 사용하려면 다음을 수행해야 합니다:
인증 메커니즘 지정
프로젝트에 SDK를 종속 요소로 추가하세요.
자격 증명 공급자 체인의 메서드 중 하나를 사용하여 자격 증명을 제공합니다.
MongoCredential을 사용하여 인증 메커니즘을 지정하려면, 다음 예시와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고, MongoClient에 MongoCredential 인스턴스를 추가합니다:
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
연결 문자열에 인증 메커니즘을 지정하려면 다음 예시와 같이 이를 매개 변수로 추가합니다.
val mongoClient = MongoClient.create("mongodb://<atlasUri>?authMechanism=MONGODB-AWS")
AWS SDK를 프로젝트에 종속성으로 추가하려면 필요한 버전에 대한 다음 AWS 설명서를 참조하세요.
Java v2용 Amazon Web Services SDK의 경우 설정 가이드를 참조하세요.
Java v1용 Amazon Web Services SDK에 대해서는 시작하기 가이드를 참조하세요.
참고
Java v2용 AWS SDK의 경우, Java 드라이버는 현재 software.amazon.awssdk:auth:2.30.31 종속성을 사용하여 테스트를 진행 중입니다.
Java v1용 AWS SDK의 경우, Java 드라이버는 현재 com.amazonaws:aws-java-sdk-core:1.12.782 종속성을 사용하여 테스트를 진행 중입니다.
자격 증명을 제공하려면 필요한 버전에 대한 다음 AWS 설명서를 참조하세요.
드라이버가 자격 증명을 가져오는 데 사용하는 Java v2용 AWS SDK 클래스에 대해 자세히 알아보려면 DefaultCredentialsProvider API 문서를 참조하세요.
기본값 자격 증명 제공자 체인 사용 섹션에서 이 클래스에 자격 증명 제공하는 방법을 알아보세요.
드라이버가 자격 증명을 가져오는 데 사용하는 Java v1용 AWS SDK 클래스에 대해 자세히 알아보려면 DefaultAWSCredentialsProviderChain API 문서를 참조하세요.
기본 자격 증명 제공자 체인 사용 섹션에서 이 클래스에 자격 증명을 제공하는 방법을 알아보세요.
참고
프로젝트에 AWS SDK for Java의 v1 및 v2를 모두 포함하는 경우 v2 메서드를 사용하여 자격 증명을 제공해야 합니다.
환경에서 자격 증명 지정
드라이버에 MONGODB-AWS 인증 메커니즘을 사용하도록 지시하고 적절한 환경 변수를 설정하여 AWS IAM 자격 증명을 제공할 수 있습니다.
환경 변수를 사용하여 자격 증명을 제공하려면 다음을 수행해야 합니다.
인증 메커니즘 지정
적절한 환경 변수 추가
MongoCredential을(를) 사용하거나 연결 문자열을 사용하여 인증 메커니즘을 지정할 수 있습니다.
MongoCredential을 사용하여 인증 메커니즘을 지정하려면, 다음 예시와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고, MongoClient에 MongoCredential 인스턴스를 추가합니다:
val credential = MongoCredential.createAwsCredential(null, null) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
연결 문자열에 인증 메커니즘을 지정하려면 다음 예시와 같이 이를 매개 변수로 추가합니다.
val mongoClient = MongoClient.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이 포함된 줄을 생략하세요.
ECS 컨테이너 자격 증명을 사용하여 인증하려면 다음 예와 같이 bash 또는 유사한 셸을 사용하여 환경 변수에서 ECS 엔드포인트 상대 URI를 설정합니다:
export AWS_CONTAINER_CREDENTIALS_RELATIVE_URI=<your ECS endpoint>
EC2 컨테이너 자격 증명을 사용하여 인증하려면 앞서 언급한 환경 변수가 설정되어 있지 않은지 확인하세요. 드라이버는 기본 IPv4 EC2 인스턴스 메타데이터 엔드포인트에서 자격 증명을 가져옵니다.
MongoCredential에서 자격 증명 지정하기
MongoCredential 인스턴스를 사용하여MongoClient에 AWS IAM 자격 증명을 제공할 수 있습니다. MongoCredential 인증에 대한 MONGODB-AWS 인스턴스를 구성하려면 createAwsCredential() 팩토리 메서드를 사용합니다.
MongoCredential.createAwsCredential() 메서드에는 프로그래밍 방식 액세스 키만 제공할 수 있습니다. ECS 또는 EC2 컨테이너 자격 증명 을 제공해야 하는 경우 환경 또는 Amazon Web Services SDK에서 자격 증명 지정의 지침을 따르세요.
MONGODB-AWS 인증에 MongoCredential을 사용하려면 다음을 수행해야 합니다.
인증 메커니즘 지정
자격 증명 부여하기
MongoCredential을 사용하여 인증 메커니즘을 지정하려면, 다음 예시와 같이 MongoCredential.createAwsCredential() 팩토리 메서드를 사용하고, MongoClient에 MongoCredential 인스턴스를 추가합니다:
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
AWS 세션 토큰을 지정해야 하는 경우 다음 예시와 같이 withMechanismProperty() 메서드에 전달합니다:
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty("AWS_SESSION_TOKEN", "<awsSessionToken>") val settings = MongoClientSettings.builder() .applyToClusterSettings { builder: ClusterSettings.Builder -> builder.hosts( listOf(ServerAddress("<atlasUri>")) ) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
자격 증명을 새로 고치려면 다음 예와 같이 새 자격 증명을 반환하는 Supplier lambda 표현식을 선언하면 됩니다.
val awsFreshCredentialSupplier: Supplier<AwsCredential> = Supplier { // Add your code here to fetch new credentials // Return the new credentials AwsCredential("<awsKeyId>", "<awsSecretKey>", "<awsSessionToken>") } val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) .withMechanismProperty(MongoCredential.AWS_CREDENTIAL_PROVIDER_KEY, awsFreshCredentialSupplier) val settings = MongoClientSettings.builder() .applyToClusterSettings { builder -> builder.hosts(listOf(ServerAddress("<hostname>", "<port>"))) } .credential(credential) .build() val mongoClient = MongoClient.create(settings)
연결 문자열 에 Amazon Web Services IAM 자격 증명 MongoClientSettings 제공해야 하는 경우 applyConnectionString() 메서드를 호출하여 에 추가할 수 있습니다.
val credential = MongoCredential.createAwsCredential("<awsKeyId>", "<awsSecretKey>".toCharArray()) val connectionString = ConnectionString("mongodb://<atlasUri>/?authMechanism=MONGODB-AWS&authMechanismProperties=AWS_SESSION_TOKEN:<awsSessionToken>") val settings = MongoClientSettings.builder() .applyConnectionString(connectionString) .credential(credential) .build() val mongoClient = MongoClient.create(settings)