メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Amazon RDS でアイデンティティベースのポリシー (IAM ポリシー) を使用する

このトピックでは、アカウント管理者が IAM アイデンティティ (ユーザー、グループ、ロール) へのアクセス権限ポリシーをアタッチする、アイデンティティベースのポリシーの例を示します。

重要

初めに、Amazon RDS リソースへのアクセスを管理するための基本概念と使用可能なオプションについて説明する概要トピックをお読みになることをお勧めします。詳細については、「Amazon RDS リソースへのアクセス権限の管理の概要」を参照してください。

このセクションでは、次のトピックを対象としています。

以下に示しているのは、アクセス権限ポリシーの例です。ポリシーを使用すると、ユーザーは AWS アカウント用 DB インスタンスを作成できます。ポリシーは、test で始める新しい DB インスタンスの名前である必要があります。また、新しい DB インスタンスは、MySQL データベースエンジンと DB インスタンスの db.t2.micro クラスを使用する必要があります。

Copy
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowMySQLTestCreate", "Effect":"Allow", "Action":"rds:CreateDBInstance", "Resource":"arn:aws:rds:us-west-2:123456789012:db:test*", "Condition":{ "StringEquals":{ "rds:DatabaseEngine":"mysql", "rds:DatabaseClass":"db.t2.micro" } } } ] }

ポリシーには、以下のアクセス許可を指定する単一のステートメントが含まれます。

  • ポリシーを使用すると、IAM ユーザーは CreateDBInstance API アクションを使用して DB インスタンスを作成できます (これは create-db-instance AWS CLI コマンドにも適用されます)。

  • 新しい DB インスタンスの DB インスタンス識別子は、test で始まる必要があります (例: testCustomerData1test-region2-data)。

    ユーザーがアクションを実行できるリソースを指定するには、Resource 要素を使用します。リソースの指定には Amazon Resources Name (ARN) を使用します。ARN は、リソースが属するサービスの名前 (rds)、リージョン (この例は us-west-2)、アカウント番号、リソースのタイプ (DB インスタンス) で構成されます。ARN の作成の詳細については、「Amazon RDS の Amazon リソースネーム (ARN) の使用」を参照してください。

  • DB エンジンは MySQL で、DB インスタンスクラスは db.t2.micro でなければならない。

  • Condition 要素を使用して、ポリシーが有効になる必要のある条件を指定することで、アクセス権限や制限を追加できます。条件を指定する方法については、「詳細に設定されたアクセスコントロールのための IAM ポリシー条件の使用」を参照してください。

アイデンティティベースのポリシーでアクセス権限を得るプリンシパルを指定していないため、ポリシーでは Principal 要素を指定していません。ユーザーにポリシーをアタッチすると、そのユーザーが暗黙のプリンシパルになります。IAM ロールにアクセス権限ポリシーをアタッチすると、ロールの信頼ポリシーで識別されたプリンシパルがアクセス権限を得ることになります。

すべての Amazon RDS API アクションとそれらが適用されるリソースの表については、「Amazon RDS API のアクセス権限: アクション、リソース、条件リファレンス」を参照してください。

Amazon RDS コンソールを使用するために必要なアクセス権限

Amazon RDS コンソールを使用しているユーザーの場合、そのユーザーは、Amazon RDS リソースと、Amazon EC2 セキュリティーおよびネットワーク情報を含むその他の関連情報をその AWS アカウントで記述できる、最小限のアクセス権限を持っている必要があります。

これらの最小限必要なアクセス権限よりも制限された IAM ポリシーを作成している場合、その IAM ポリシーを使用するユーザーに対してコンソールは意図したとおりには機能しません。「Amazon RDS での AWS 管理 (事前定義) ポリシー」で説明されているとおり、ユーザーが Amazon RDS コンソールを使用できること、および、AmazonRDSReadOnlyAccess 管理対象ポリシーがユーザーにアタッチされていることを確認してください。

AWS CLI または Amazon RDS API のみを呼び出すユーザーには、最小限のコンソールアクセス権限を付与する必要はありません。

Amazon RDS での AWS 管理 (事前定義) ポリシー

AWS は、AWS によって作成され管理されるスタンドアロンの IAM ポリシーが提供する多くの一般的ユースケースに対応します。管理ポリシーは、一般的ユースケースに必要なアクセス権限を付与することで、どの権限が必要なのかをユーザーが調査する必要をなくすることができます。詳細については、IAM ユーザーガイド の「AWS 管理ポリシー」を参照してください。

アカウントのユーザーにアタッチ可能な以下の AWS 管理ポリシーは、Amazon RDS に固有のものです。

  • AmazonRDSReadOnlyAccess - ルート AWS アカウントのすべての Amazon RDS リソースへの読み取り専用アクセス権限を付与します。

  • AmazonRDSFullAccess - ルート AWS アカウントのすべての Amazon RDS リソースへの完全なアクセス権限を付与します。

また、ユーザーが必要な Amazon RDS API アクションおよびリソースにアクセスできるようにするカスタム IAM ポリシーを作成できます。これらのカスタムポリシーは、それらのアクセス権限が必要な IAM ユーザーまたはグループにアタッチできます。

お客様が管理するポリシーの例

このセクションでは、さまざまな Amazon RDS アクションのアクセス権限を付与するユーザーポリシー例を示しています。RDS API、AWS SDK、または AWS CLI を使用している場合、これらのポリシーは機能します。コンソールを使用している場合は、「Amazon RDS コンソールを使用するために必要なアクセス権限」で説明しているコンソールに固有の追加のアクセス権限を付与する必要があります。

注記

すべての例で、米国西部 (オレゴン) リージョン (us-west-2) を使用し、架空のアカウント ID を使用しています。

例 1: RDS リソースに対する Describe アクションの実行をユーザーに許可する

以下のアクセス権限ポリシーは、Describe で始まるすべてのアクションを実行するためのアクセス権限をユーザーに付与します。これらのアクションは、DB インスタンスなど RDS リソースに関する情報を表示します。Resource 要素内のワイルドカード文字 (*) は、アカウントによって所有されるすべての Amazon RDS リソースに対してそれらのアクションが許可されることを示します。

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

例 2: 指定した DB パラメータとセキュリティグループを使用する DB インスタンスを作成することをユーザーに許可するためのアクセス権限を付与する

以下のアクセス権限ポリシーは、mysql-production DB パラメータグループと db-production DB セキュリティグループを使用する必要のある DB インスタンスを作成することのみをユーザーに許可するためのアクセス権限を付与します。

Copy
{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowMySQLProductionCreate", "Effect":"Allow", "Action":"rds:CreateDBInstance", "Resource":[ "arn:aws:rds:us-west-2:123456789012:pg:mysql-production", "arn:aws:rds:us-west-2:123456789012:secgrp:db-production" ] } ] }

例 3: DB インスタンスの削除をユーザーに禁止する

以下のアクセス権限ポリシーは、特定の DB インスタンスを削除することをユーザーに禁止するためのアクセス権限を付与します。たとえば、管理者ではないすべてのユーザーに対して、本稼働インスタンスの削除を拒否することもできます。

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