Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용

IAM 사용자 또는 역할이 DB 인스턴스에 연결할 수 있도록 허용하려면 IAM 정책을 생성해야 합니다. 그런 다음 정책을 IAM 사용자 또는 역할에 연결해야 합니다.

참고

IAM 정책에 대한 자세한 정보는 인증 및 액세스 제어 단원을 참조하십시오.

다음은 IAM 사용자가 IAM 데이터베이스 인증 방식을 사용해 DB 인스턴스에 연결할 수 있도록 허용하는 정책 예제입니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:db-ABCDEFGHIJKL01234/db_user" ] } ] }

참고

rds-db: 접두사를 rds:로 시작하는 다른 Amazon RDS 작업 접두사와 혼동하지 마십시오. rds-db: 접두사와 rds-db:connect 작업은 IAM 데이터베이스 인증 전용입니다. 다른 컨텍스트에서는 유효하지 않습니다.

현재 IAM 콘솔에는 rds-db:connect 작업이 포함된 정책에 대한 오류가 표시됩니다. 이 오류는 무시할 수 있습니다.

위의 예제 정책에는 다음 요소와 함께 단일 문이 포함되어 있습니다.

  • Effect - Allow를 지정하여 DB 인스턴스에 대한 액세스를 부여합니다. 액세스를 명시적으로 허용하지 않으면 액세스가 기본적으로 거부됩니다.

  • Actionrds-db:connect를 지정하여 DB 인스턴스에 대한 연결을 허용합니다.

  • Resource - 하나의 DB 인스턴스의 한 데이터베이스 계정을 기술하는 Amazon 리소스 이름(ARN)을 지정합니다. ARN 형식은 다음과 같습니다.

    arn:aws:rds-db:region:account-id:dbuser:DbiResourceId/db-user-name

    이 형식에서 다음 항목을 교체합니다.

    • region은 DB 인스턴스 AWS 리전입니다. 정책 예제에서 사용되는 AWS 리전은 us-east-2입니다.

    • account-id은 DB 인스턴스의 AWS 계정 번호입니다. 정책 예제에서 사용되는 계정 번호는 1234567890입니다.

    • DbiResourceId는 DB 인스턴스의 식별자입니다. 이 식별자는 AWS 리전에 고유하며, 절대로 바뀌지 않습니다. 정책 예제에서 사용되는 식별자는 db-ABCDEFGHIJKL01234입니다.

      Amazon RDS용 AWS Management 콘솔에서 DB 인스턴스 리소스 ID를 찾으려면 DB 인스턴스를 선택하여 세부 정보를 확인하십시오. 그런 다음 구성 탭을 선택합니다. 그러면 리소스 ID구성 섹션에 표시됩니다.

      그 밖에 다음과 같이 AWS CLI 명령을 사용하여 현재 AWS 리전에 속한 모든 DB 인스턴스의 식별자와 리소스 ID 목록을 조회하는 방법도 있습니다.

      aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier,DbiResourceId]"
    • db-user-name은 IAM 인증과 연결할 데이터베이스 계정 이름입니다. 정책 예제에서 사용되는 데이터베이스 계정은 db_user입니다.

다른 ARN을 구성하여 다양한 액세스 패턴을 지원할 수 있습니다. 다음 정책에서는 DB 인스턴스에서 서로 다른 데이터베이스 계정 2개에 대한 액세스를 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/jane_doe", "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/mary_roe" ] } ] }

다음 정책에서는 "*" 문자를 사용하여 특정 AWS 계정과 AWS 리전의 모든 DB 인스턴스 및 데이터베이스 계정을 일치시킵니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:*/*" ] } ] }

다음 정책은 특정 AWS 계정과 AWS 리전의 모든 DB 인스턴스를 일치시킵니다. 하지만 정책에 따라 jane_doe 데이터베이스 계정을 가지고 있는 DB 인스턴스에게만 액세스 권한이 부여됩니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe" ] } ] }

IAM 사용자 또는 역할은 데이터베이스 사용자가 액세스할 수 있는 데이터베이스에만 액세스할 수 있습니다. 예를 들어 DB 인스턴스에 이름이 dev인 데이터베이스와 test인 데이터베이스가 있다고 가정하겠습니다. 이때 데이터베이스 사용자인jane_doedev에 대한 액세스 권한만 가지고 있다면 사용자 jane_doe와 함께 해당 DB 인스턴스에 액세스하는 IAM 사용자 또는 역할도 dev 액세스 권한만 갖게 됩니다. 이러한 액세스 제한은 테이블, 뷰 등 다른 데이터베이스 객체에 대해서도 똑같이 적용됩니다.

IAM 정책과 IAM 사용자 또는 역할의 연결

데이터베이스 인증을 위한 IAM 정책을 생성하였으면 이제 정책을 IAM 사용자 또는 역할에 연결해야 합니다. 이번 주제에 대한 자습서는 IAM 사용자 안내서에서 첫 번째 고객 관리형 정책 만들기 및 연결 단원을 참조하십시오.

자습서를 읽어보면 이번 단원에서 소개하는 정책 예제 중 한 가지를 출발점으로 자신만의 요건에 따라 지정하여 사용할 수 있습니다. 자습서를 끝까지 따르다 보면 연결된 정책을 통해 rds-db:connect 작업이 가능한 IAM 사용자를 얻게 될 것입니다.

참고

여러 IAM 사용자 또는 역할을 동일한 데이터베이스 사용자 계정에 매핑할 수 있습니다. 예를 들어 IAM 정책이 다음과 같은 리소스 ARN을 지정하였다고 가정하겠습니다.

arn:aws:rds-db:us-east-2:123456789012:dbuser:db-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe

IAM 사용자 Jane, BobDiego에게 정책을 연결하면 각 사용자는 jane_doe 데이터베이스 계정을 사용하여 지정된 DB 인스턴스 에 연결할 수 있습니다.