Amazon RDS에서 리소스를 생성, 수정 및 삭제하기 위한 권한 정책 - Amazon Relational Database Service

Amazon RDS에서 리소스를 생성, 수정 및 삭제하기 위한 권한 정책

다음 섹션에는 리소스에 대한 액세스를 허용하고 제한하는 권한 정책의 예제가 나와 있습니다.

사용자에게 AWS 계정에서 DB 인스턴스를 생성하도록 허용

다음은 ID가 123456789012인 계정에 AWS 계정에 대한 DB 인스턴스를 생성하도록 허용하는 정책 예제입니다. 이 정책에 따라 새 DB 인스턴스의 이름은 test로 시작해야 합니다. 또한 새 DB 인스턴스는 MySQL 데이터베이스 엔진 및 db.t2.micro DB 인스턴스 클래스를 사용해야 합니다. 또한 새로운 DB 인스턴스는 default로 시작하는 옵션 그룹과 DB 파라미터 그룹을, 그리고 default 서브넷 그룹을 사용해야 합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowCreateDBInstanceOnly", "Effect": "Allow", "Action": [ "rds:CreateDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:db:test*", "arn:aws:rds:*:123456789012:og:default*", "arn:aws:rds:*:123456789012:pg:default*", "arn:aws:rds:*:123456789012:subgrp:default" ], "Condition": { "StringEquals": { "rds:DatabaseEngine": "mysql", "rds:DatabaseClass": "db.t2.micro" } } } ] }

다음 사용자 권한을 지정하는 단일 명령문이 정책에 포함됩니다.

  • 정책은 계정이 CreateDBInstance API 작업을 사용하여 DB 인스턴스를 생성할 수 있도록 허용합니다. 이는 create-db-instance AWS CLI 명령과 AWS Management Console에도 적용됩니다.

  • Resource 요소는 사용자가 리소스 위치에서 또는 리소스를 사용하여 작업을 수행할 수 있도록 지정합니다. 리소스는 Amazon 리소스 이름(ARN)을 사용하여 지정합니다. 이 ARN에는 리소스가 속하는 서비스 이름(rds), AWS 리전(*는 위의 예제에서 사용하는 모든 리전을 의미함), AWS 계정 번호(이 예에서는 123456789012가 계정 번호임) 및 리소스 유형이 포함됩니다. ARN 생성에 대한 자세한 내용은 Amazon RDS의 Amazon 리소스 이름(ARN) 단원을 참조하십시오.

    위의 예제에서 Resource 요소는 사용자 리소스에 대해 다음과 같은 정책 제약 조건을 지정합니다.

    • 새 DB 인스턴스에 대한 DB 인스턴스 식별자는 test로 시작해야 합니다(예: testCustomerData1, test-region2-data).

    • 새로운 DB 인스턴스의 옵션 그룹은 default로 시작해야 합니다.

    • 새로운 DB 인스턴스의 DB 파라미터 그룹은 default로 시작해야 합니다.

    • 새로운 DB 인스턴스의 서브넷 그룹은 default 서브넷 그룹이 되어야 합니다.

  • Condition 요소는 DB 엔진은 MySQL이 되고, DB 인스턴스 클래스는 db.t2.micro가 되도록 지정합니다. Condition 요소는 정책 적용 시 조건을 지정합니다. 그 밖에도 Condition 요소를 사용하여 다른 권한이나 제한을 추가할 수 있습니다. 조건 지정에 대한 자세한 내용은 Amazon RDS의 정책 조건 키 단원을 참조하십시오. 이 예제에서는 rds:DatabaseEnginerds:DatabaseClass 조건을 지정합니다. rds:DatabaseEngine의 유효 조건 값에 대한 정보는 CreateDBInstanceEngine 파라미터 아래 목록을 참조하십시오. rds:DatabaseClass의 유효 조건 값에 대한 정보는 DB 인스턴스 클래스에 지원되는 DB 엔진 단원을 참조하십시오.

자격 증명 기반 정책에서는 권한을 가질 보안 주체를 지정하지 않으므로 이 정책은 Principal 요소를 지정하지 않습니다. 정책을 사용자에게 연결할 경우 사용자는 암시적인 보안 주체입니다. IAM 역할에 권한 정책을 연결할 경우 역할의 신뢰 정책에 식별된 보안 주체는 권한을 가집니다.

Amazon RDS 작업 목록을 보려면 서비스 권한 부여 참조에서 Amazon RDS에서 정의한 작업을 참조하세요.

사용자가 모든 RDS 리소스에서 Describe 작업을 수행할 수 있도록 허용

다음 권한 정책은 사용자에게 Describe로 시작하는 모든 작업을 실행할 수 있는 권한을 부여합니다. 이러한 작업은 DB 인스턴스와 같은 RDS 리소스에 대한 정보를 보여 줍니다. Resource 요소에 와일드카드 문자(*)가 있으면 계정이 소유한 모든 Amazon RDS 리소스에 대해 작업이 허용됩니다.

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

사용자가 지정된 DB 파라미터 그룹 및 서브넷 그룹을 사용하는 DB 인스턴스를 생성할 수 있도록 허용

다음 권한 정책은 사용자가 mydbpg DB 파라미터 그룹 및 mydbsubnetgroup DB 서브넷 그룹을 사용해야 하는 DB 인스턴스만 생성할 수 있도록 허용하는 권한을 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "rds:CreateDBInstance", "Resource": [ "arn:aws:rds:*:*:pg:mydbpg", "arn:aws:rds:*:*:subgrp:mydbsubnetgroup" ] } ] }

두 가지 값이 있는 특정 태그를 사용하는 리소스 작업에 대한 권한 부여

자격 증명 기반 정책의 조건을 사용하여 태그를 기반으로 Amazon RDS 리소스에 대한 액세스를 제어할 수 있습니다. 다음 정책은 development 또는 test로 설정된 stage 태그를 사용하여 DB 인스턴스에서 CreateDBSnapshot API 작업을 수행할 수 있는 권한을 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowAnySnapshotName", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:snapshot:*" }, { "Sid":"AllowDevTestToCreateSnapshot", "Effect":"Allow", "Action":[ "rds:CreateDBSnapshot" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }

다음 정책은 development 또는 test로 설정된 stage 태그를 사용하여 DB 인스턴스에서 ModifyDBInstance API 작업을 수행할 수 있는 권한을 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowChangingParameterOptionSecurityGroups", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource": [ "arn:aws:rds:*:123456789012:pg:*", "arn:aws:rds:*:123456789012:secgrp:*", "arn:aws:rds:*:123456789012:og:*" ] }, { "Sid":"AllowDevTestToModifyInstance", "Effect":"Allow", "Action":[ "rds:ModifyDBInstance" ], "Resource":"arn:aws:rds:*:123456789012:db:*", "Condition":{ "StringEquals":{ "rds:db-tag/stage":[ "development", "test" ] } } } ] }

사용자의 DB 인스턴스 삭제 방지

다음 권한 정책은 사용자의 특정 DB 인스턴스 삭제를 방지하는 권한을 부여합니다. 예를 들어, 관리자가 아닌 모든 사용자에 대해 프로덕션 DB 인스턴스를 삭제할 수 있는 권한을 거부해야 할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyDelete1", "Effect": "Deny", "Action": "rds:DeleteDBInstance", "Resource": "arn:aws:rds:us-west-2:123456789012:db:my-mysql-instance" } ] }

리소스에 대한 모든 액세스 거부

리소스에 대한 액세스를 명시적으로 거부할 수 있습니다. 거부 정책은 허용 정책보다 우선합니다. 다음 정책은 사용자가 리소스를 관리할 수 있는 권한을 명시적으로 거부합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Deny", "Action": "rds:*", "Resource": "arn:aws:rds:us-east-1:123456789012:db:mydb" } ] }