사용자가 Amazon RDS DB 인스턴스의 생성, 삭제, 수정, 백업 및 복구를 수행하는 데 필요한 최소 권한은 무엇입니까?

최종 업데이트 날짜: 2022년 9월 21일

AWS Identity and Access Management(IAM) 사용자에게 Amazon Relational Database Service(RDS) DB 인스턴스에 부여하는 액세스 권한을 제한하려고 합니다. IAM 사용자에게 Amazon RDS DB 인스턴스에 대한 특정 작업을 수행하는 데 필요한 최소 권한을 부여하려면 어떻게 해야 합니까?

해결 방법

참고: AWS 명령줄 인터페이스(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

1.    IAM 콘솔을 열고 탐색 창에서 사용자를 선택합니다.

2.    사용자 추가를 선택하고 사용자 이름을 입력합니다.

3.    액세스 유형에서 AWS Management Console 액세스를 선택하고 Amazon RDS 콘솔을 사용하기 위한 암호를 생성합니다. AWS Command Line Interface(AWS CLI)에 대한 액세스를 제공하려면 프로그래밍 방식 액세스를 선택합니다.

중요: 프로그래밍 방식 액세스(Programmatic access)에서 Download.csv를 선택하여 액세스 키 ID와 비밀 액세스 키를 다운로드해야 합니다. 나중에 보안 토큰을 생성하려면 키가 필요합니다.

4.    권한 및 태그를 검토한 다음 사용자 생성을 선택합니다. 이렇게 하면 IAMUserChangePassword 정책이 있는 IAM 사용자가 생성됩니다.

5.    Amazon RDS에서 수행할 작업에 대한IAM 정책을 생성합니다.

6.    IAM 콘솔로 돌아가, 탐색 창에서 사용자를 선택합니다.

7.    생성한 IAM 사용자를 선택합니다.

8.    권한(Permissions) 탭에서 인라인 정책 추가(Add inline policy)를 선택합니다.

9.    JSON 탭을 선택하고 사용 사례에 따라 다음 정책 중 하나 이상을 입력합니다.

참고: 다음 정책은 지정된 작업을 수행하는 데 필요한 최소 권한을 제공합니다. 정책에 권한이 없기 때문에 Amazon RDS 콘솔에 오류(예: IAMUser is not authorized to perform: rds:Action)가 표시될 수 있습니다. 대부분의 경우 Describe 작업에 대해 이 오류가 발생합니다. 이 오류는 예상된 것이며 이러한 작업을 수행할 수 있는 능력에 영향을 미치지 않습니다. 이 오류를 방지하려면 다음 예제 IAM 정책을 수정하거나 AWS CLI를 사용하여 작업을 수행할 수 있습니다.

RDS DB 인스턴스 생성 및 삭제

다음 정책은 사용자가 암호화가 활성화되지 않은 RDS DB 인스턴스를 생성할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup"
      ],
      "Resource": "*"
    }
  ]
}

다음 정책은 사용자가 암호화가 활성화된 RDS DB 인스턴스를 생성할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup",
        "kms:ListAliases"
      ],
      "Resource": "*"
    }
  ]
}

참고: 기본 AWS 관리형 키 대신 암호화에 고객 관리형 키를 사용하려면 고객 관리형 키 사용을 승인해야 합니다.

다음 정책은 사용자가 RDS DB 인스턴스를 삭제하도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:DeleteDBInstance",
        "rds:DescribeDBInstances"
      ],
      "Resource": "*"
    }
  ]
}

다음 정책은 사용자가 RDS DB 인스턴스를 생성하고 삭제할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:DescribeVpcAttribute",
        "ec2:DescribeSecurityGroups",
        "ec2:DescribeInternetGateways",
        "ec2:DescribeAvailabilityZones",
        "ec2:DescribeVpcs",
        "ec2:DescribeAccountAttributes",
        "ec2:DescribeSubnets",
        "rds:Describe*",
        "rds:ListTagsForResource",
        "rds:CreateDBInstance",
        "rds:CreateDBSubnetGroup",
        "rds:DeleteDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

RDS DB 인스턴스 중지 및 시작

다음 정책은 사용자가 RDS DB 인스턴스를 중지하고 시작할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:StopDBInstance",
        "rds:StartDBInstance",
        "rds:Describe*"
      ],
      "Resource": "*"
    }
  ]
}

백업 및 복구 수행(DB 스냅샷 생성, DB 스냅샷에서 DB 인스턴스 복원, 특정 시점으로 복원)

다음 정책은 사용자가 DB 스냅샷을 생성할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:Describe*",
        "rds:CreateDBSnapshot"
      ],
      "Resource": "*"
    }
  ]
}

다음 정책은 사용자가 DB 스냅샷을 사용하여 RDS DB 인스턴스를 복원할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:RestoreDBInstanceFromDBSnapshot"
      ],
      "Resource": "*"
    }
  ]
}

다음 정책은 사용자가 특정 시점으로 복구를 수행할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:RestoreDBInstanceToPointInTime"
      ],
      "Resource": "*"
    }
  ]
}

RDS DB 인스턴스 수정

다음 정책은 사용자가 DB 인스턴스 클래스 유형, 할당된 스토리지, 스토리지 유형 및 인스턴스 버전을 변경할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:ModifyDBInstance"
      ],
      "Resource": "*"
    }
  ]
}

Enhanced Monitoring 및 성능 개선 도우미 활성화

다음 정책은 사용자가 Enhanced Monitoring을 활성화하도록 허용합니다. AccountID를 향상된 모니터링 역할을 받는 각 계정으로 변경해야 합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "iam:GetRole",
        "iam:ListRoles",
        "rds:ModifyDBInstance",
        "rds:Describe*",
        "ec2:Describe*"
      ],
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "iam:PassRole"
      ],
      "Resource": "arn:aws:iam::AccountID:role/rds-monitoring-role"
    }
  ]
}

참고: 와일드카드(*) 를 iam:PassRole과 함께 사용하면 모든 리소스에서 iam:PassRole 권한이 허용되므로 지나치게 허용적입니다. 따라서 이전 예제처럼 Amazon 리소스 이름(ARN)을 지정하는 것이 가장 좋습니다.

다음 정책은 사용자가 성능 개선 도우미를 활성화하도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:ModifyDBInstance",
        "ec2:Describe*",
        "rds:Describe*",
        "pi:*"
      ],
      "Resource": "*"
    }
  ]
}

DB 파라미터 그룹 및 DB 옵션 그룹 생성, 수정 및 삭제

다음 정책은 사용자가 DB 파라미터 그룹 및 옵션 그룹을 생성, 수정 또는 삭제할 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Describe*",
        "rds:Describe*",
        "rds:CreateDBParameterGroup",
        "rds:ModifyDBParameterGroup",
        "rds:DeleteDBParameterGroup",
        "rds:CreateOptionGroup",
        "rds:ModifyOptionGroup",
        "rds:DeleteOptionGroup"
      ],
      "Resource": "*"
    }
  ]
}

Amazon RDS 콘솔에서 Amazon CloudWatch 지표 보기

다음 정책은 사용자가 Amazon RDS 콘솔에서 CloudWatch 지표를 볼 수 있도록 허용합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "rds:Describe*",
        "cloudwatch:GetMetricData",
        "cloudwatch:GetMetricStatistics"
      ],
      "Resource": "*"
    }
  ]
}

10.    [Review policy]를 선택합니다.

11.    정책에 대한 이름을 입력하고 정책 생성을 선택합니다.