IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용 - Amazon Relational Database Service

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

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

참고

IAM 정책에 대한 자세한 정보는 Amazon RDS의 자격 증명 및 액세스 관리 단원을 참조하십시오.

다음은 사용자가 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" ] } ] }
중요

관리자 권한이 있는 사용자는 IAM 정책에서 명시적 권한 없이도 DB 인스턴스에 액세스할 수 있습니다. DB 인스턴스에 대한 관리자 액세스를 제한하고 싶은 경우에는 더 적은 적정 권한을 가진 IAM 역할을 생성하고 이를 관리자에게 할당할 수 있습니다.

참고

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

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

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

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

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

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

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

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

    • account-id은 DB 인스턴스의 AWS 계정 번호입니다. 정책 예제에서 사용되는 계정 번호는 1234567890입니다. 사용자는 DB 인스턴스의 계정과 동일한 계정에 있어야 합니다.

      크로스 계정 액세스를 수행하려면 DB 인스턴스의 계정에서 위에 있는 정책을 사용하여 IAM 역할을 생성하고 다른 계정이 해당 역할을 맡도록 허용합니다.

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

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

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

      aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier,DbiResourceId]"

      Amazon Aurora를 사용하는 경우 DbiResourceId 대신 DbClusterResourceId를 지정하세요. 자세한 내용은 Amazon Aurora 사용 설명서에서 IAM 데이터베이스 액세스를 위한 IAM 정책 생성 및 사용을 참조하세요.

      참고

      RDS 프록시를 통해 데이터베이스에 연결하는 경우, 프록시 리소스 ID(예: prx-ABCDEFGHIJKL01234)를 지정합니다. RDS 프록시에서 IAM 데이터베이스 인증을 사용하는 방법에 대한 자세한 내용은 IAM 인증을 사용하여 프록시에 연결 단원을 참조하십시오.

    • 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" ] } ] }

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

관리자는 지정된 필요한 리소스에서 특정 API 작업을 수행할 수 있는 권한을 엔티티에 부여하는 IAM 정책을 생성해야 합니다. 그런 다음 관리자는 해당 권한이 필요한 권한 세트 또는 역할에 이러한 정책을 연결해야 합니다. 정책에 대한 예시는 Amazon RDS 자격 증명 기반 정책 예 단원을 참조하십시오.

권한 세트 또는 역할에 IAM 정책 연결

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

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

참고

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

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

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