Amazon RDS で RDS Proxy の AWS Identity and Access Management (IAM) 認証を設定するには、必要なアクセス許可を付与する IAM ポリシーを作成して設定します。RDS Proxy は AWS Secrets Manager を使用してデータベース認証情報を安全に管理します。これにより、アプリケーションは認証情報を直接処理することなくプロキシ経由で認証できます。
このトピックでは、必要な IAM ポリシーの作成や IAM ロールへのアタッチなど、RDS Proxy の IAM 認証を設定する手順について説明します。
ヒント
この手順は、独自の IAM ロールを作成する場合にのみ必要です。それ以外の場合は、プロキシの設定時に RDS が自動的に必要なロールを作成するため、これらのステップをスキップできます。
前提条件
RDS Proxy の IAM 認証を設定する前に、以下があることを確認してください。
-
AWS Secrets Manager – データベース認証情報を含む少なくとも 1 つの保存済みシークレット。シークレットの作成手順については、「RDS Proxy の AWS Secrets Manager でのデータベース認証情報の設定」を参照してください。
-
IAM アクセス許可 – AWS Secrets Manager で IAM ポリシー、ロール、シークレットを作成および管理するためのアクセス許可を持つ IAM ロールまたはユーザー。
Secrets Manager アクセス用の IAM ポリシーの作成
RDS Proxy が Secrets Manager からデータベース認証情報を取得できるようにするには、必要なアクセス許可を付与するポリシーを持つ IAM ロールを作成します。
プロキシで使用するシークレットにアクセスするためのロールを作成するには
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
ロールに対するアクセス許可ポリシーを作成します。一般的な手順については、「IAM ポリシーを作成する (コンソール)」を参照してください。
このポリシーを JSON エディタに貼り付け、以下の変更を行います。
-
自分のアカウント ID に置き換えます。
-
us-east-2
をプロキシが存在するリージョンに置き換えます。 -
シークレット名を、作成したシークレット名に置き換えます。詳細については、「Specifying KMS keys in IAM policy statements」を参照してください。
-
Secrets Manager シークレットの暗号化に使用した KMS キー ID を、デフォルトキーまたは独自のキーに置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:
account_id
:secret:secret_name_1
", "arn:aws:secretsmanager:us-east-2:account_id
:secret:secret_name_2
" ] }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id
:key/key_id
", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] } -
-
ロールを作成し、アクセス許可ポリシーをそのロールにアタッチします。一般的な手順については、「AWS サービスにアクセス許可を委任するロールを作成する」を参照してください。
[信頼されたエンティティタイプ] で、[AWS サービス] を選択します。[ユースケース] で、[RDS] を選択し、ユースケースの [RDS – ロールをデータベースに追加する] を選択します。
-
[アクセス許可ポリシー] で、作成したポリシーを選択します。
-
[信頼されたエンティティを選択] で、ロールの次の信頼ポリシーを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
AWS CLI を使用してロールを作成するには、次のリクエストを送信します。
aws iam create-role \ --role-name
my_role_name
\ --assume-role-policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Principal":{"Service":["rds.amazonaws.com"]},"Action":"sts:AssumeRole"}]}'
ポリシーをロールにアタッチします。
aws iam put-role-policy \ --role-name
my_role_name
\ --policy-namesecret_reader_policy
\ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": [ "arn:aws:secretsmanager:us-east-2:account_id
:secret:secret_name_1
", "arn:aws:secretsmanager:us-east-2:account_id
:secret:secret_name_2
" ] }, { "Sid": "VisualEditor1", "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:us-east-2:account_id
:key/key_id
", "Condition": { "StringEquals": { "kms:ViaService": "secretsmanager.us-east-2.amazonaws.com" } } } ] }'
IAM ロールとアクセス許可を設定したら、プロキシを作成してこのロールに関連付けることができます。これにより、プロキシは AWS Secrets Manager からデータベース認証情報を安全に取得し、アプリケーションの IAM 認証を有効にすることができます。手順については、RDS Proxy の作成 を参照してください。