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

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

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

注記

IAM キーポリシーの詳細については、「Amazon Aurora での 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:cluster-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:DbClusterResourceId/db-user-name

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

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

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

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

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

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

      aws rds describe-db-clusters --query "DBClusters[*].[DBClusterIdentifier,DbClusterResourceId]"
      注記

      RDS プロキシ経由でデータベースに接続する場合は、prx-ABCDEFGHIJKL01234 などのプロキシリソース ID を指定します。RDS プロキシで IAM データベース認証を使用する方法については、「IAM 認証を使用したプロキシへの接続」を参照してください。

    • 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:cluster-ABCDEFGHIJKL01234/jane_doe", "arn:aws:rds-db:us-east-2:123456789012:dbuser:cluster-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 管理者は、ユーザーとロールに必要な、指定されたリソースで特定の API オペレーションを実行するアクセス許可をユーザーとロールに付与する IAM ポリシーを作成する必要があります。続いて、管理者はそれらのアクセス権限が必要な IAM ユーザーまたはグループにそのポリシーをアタッチします。ポリシーの例については、「Amazon Aurora アイデンティティベースのポリシーの例」を参照してください。

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

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

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

注記

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

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

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