Amazon Relational Database Service
ユーザーガイド

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" ] } ] }

重要

IAM 管理者は、IAM ポリシーで明示的なアクセス許可が設定されていない場合でも、DB インスタンスのにアクセスすることができます。IAM ユーザーを作成する の例では、IAM 管理者ユーザーを作成します。管理者アクセスを DB インスタンスのに制限するには、最低限のアクセス許可が適切に設定された IAM ロールを作成し、それを管理者に設定します。

注記

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 インスタンスに接続できます。