Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

IAM データベースアクセス用の IAM ポリシーの作成と使用

IAM ユーザーまたはロールに DB インスタンスへの接続を許可するには、IAM ポリシーを作成する必要があります。その後、そのポリシーを IAM ユーザーまたはロールに関連付けます。

注記

IAM キーポリシーの詳細については、「Amazon RDS での Identity and Access Management」を参照してください。

次のポリシー例では、IAM ユーザーが IAM データベース認証を使用して DB インスタンス ​に接続できます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:db-ABCDEFGHIJKL01234/db_user" ] } ] }

注記

rds-db: プレフィックスと、rds: で始まる他の RDS API アクションのプレフィックスを混同しないでください。IAM データベース認証に対してのみ、rds-db: プレフィックスと rds-db:connect アクションを使用します。これらは、その他のコンテキストでは有効ではありません。

現在、IAM コンソールでは、rds-db:connect アクションを使用するポリシーに対してエラーが表示されます。このエラーは無視して構いません。

このポリシーには、次の要素を持つ 1 つのステートメントが含まれています。

  • Effect – DB インスタンスへのアクセスを許可するには、Allow を指定します。アクセスを明示的に許可しない場合、デフォルトでアクセスは拒否されます。

  • Action – DB インスタンスへの接続を許可するには、rds-db:connect を指定します。

  • Resource – 1 つの DB インスタンスで 1 つのデータベースアカウントを示す Amazon リソースネーム (ARN) を指定します。ARN 形式は次のとおりです。

    arn:aws:rds-db:region:account-id:dbuser:DbiResourceId/db-user-name

    この形式では、以下のように置き換えます。

    • region は、DB インスタンスの AWS リージョンです。このポリシー例での AWS リージョンは us-east-2 です。

    • account-id は DB インスタンスの AWS アカウント番号です。このポリシー例でのアカウント番号は 1234567890 です。

    • DbiResourceId は、DB インスタンスの識別子です。この識別子は AWS リージョンに固有であり、変更されることはありません。このポリシー例での識別子は db-ABCDEFGHIJKL01234 です。

      Amazon RDS の AWS マネジメントコンソール で DB インスタンスリソース ID を検索するには、DB インスタンスを選択して、その詳細を表示します。そして、[Configuration (設定)] タブを選択します。[設定] セクションに [リソース ID] が表示されます。

      または、次のように AWS CLI コマンドを使用して、以下に示されているように、現在の AWS リージョンのすべての DB インスタンスの識別子とリソース ID をリストできます。

      aws rds describe-db-instances --query "DBInstances[*].[DBInstanceIdentifier,DbiResourceId]"
    • db-user-name は、IAM 認証に関連付けるデータベースアカウントの名前です。このポリシー例で、データベースアカウントは db_user です。

多様なアクセスパターンをサポートするため、他の ARN を構築できます。次のポリシーでは、DB インスタンスで 2 つの異なるデータベースアカウントにアクセスできます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/jane_doe", "arn:aws:rds-db:us-east-2:123456789012:dbuser:db-ABCDEFGHIJKL01234/mary_roe" ] } ] }

次のポリシーでは、特定の AWS アカウントと AWS リージョンのすべての DB インスタンスとデータベースアカウントに一致させるために「*」文字を使用します。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:1234567890:dbuser:*/*" ] } ] }

次のポリシーは、特定の AWS アカウントと AWS リージョンの DB インスタンスすべてに一致します。ただし、jane_doe データベースアカウントを持つ DB インスタンス または DB クラスターにのみにアクセスが許可されます。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "rds-db:connect" ], "Resource": [ "arn:aws:rds-db:us-east-2:123456789012:dbuser:*/jane_doe" ] } ] }

IAM ユーザーまたはロールは、データベースユーザーがアクセスするデータベースにのみアクセスできます。たとえば、DB インスタンスdev という名前のデータベースと、test という名前の別のデータベースがあるとします。データベースユーザー jane_doedev のみにアクセスできる場合、jane_doe ユーザーでその DB インスタンスにアクセスできるすべての IAM ユーザーも、dev にのみアクセスできます。このアクセス制限は、テーブル、ビューなどその他のデータベースオブジェクトにも当てはまります。

IAM ユーザーまたはロールへの IAM ポリシーのアタッチ

データベース認証を許可するように IAM ポリシーを作成した後で、IAM ユーザーまたはロールにポリシーをアタッチする必要があります。このトピックのチュートリアルについては、IAM ユーザーガイドの「はじめてのカスタマー管理ポリシーの作成とアタッチ」を参照してください。

チュートリアルを進める際に、このセクションに記載されているいずれかのポリシー例を開始点として使用し、ニーズに合わせて調整することができます。チュートリアルを完了すると、rds-db:connect アクションを利用できる、ポリシーがアタッチされた IAM ユーザーが作成されます。

注記

複数の IAM ユーザーまたはロールを同じデータベースユーザーアカウントにマップできます。たとえば、IAM ポリシーで以下のリソース ARN を指定したとします。

arn:aws:rds-db:us-east-2:123456789012:dbuser:db-12ABC34DEFG5HIJ6KLMNOP78QR/jane_doe

IAM ユーザー JaneBobDiego にポリシーをアタッチした場合、それらの各ユーザーは、jane_doe データベースアカウントを使用して、指定された DB インスタンスに接続できます。