Amazon RDS DB インスタンスの作成、削除、変更、バックアップ、および回復を実行するために、ユーザーにはどのような最小特権が付与されている必要がありますか?
最終更新日: 2022 年 9 月 21 日
AWS Identity and Access Management (IAM) ユーザーに付与する、Amazon Relational Database Service (Amazon RDS) DB インスタンスへのアクセス権を制限したいと考えています。Amazon RDS DB インスタンスに対して特定のアクションを実行するために必要な最小限の権限を IAM ユーザーに付与するにはどうすればよいですか?
解決方法
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、最新の AWS CLI バージョンを使用していることを確認してください。
1. IAM コンソールを開き、ナビゲーションペインから [Users] (ユーザー) を選択します。
2. [Add user] (ユーザーを追加) を選択し、[User name] (ユーザー名) を入力します。
3. [Access type] (アクセスタイプ) で、AWS マネジメントコンソールのアクセス権を選択し、Amazon RDS コンソールを使用するためのパスワードを作成します。AWS コマンドラインインターフェイス (AWS CLI) へのアクセス権を提供するには、[Programmatic access] (プログラムによるアクセス) を選択します。
重要: [Programmatic access] (プログラムによるアクセス) では、Download.csv を選択してアクセスキー ID とシークレットアクセスキーをダウンロードしてください。後でセキュリティトークンを作成するには、キーが必要です。
4. 許可とタグを確認し、[Create user] (ユーザーを作成) を選択します。これにより、IAMUserChangePassword ポリシーを使用する IAM ユーザーが作成されます。
5. Amazon RDS で実行するアクションの IAM ポリシーを作成します。
6. IAM コンソールに戻り、ナビゲーションペインから [Users] (ユーザー) を選択します。
7. 作成した IAM ユーザーを選択します。
8. [Permissions] (アクセス許可) タブから、[Add inline policy] (インラインポリシーを追加) を選択します。
9. [JSON] タブを選択し、ユースケースに基づいて次のポリシーを 1 つ以上入力します。
注: 次のポリシーは、指定されたアクションを実行するために必要な最小特権を提供します。この権限がポリシーに存在しないため、Amazon RDS コンソールでエラー (「IAMUser is not authorized to perform: rds:Action」(IAMUser には実行する権限がありません: rds:Action) など) が表示されることがあります。ほとんどの場合、このエラーは説明アクションで発生します。エラーは想定されています。これらのアクションを実行できるかどうかには影響しません。このエラーを回避するには、次の 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": "*"
}
]
}
拡張モニタリングと Performance Insights のアクティブ化
次のポリシーは、ユーザーが拡張モニタリングをアクティブ化することを許可します。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) を指定するのがベストプラクティスです。
次のポリシーは、ユーザーが Performance Insights をアクティブ化することを許可します。
{
"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. ポリシーを確認を選択します。
11. ポリシーの [Name] (名前) を入力し、[Create policy] (ポリシーを作成) を選択します。