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

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

ユーザーまたはロールに DB クラスターへの接続を許可するには、IAM ポリシーを作成する必要があります。その後、ポリシーをアクセス許可セットまたはロールにアタッチします。

注記

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

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

注記

rds-db: プレフィックスと、rds: で始まる他の RDS API オペレーションのプレフィックスを混同しないでください。IAM データベース認証に対してのみ、rds-db: プレフィックスと 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 です。ユーザーは DB クラスターのアカウントと同じアカウントでなければなりません。

      クロスアカウントアクセスを実行するには、DB クラスターのアカウントに上記のポリシーで IAM ロールを作成し、他のアカウントがそのロールを引き継ぐことを許可します。

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

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

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

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

      RDS Proxy 経由でデータベースに接続する場合は、prx-ABCDEFGHIJKL01234 などのプロキシリソース ID を指定します。RDS Proxy で 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" ] } ] }

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

管理者は、エンティティに必要な、指定されたリソースに対して特定の API オペレーションを実行するアクセス許可を付与する IAM ポリシーを作成する必要があります。続いて、管理者は、それらのアクセス許可を必要とするアクセス許可セットまたはロールに、そのポリシーをアタッチします。ポリシーの例については、「Amazon Aurora のアイデンティティベースのポリシーの例」を参照してください。

IAM ポリシーをアクセス許可セットまたはロールにアタッチする

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

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

注記

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

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

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