Amazon RDS에 서비스 연결 역할 사용 - Amazon Relational Database Service

Amazon RDS에 서비스 연결 역할 사용

Amazon RDS는 AWS Identity and Access Management(IAM) 서비스 연결 역할 사용 서비스 연결 역할은 Amazon RDS에 직접 연결된 고유한 유형의 IAM 역할입니다. 서비스 연결 역할은 Amazon RDS에서 사전 정의하며 서비스에서 다른 AWS 서비스를 자동으로 호출하기 위해 필요한 모든 권한을 포함합니다.

필요한 권한을 수동으로 추가할 필요가 없으므로 서비스 연결 역할은 Amazon RDS를 더 쉽게 설정할 수 있습니다. Amazon RDS에서 서비스 연결 역할의 권한을 정의하므로 다르게 정의되지 않으면, Amazon RDS만 해당 역할을 수임할 수 있습니다. 정의된 권한에는 신뢰 정책과 권한 정책이 포함되며, 이 권한 정책은 다른 IAM 엔터티에 연결할 수 없습니다.

먼저 역할의 관련 리소스를 삭제해야만 역할을 삭제할 수 있습니다. 이렇게 하면 리소스에 대한 액세스 권한을 부주의로 삭제할 수 없기 때문에 Amazon RDS 리소스가 보호됩니다.

서비스 연결 역할을 지원하는 기타 서비스에 대한 자세한 내용은 IAM으로 작업하는 AWS 서비스를 참조하고 서비스 연결 역할(Service-Linked Role) 열에 예(Yes)가 표시된 서비스를 찾으세요. 해당 서비스에 대한 서비스 연결 역할 설명서를 보려면 예(Yes) 링크를 선택합니다.

Amazon RDS에 대한 서비스 연결 역할 권한

Amazon RDS에서는 AWSServiceRoleForRDS라는 서비스 연결 역할을 사용하여 Amazon RDS가 DB 인스턴스를 대신하여 AWS 서비스를 호출하도록 허용합니다.

AWSServiceRoleForRDS 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.

  • rds.amazonaws.com

이 서비스 연결 역할에는 계정에서 운영할 수 있는 권한을 부여하는 AmazonRDSServiceRolePolicy라는 권한 정책이 연결되어 있습니다. 역할 권한 정책은 Amazon RDS가 지정된 리소스에서 다음 작업을 완료하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds:CrossRegionCommunication" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:AllocateAddress", "ec2:AssociateAddress", "ec2:AuthorizeSecurityGroupIngress", "ec2:CreateCoipPoolPermission", "ec2:CreateLocalGatewayRouteTablePermission", "ec2:CreateNetworkInterface", "ec2:CreateSecurityGroup", "ec2:DeleteCoipPoolPermission", "ec2:DeleteLocalGatewayRouteTablePermission", "ec2:DeleteNetworkInterface", "ec2:DeleteSecurityGroup", "ec2:DescribeAddresses", "ec2:DescribeAvailabilityZones", "ec2:DescribeCoipPools", "ec2:DescribeInternetGateways", "ec2:DescribeLocalGatewayRouteTablePermissions", "ec2:DescribeLocalGatewayRouteTables", "ec2:DescribeLocalGatewayRouteTableVpcAssociations", "ec2:DescribeLocalGateways", "ec2:DescribeSecurityGroups", "ec2:DescribeSubnets", "ec2:DescribeVpcAttribute", "ec2:DescribeVpcs", "ec2:DisassociateAddress", "ec2:ModifyNetworkInterfaceAttribute", "ec2:ModifyVpcEndpoint", "ec2:ReleaseAddress", "ec2:RevokeSecurityGroupIngress", "ec2:CreateVpcEndpoint", "ec2:DescribeVpcEndpoints", "ec2:DeleteVpcEndpoints", "ec2:AssignPrivateIpAddresses", "ec2:UnassignPrivateIpAddresses" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "sns:Publish" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "logs:CreateLogGroup" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/rds/*", "arn:aws:logs:*:*:log-group:/aws/docdb/*", "arn:aws:logs:*:*:log-group:/aws/neptune/*" ] }, { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": [ "arn:aws:logs:*:*:log-group:/aws/rds/*:log-stream:*", "arn:aws:logs:*:*:log-group:/aws/docdb/*:log-stream:*", "arn:aws:logs:*:*:log-group:/aws/neptune/*:log-stream:*" ] }, { "Effect": "Allow", "Action": [ "kinesis:CreateStream", "kinesis:PutRecord", "kinesis:PutRecords", "kinesis:DescribeStream", "kinesis:SplitShard", "kinesis:MergeShards", "kinesis:DeleteStream", "kinesis:UpdateShardCount" ], "Resource": [ "arn:aws:kinesis:*:*:stream/aws-rds-das-*" ] }, { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData" ], "Resource": "*", "Condition": { "StringEquals": { "cloudwatch:namespace": [ "AWS/DocDB", "AWS/Neptune", "AWS/RDS", "AWS/Usage" ] } } } ] }
참고

IAM 개체(사용자, 그룹, 역할 등)가 서비스 연결 역할을 작성하고 편집하거나 삭제할 수 있도록 권한을 구성할 수 있습니다. 다음 오류 메시지가 표시되는 경우:

리소스를 만들 수 없습니다. 서비스 연결 역할을 생성할 권한이 있는지 확인하십시오. 그렇지 않은 경우 기다렸다가 나중에 다시 시도하십시오.

다음 권한이 활성화되어 있는지 확인하십시오.

{ "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS", "Condition": { "StringLike": { "iam:AWSServiceName":"rds.amazonaws.com" } } }

자세한 내용은 IAM 사용 설명서서비스 연결 역할 권한을 참조하세요.

Amazon RDS에 대한 서비스 연결 역할 생성

서비스 연결 역할은 수동으로 생성할 필요가 없습니다. DB 인스턴스를 생성하면 Amazon RDS에서 서비스 연결 역할을 생성합니다.

중요

서비스 연결 역할을 지원하기 시작한 2017년 12월 1일 이전에 Amazon RDS 서비스를 사용하고 있었다면, Amazon RDS가 계정에 AWSServiceRoleForRDS 역할을 생성했습니다. 자세한 내용은 내 AWS 계정에 표시되는 새 역할을 참조하세요.

이 서비스 연결 역할을 삭제한 다음 다시 생성해야 하는 경우 동일한 프로세스를 사용하여 계정에서 역할을 다시 생성할 수 있습니다. DB 인스턴스를 생성하면 Amazon RDS에서 서비스 연결 역할을 다시 생성합니다.

Amazon RDS에 대한 서비스 연결 역할 편집

Amazon RDS는 AWSServiceRoleForRDS 서비스 연결 역할을 편집하도록 허용하지 않습니다. 서비스 연결 역할을 생성한 후에는 다양한 개체가 역할을 참조할 수 있기 때문에 역할 이름을 변경할 수 없습니다. 하지만 IAM을 사용하여 역할의 설명을 편집할 수 있습니다. 자세한 내용은 IAM 사용 설명서서비스 연결 역할 편집을 참조하세요.

Amazon RDS에 대한 서비스 연결 역할 삭제

서비스 연결 역할이 필요한 기능 또는 서비스가 더 이상 필요 없는 경우에는 해당 역할을 삭제할 것을 권합니다. 이렇게 하면 적극적으로 모니터링하거나 유지 관리하지 않은 미사용 엔터티가 없습니다. 그러나 서비스 연결 역할을 삭제하려면 먼저 모든 DB 인스턴스 를 삭제해야 합니다.

서비스 연결 역할 정리

IAM을 사용하여 서비스 연결 역할을 삭제하기 전에 먼저 역할에 활성 세션이 없는지 확인하고 역할에서 사용되는 리소스를 모두 제거해야 합니다.

IAM 콘솔에서 서비스 연결 역할에 활성 세션이 있는지 확인하려면

  1. AWS Management Console에 로그인하여 https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. IAM 콘솔의 탐색 창에서 역할(Roles)을 선택합니다. 그런 다음 AWSServiceRoleForRDS 역할의 이름(확인란 아님)을 선택합니다.

  3. 선택한 역할의 요약 페이지에서 Access Advisor(액세스 관리자) 탭을 선택합니다.

  4. [Access Advisor] 탭에서 서비스 연결 역할의 최근 활동을 검토합니다.

    참고

    Amazon RDS에서 AWSServiceRoleForRDS 역할을 사용하는지 잘 모를 경우에는 역할을 삭제할 수 있습니다. 서비스에서 역할을 사용하는 경우에는 삭제가 안 되어 역할이 사용 중인 AWS 리전을 볼 수 있습니다. 역할이 사용 중인 경우에는 세션이 종료될 때까지 기다렸다가 역할을 삭제해야 합니다. 서비스 연결 역할에 대한 세션은 취소할 수 없습니다.

AWSServiceRoleForRDS 역할을 제거하려면 먼저 모든 DB 인스턴스 를 삭제해야 합니다.

모든 인스턴스 삭제

이러한 절차 중 하나에 따라 각 인스턴스를 삭제합니다.

인스턴스를 삭제하려면(콘솔)

  1. https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. 탐색 창에서 데이터베이스를 선택합니다.

  3. 삭제하려는 인스턴스를 선택합니다.

  4. [ Actions]에 대해 [Delete]를 선택합니다.

  5. 최종 스냅샷 생성? 메시지가 표시되는 경우 또는 아니요를 선택합니다.

  6. 이전 단계에서 를 선택한 경우 최종 스냅샷 이름에 최종 스냅샷 이름을 입력합니다.

  7. 삭제를 선택합니다.

인스턴스를 삭제하려면(CLI)

AWS CLI 명령 참조에서 delete-db-instance 섹션을 참조하세요.

인스턴스를 삭제하려면(API)

Amazon RDS API ReferenceDeleteDBInstance 참조.

IAM 콘솔, IAM CLI 또는 IAM API를 사용하여 AWSServiceRoleForRDS 서비스 연결 역할을 삭제할 수 있습니다. 자세한 내용은 IAM 사용 설명서서비스 연결 역할 삭제를 참조하세요.

Amazon RDS Custom에 대한 서비스 연결 역할 권한

Amazon RDS Custom에서는 AWSServiceRoleForRDSCustom이라는 서비스 연결 역할을 사용하여 RDS Custom이 DB 인스턴스를 대신하여 AWS 서비스를 호출하도록 허용합니다.

AWSServiceRoleForRDSCustom 서비스 연결 역할은 역할을 수임하기 위해 다음 서비스를 신뢰합니다.

  • custom.rds.amazonaws.com

이 서비스 연결 역할에는 계정에서 운영할 수 있는 권한을 부여하는 AmazonRDSCustomServiceRolePolicy라는 권한 정책이 연결되어 있습니다. 역할 권한 정책은 RDS Custom이 지정된 리소스에서 다음 작업을 완료하도록 허용합니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "ecc1", "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeInstanceAttribute", "ec2:DescribeRegions", "ec2:DescribeSnapshots", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVolumes", "ec2:DescribeInstanceStatus", "ec2:DescribeIamInstanceProfileAssociations", "ec2:DescribeImages", "ec2:DescribeVpcs", "ec2:RegisterImage", "ec2:DeregisterImage", "ec2:DescribeTags", "ec2:DescribeSecurityGroups", "ec2:DescribeVolumesModifications", "ec2:DescribeSubnets", "ec2:DescribeVpcAttribute" ], "Resource": [ "*" ] }, { "Sid": "ecc2", "Effect": "Allow", "Action": [ "ec2:DisassociateIamInstanceProfile", "ec2:AssociateIamInstanceProfile", "ec2:ReplaceIamInstanceProfileAssociation", "ec2:TerminateInstances", "ec2:StartInstances", "ec2:StopInstances", "ec2:RebootInstances" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "ecc1scoping", "Effect": "Allow", "Action": [ "ec2:AllocateAddress" ], "Resource": [ "*" ], "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "ecc1scoping2", "Effect": "Allow", "Action": [ "ec2:AssociateAddress", "ec2:DisassociateAddress", "ec2:ReleaseAddress" ], "Resource": [ "*" ], "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccRunInstances1", "Effect": "Allow", "Action": "ec2:RunInstances", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*", "arn:aws:ec2:*:*:network-interface/*" ], "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccRunInstances2", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:*:*:subnet/*", "arn:aws:ec2:*:*:security-group/*", "arn:aws:ec2:*::image/*", "arn:aws:ec2:*:*:key-pair/do-not-delete-rds-custom-*", "arn:aws:ec2:*:*:placement-group/*" ] }, { "Sid": "eccRunInstances3keyPair1", "Effect": "Allow", "Action": [ "ec2:RunInstances", "ec2:DeleteKeyPair" ], "Resource": [ "arn:aws:ec2:*:*:key-pair/do-not-delete-rds-custom-*" ], "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccKeyPair2", "Effect": "Allow", "Action": [ "ec2:CreateKeyPair" ], "Resource": [ "arn:aws:ec2:*:*:key-pair/do-not-delete-rds-custom-*" ], "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccCreateTag1", "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "*" ], "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccCreateTag2", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*", "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ], "ec2:CreateAction": [ "CreateKeyPair", "RunInstances", "CreateVolume", "CreateSnapshots", "CopySnapshot", "AllocateAddress" ] } } }, { "Sid": "eccVolume1", "Effect": "Allow", "Action": [ "ec2:DetachVolume", "ec2:AttachVolume" ], "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccVolume2", "Effect": "Allow", "Action": "ec2:CreateVolume", "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccVolume3", "Effect": "Allow", "Action": [ "ec2:ModifyVolumeAttribute", "ec2:DeleteVolume", "ec2:ModifyVolume" ], "Resource": "arn:aws:ec2:*:*:volume/*", "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccVolume4snapshot1", "Effect": "Allow", "Action": [ "ec2:CreateVolume", "ec2:DeleteSnapshot" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccSnapshot2", "Effect": "Allow", "Action": [ "ec2:CopySnapshot", "ec2:CreateSnapshots" ], "Resource": "arn:aws:ec2:*::snapshot/*", "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eccSnapshot3", "Effect": "Allow", "Action": "ec2:CreateSnapshots", "Resource": [ "arn:aws:ec2:*:*:instance/*", "arn:aws:ec2:*:*:volume/*" ], "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "iam1", "Effect": "Allow", "Action": [ "iam:ListInstanceProfiles", "iam:GetInstanceProfile", "iam:GetRole", "iam:ListRolePolicies", "iam:GetRolePolicy", "iam:ListAttachedRolePolicies", "iam:GetPolicy", "iam:GetPolicyVersion" ], "Resource": "*" }, { "Sid": "iam2", "Effect": "Allow", "Action": "iam:PassRole", "Resource": "arn:aws:iam::*:role/AWSRDSCustom*", "Condition": { "StringLike": { "iam:PassedToService": "ec2.amazonaws.com" } } }, { "Sid": "cloudtrail1", "Effect": "Allow", "Action": [ "cloudtrail:GetTrailStatus" ], "Resource": "arn:aws:cloudtrail:*:*:trail/do-not-delete-rds-custom-*" }, { "Sid": "cw1", "Effect": "Allow", "Action": [ "cloudwatch:EnableAlarmActions", "cloudwatch:DeleteAlarms", "cloudwatch:DescribeAlarms" ], "Resource": "arn:aws:cloudwatch:*:*:alarm:do-not-delete-rds-custom-*", "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "cw2", "Effect": "Allow", "Action": [ "cloudwatch:PutMetricAlarm", "cloudwatch:TagResource" ], "Resource": "arn:aws:cloudwatch:*:*:alarm:do-not-delete-rds-custom-*", "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "ssm1", "Effect": "Allow", "Action": "ssm:SendCommand", "Resource": "arn:aws:ssm:*:*:document/*" }, { "Sid": "ssm2", "Effect": "Allow", "Action": "ssm:SendCommand", "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "ssm3", "Effect": "Allow", "Action": [ "ssm:GetCommandInvocation", "ssm:GetConnectionStatus", "ssm:DescribeInstanceInformation" ], "Resource": "*" }, { "Sid": "eb1", "Effect": "Allow", "Action": [ "events:PutRule", "events:TagResource" ], "Resource": "arn:aws:events:*:*:rule/do-not-delete-rds-custom-*", "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "eb2", "Effect": "Allow", "Action": [ "events:PutTargets", "events:DescribeRule", "events:EnableRule", "events:ListTargetsByRule", "events:DeleteRule", "events:RemoveTargets", "events:DisableRule" ], "Resource": "arn:aws:events:*:*:rule/do-not-delete-rds-custom-*", "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "secretmanager1", "Effect": "Allow", "Action": [ "secretsmanager:TagResource", "secretsmanager:CreateSecret" ], "Resource": "arn:aws:secretsmanager:*:*:secret:do-not-delete-rds-custom-*", "Condition": { "StringLike": { "aws:RequestTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } }, { "Sid": "secretmanager2", "Effect": "Allow", "Action": [ "secretsmanager:TagResource", "secretsmanager:DescribeSecret", "secretsmanager:DeleteSecret", "secretsmanager:PutSecretValue" ], "Resource": "arn:aws:secretsmanager:*:*:secret:do-not-delete-rds-custom-*", "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": [ "custom-oracle", "custom-sqlserver" ] } } } ] }

RDS Custom에 대한 서비스 연결 역할을 생성, 편집 또는 삭제 작업은 Amazon RDS와 동일하게 작동합니다. 자세한 정보는 Amazon RDS에 대한 서비스 연결 역할 권한을 참조하십시오.

참고

IAM 엔터티(사용자, 그룹, 역할 등)가 서비스 연결 역할을 작성하고 편집하거나 삭제할 수 있도록 권한을 구성해야 합니다. 다음 오류 메시지가 표시되는 경우:

리소스를 만들 수 없습니다. 서비스 연결 역할을 생성할 권한이 있는지 확인하십시오. 그렇지 않은 경우 기다렸다가 나중에 다시 시도하십시오.

다음 권한이 활성화되어 있는지 확인하십시오.

{ "Action": "iam:CreateServiceLinkedRole", "Effect": "Allow", "Resource": "arn:aws:iam::*:role/aws-service-role/custom.rds.amazonaws.com/AmazonRDSCustomServiceRolePolicy", "Condition": { "StringLike": { "iam:AWSServiceName":"custom.rds.amazonaws.com" } } }

자세한 내용은 IAM 사용 설명서서비스 연결 역할 권한을 참조하세요.