IAM 자격 증명을 사용한 인증 - Amazon DocumentDB

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

IAM 자격 증명을 사용한 인증

Amazon DocumentDB 사용자 및 애플리케이션은 IAM 사용자 및 역할을 사용하여 Amazon DocumentDB 클러스터에 인증할 수 있습니다. Amazon DocumentDB IAM 인증은 비밀번호가 없는 인증 방법입니다. 또한 클라이언트 애플리케이션은 IAM 역할/사용자를 사용할 때 Amazon DocumentDB 클러스터에 비밀번호 암호를 전송하지 않습니다. 대신 클라이언트 연결은 임시 보안 토큰을 AWS STS 사용하여 인증됩니다. 이제 비관리자 사용자 및 애플리케이션은 다른 Amazon DocumentDB 클러스터 및 기타 AWS 서비스에 연결할 때 동일한 IAM 자격 증명 ARN을 사용할 수 있습니다.

암호 기반 인증과 IAM 인증을 모두 사용하여 Amazon DocumentDB 클러스터에 대한 사용자 및 애플리케이션을 인증하도록 선택할 수도 있습니다. IAM 인증은 Amazon DocumentDB 인스턴스 기반 클러스터 버전 5.0에서만 사용할 수 있습니다. Amazon DocumentDB 기본 사용자는 IAM 자격 증명 ARN을 사용한 IAM 인증이 지원되지 않습니다.

참고

기본 사용자는 기존 비밀번호 기반 인증을 통해서만 인증할 수 있습니다.

IAM 사용자 및 역할을 사용한 인증 시작하기

IAM 자격 증명이 있는 Amazon DocumentDB 사용자 및 역할은 $external 데이터베이스에서 생성 및 관리됩니다.

사용자 생성

기본 사용자로 연결한 다음 IAM 사용자 및 역할을 생성합니다.

use $external; db.createUser( { user: "arn:aws:iam::123456789123:user/iamuser", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

또는 IAM 역할을 사용하여 Amazon DocumentDB 사용자를 추가합니다.

use $external; db.createUser( { user: "arn:aws:iam::123456789123:role/iamrole", mechanisms: ["MONGODB-AWS"], roles: [ { role: "readWrite", db: "readWriteDB" } ] } );

IAM 사용자 또는 역할 수정

기존 IAM 사용자를 수정합니다.

use $external; db.updateUser( "arn:aws:iam::123456789123:user/iamuser", { roles: [ { role: "read", db: "readDB" } ] } );

기존 IAM 역할을 수정합니다.

use $external; db.updateUser( "arn:aws:iam::123456789123:role/iamrole", { roles: [ { role: "read", db: "readDB" } ] } );

IAM 사용자로부터 역할을 부여하거나 취소하려면

use $external; db.grantRolesToUser( "arn:aws:iam::123456789123:user/iamuser", [ { db: "admin", role: "readWriteAnyDatabase" } ] );
use $external; db.revokeRolesFromUser( "arn:aws:iam::123456789123:user/iamuser", [ { db: "admin", role: "readWriteAnyDatabase" } ] );

IAM 역할에서 역할을 부여하거나 취소하려면

use $external; db.grantRolesToUser( "arn:aws:iam::123456789123:user/iamrole", [ { db: "admin", role: "readWriteAnyDatabase" } ] );
use $external; db.revokeRolesFromUser( "arn:aws:iam::123456789123:user/iamrole", [ { db: "admin", role: "readWriteAnyDatabase" } ] );

IAM 사용자 또는 역할 삭제

기존 IAM 사용자를 삭제하려면

use $external; db.dropUser("arn:aws:iam::123456789123:user/iamuser");

기존 IAM 역할을 삭제하려면

use $external; db.dropUser("arn:aws:iam::123456789123:role/iamrole");

AWS IAM을 사용하여 인증하도록 연결 URI 구성

AWS IAM을 사용하여 인증하려면 다음 URI 파라미터를 authSource$external 사용하고 authMechanism로 사용합니다MONGODB-AWS. IAM 사용자를 사용하는 경우 사용자 이름과 암호 필드가 각각 액세스 키와 보안 키로 바뀝니다. IAM 역할을 수임하는 경우 현재 환경에 연결됩니다(예: AWS Lambda 함수, Amazon EC2 인스턴스). MONGODB-AWS 메커니즘을 사용하여 인증할 때 자격 증명을 구체적으로 전달할 필요가 없습니다. MONGODB-AWS 인증 메커니즘을 지원하는 MongoDB 드라이버를 사용하는 경우 드라이버는 컴퓨팅 인스턴스(예: Amazon EC2, Lambda 함수 등)에서 IAM 역할 자격 증명을 검색할 수도 있습니다. 다음 예제에서는 mongo 쉘을 사용하여 (IAM 사용자의 것) 액세스 키와 비밀 키를 수동으로 전달하여 MONGODB-AWS를 사용하여 인증하는 예제로 Amazon DocumentDB에 대한 인증을 보여줍니다.

다음 예제에서는 Python 코드를 사용하여 자격 증명을 명시적으로 전달하지 않고(환경에 연결된 IAM 역할 사용) MONGODB-AWS를 사용하여 인증하여 Amazon DocumentDB 에 대한 인증을 보여줍니다.

##Create a MongoDB client, open a connection to Amazon DocumentDB using an IAM role client = pymongo.MongoClient(‘mongodb://<DocDBEndpoint>:27017/?tls=true&tlsCAFile=global-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred&retryWrites=false&authSource=%24external&authMechanism=MONGODB-AWS')

다음 예제에서는 mongo 쉘을 사용하여 액세스 키 및 보안 키(IAM 사용자의 것)를 수동으로 전달하여 MONGODB-AWS 메커니즘을 사용하여 인증하는 것으로 Amazon DocumentDB에 대한 인증을 보여줍니다.

$ mongo 'mongodb://<access_key>:<secret_key>@<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'

다음 예제에서는 mongo 쉘을 사용하여 자격 증명을 명시적으로 전달하지 않고(환경에 연결된 IAM 역할 사용) MONGODB-AWS를 사용하여 인증하여 Amazon DocumentDB 에 대한 인증을 보여줍니다.

$ mongo 'mongodb://<cluster_endpoint>:<db_port>/test?authSource=%24external&authMechanism=MONGODB-AWS'

AWS IAM을 사용하여 Amazon DocumentDB에 인증하도록 AWS 컴퓨팅 유형 구성

Amazon EC2/AWS Lambda/AWS Fargate사용

Amazon EC2는 다음 환경 변수를 사용합니다. EC2 인스턴스에 연결된 IAM 역할 또는 Lambda 함수 또는 Amazon ECS 태스크와 연결된 실행 IAM 역할이 있는 경우 이러한 변수가 자동으로 채워지고 드라이버는 환경에서 이러한 값을 가져올 수 있습니다.

AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN

환경 변수에 대한 자세한 내용은 AWS Lambda 개발자 안내서Lambda 환경 변수 사용을 참조하세요.

Amazon EKS 사용

Amazon Elastic Kubernetes Service(Amazon EKS) 포드에 역할을 할당하면 다음 두 가지 환경 변수가 자동으로 설정됩니다.

AWS_WEB_IDENTITY_TOKEN_FILE - path of web identity token file AWS_ROLE_ARN - Name of IAM role to connect with

이러한 변수의 도움을 받아에 대한 AWS SDK 호출을 사용하여 코드에서 역할을 수동으로 수임합니다AssumeRoleWithWebIdentity.

  • ProviderID 파라미터를 생략합니다.

  • AWS_WEB_IDENTITY_TOKEN_FILE 환경 변수에 설명된 파일에서 WebIdentityToken 파라미터 값을 찾습니다.

Amazon EKS에 관한 자세한 내용은 Amazon EKS 사용 설명서Amazon EKS란을 참조하세요.

IAM 인증 요청 모니터링

Amazon DocumentDB 감사 사용

Amazon CloudWatch 의 감사 로그 폴더로 이동하여 다른 검색 패턴을 사용하여 IAM 인증에 대한 로그를 가져옵니다. 예를 들어 { $.param.mechanism = "MONGODB-AWS" }를 ‘모든 로그 스트림 검색’의 검색 패턴으로 사용합니다.

감사에서 지원되는 이벤트에 대한 자세한 내용은 Amazon DocumentDB 이벤트 감사 섹션을 참조하세요.

Amazon CloudWatch 지표 사용

StsGetCallerIdentityCalls:이 지표는 리전화된 AWS Security Token Service (AWS STS) 엔드포인트에 대해 Amazon DocumentDB 인스턴스가 수행하는 GetCallerIdentity 호출 수를 보여줍니다. 데이터베이스 인스턴스가 STS GetCallerIdentity를 호출해야 하는 이유에 대한 MONGODB-AWS 인증 사양을 참조하세요.

IAM 인증 사용

자체 데이터베이스에서 사용자 이름과 암호를 관리하지 않으려면 IAM 인증을 사용할 수 있습니다. IAM 인증은 Amazon DocumentDB 인스턴스 기반 클러스터 버전 5.0에서만 사용할 수 있습니다.

IAM 인증은 STS 서비스에 의존합니다. 연결에 IAM 인증을 사용하고 STS 스로틀링 예외를 가져올 때 연결 속도를 낮출 수 있는지를 평가하는 것이 좋습니다.

IAM 할당량은 IAM 사용 설명서의 IAM 및 AWS STS 할당량을 참조하세요.

IAM을 지원하는 드라이버

Amazon DocumentDB 5.0 및 MONGODB-AWS 인증 메커니즘을 지원하는 드라이버는 Amazon DocumentDB 에서 IAM 인증 구현을 사용해야 합니다.

중요

현재 Amazon DocumentDB에 대한 IAM 자격 증명 인증에서 지원되지 않는 Node.js 드라이버에는 알려진 제한 사항이 있습니다. 제한 사항에는 최신 MongoDB 쉘인 mongosh가 포함됩니다. Amazon DocumentDB를 사용한 IAM 자격 증명 인증을 지원하려면 MongoDB 5.0 셸을 사용하는 것이 좋습니다. 제한이 해결되면 Node.js 드라이버 지원이 업데이트됩니다.

IAM 자격 증명 인증 FAQ

참조할 수 있는 샘플이 있나요?

샘플 사용 사례 및 구성은 다음 페이지를 참조하세요.

Python 드라이버 “pymongo.errors.ConfigurationError: MONGODB-AWS authentication requires pymongo-auth-aws”를 사용하는 동안 오류가 발생합니다. 이 문제를 해결하려면 어떻게 해야 하나요?

IAM 인증과 함께 Python 드라이버를 설치하는 동안 다음 문을 사용해야 합니다.

pip install 'pymongo[aws]'

그러면 IAM 인증이 작동하는 데 필요한 추가 AWS 종속성이 설치됩니다.

IAM 역할 임시 자격 증명이 만료되면 연결이 끊어집니까?

아니요. 임시 IAM 자격 증명은 연결 및 인증을 설정하는 데만 사용됩니다. 그런 다음 Amazon DocumentDB 클러스터에서 모든 추가 권한이 발생합니다. IAM 자격 증명이 교체/만료되더라도 연결이 끊기거나 경과되지 않습니다.