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 サービス を参照の上、 サービスにリンクされたロールの欄がはい になっているサービスを検索してください。リンクで [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 にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. IAM コンソールのナビゲーションペインで [ロール] を選択します。次に、AWSServiceRoleForRDS ロールの名前 (チェックボックスではありません) を選択します。

  3. 選択したロールの [概要] ページで、[アクセスアドバイザー] タブを選択します。

  4. [Access Advisor] タブで、サービスにリンクされたロールの最新のアクティビティを確認します。

    注記

    Amazon RDS が AWSServiceRoleForRDS ロールを使用しているかどうか不明な場合は、ロールを削除してみてください。サービスでロールが使用されている場合、削除は失敗し、ロールが使用されている AWS リージョンが表示されます。ロールが使用されている場合は、ロールを削除する前にセッションが終了するのを待つ必要があります。サービスにリンクされたロールのセッションを取り消すことはできません。

AWSServiceRoleForRDS ロールを削除する場合、初期にすべての DB インスタンスを削除する必要があります。

すべてのインスタンスの削除

以下のいずれかの手順を使用して、インスタンスをそれぞれ削除します。

インスタンスを削除するには (コンソール)

  1. Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. ナビゲーションペインで、[データベース] を選択します。

  3. 削除するインスタンスを選択します。

  4. [Actions] (アクション) について [Delete] (削除) を選択します。

  5. [最終スナップショットを作成しますか?] で、[はい] または [いいえ] を選択します。

  6. 前のステップで [はい] を選択した場合は、[最終スナップショット名] に最終スナップショットの名前を入力します。

  7. [削除] を選択します。

インスタンスを削除するには (CLI)

AWS CLI コマンドリファレンス の「delete-db-instance」を参照してください。

インスタンスを削除するには (API)

Amazon RDS API Reference の「DeleteDBInstance」を参照してください。

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 ユーザーガイド の「サービスにリンクされたロールのアクセス許可」を参照してください。