データベース認証とリソースアクセスの手動設定
データベース認証とリソースアクセスの手動設定プロセスには、以下のステップが含まれます。
このプロセスはオプションであり、スクリプトを使用したデータベース認証とリソースアクセスの設定 と同じタスクを実行します。スクリプトを使用することをお勧めします。
カスタマーマネージド AWS KMS keyの作成
「Creating symmetric encryption keys」の手順に従って、カスタマーマネージド KMS キーを作成します。以下の要件を満たしている場合は、既存のキーを使用できます。
カスタマーマネージド KMS キーを作成するには
-
AWS Management Console にサインインし、AWS KMS コンソール (https://console.aws.amazon.com/kms
) を開きます。 -
[カスタマー管理型のキー] ページに移動します。
-
[Create key] (キーの作成) を選択します。
-
[キーの設定] ページで、次の操作を行います。
-
[キータイプ] として、[対称] を選択します。
-
[キーの使用] で、[暗号化および復号化] を選択します。
-
[Next] を選択します。
-
-
[ラベルを追加] ページで、
limitless
などのエイリアスを入力し、[次へ] を選択します。 -
[キーの管理アクセス許可を定義] ページで、[キーの管理者がこのキーを削除できるようにします] チェックボックスがオンになっていることを確認し、[次へ] を選択します。
-
[キー使用アクセス許可の定義] ページで、[次へ] をクリックします。
-
[レビュー] ページで、[完了] を選択します。
キーポリシーは後で更新します。
IAM ロールのアクセス許可ポリシーの追加 で使用する KMS キーの Amazon リソースネーム (ARN) を記録します。
AWS CLI を使用してカスタマーマネージド KMS キーを作成する方法については、「create-key
データベースシークレットの作成
データロードユーティリティがソースデータベーステーブルと送信先データベーステーブルにアクセスできるようにするには、AWS Secrets Manager に 2 つのシークレットを作成します。1 つはソースデータベース用、もう 1 つは送信先データベース用です。これらのシークレットには、ソースデータベースと送信先データベースにアクセスするためのユーザー名とパスワードが保存されます。
「Create an AWS Secrets Manager secret」の手順に従って、キーと値のペアシークレットを作成します。
データベースシークレットを作成するには
Secrets Manager のコンソール (https://console.aws.amazon.com/secretsmanager/
) を開きます。 -
[Store a new secret] (新しいシークレットを保存する) を選択します。
-
[シークレットのタイプを選択] ページで以下を行います。
-
[シークレットのタイプ] で、[その他のシークレットのタイプ] を選択します。
-
[キー/値のペア] で、[プレーンテキスト] タブを選択します。
-
次の JSON コードを入力します。
とsourcedbreader
は「ソースデータベース認証情報を作成する」で作成したソースデータベースユーザーの認証情報です。sourcedbpassword
{ "username":"
sourcedbreader
", "password":"sourcedbpassword
" } -
[暗号化キー] で、カスタマーマネージド AWS KMS keyの作成 で作成した KMS キーを選択します (例:
limitless
)。 -
[Next] を選択します。
-
-
[シークレットを設定] ページで、[シークレットの名前] (
source_DB_secret
など) を入力し、[次へ] を選択します。 -
[ローテーションを設定 - オプション] ページで、[次へ] をクリックします。
-
[Review] (確認) ページで [Store] (保存) を選択します。
-
送信先データベースシークレットでこの手順を繰り返します。
-
次の JSON コードを入力します。
とdestinationdbwriter
は「送信先データベースの認証情報を作成する」で作成した送信先データベースユーザーの認証情報です。destinationdbpassword
{ "username":"
destinationdbwriter
", "password":"destinationdbpassword
" } -
[シークレットの名前] (
destination_DB_secret
など) を入力します。
-
IAM ロールのアクセス許可ポリシーの追加 で使用するシークレットの ARN を記録します。
IAM ロールの作成
データロードには、AWS リソースへのアクセスを提供する必要があります。アクセスを提供するには、「IAM ユーザーにアクセス許可を委任するロールを作成する」の手順に従って aurora-data-loader
IAM ロールを作成します。
IAM ロールを作成するには
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
[ロール] ページに移動します。
-
[ロールの作成] を選択します。
-
[信頼されたエンティティを選択] ページで以下を行います。
-
[信頼されたエンティティタイプ] で、[カスタム信頼ポリシー] を選択します。
-
カスタム信頼ポリシーに次の JSON コードを入力します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
-
[Next] を選択します。
-
-
[アクセス許可を追加] ページで [次へ] を選択してください。
-
[名前、確認、および作成] ページで、以下を行います。
-
[ロール名] には、
aurora-data-loader
または任意の別の名前を入力します。 -
[タグを追加] を選択して、以下のタグを入力します。
-
[Key] (キー):
assumer
-
値:
aurora_limitless_table_data_load
重要
Aurora PostgreSQL Limitless Database は、このタグを持つ IAM ロールのみを引き受けることができます。
-
-
[ロールの作成] を選択します。
-
カスタマーマネージド AWS KMS keyの更新
「キーポリシーを変更する」の手順に従って、IAM ロール aurora-data-loader
をデフォルトのキーポリシーに追加します。
IAM ロールをキーポリシーに追加するには
-
AWS Management Console にサインインし、AWS KMS コンソール (https://console.aws.amazon.com/kms
) を開きます。 -
[カスタマー管理型のキー] ページに移動します。
-
「カスタマーマネージド AWS KMS keyの作成」で作成した KMS キー (
limitless
など) を選択します。 -
[キーポリシー] タブの [キーユーザー] で、[追加] を選択します。
-
[キーユーザーの追加] ウィンドウで、「IAM ロールの作成」で作成した IAM ロールの名前 (aurora-data-loader など) を選択します。
-
[追加] を選択します。
IAM ロールのアクセス許可ポリシーの追加
作成した IAM ロールにアクセス許可ポリシーを追加する必要があります。これにより、Aurora PostgreSQL Limitless Database データロードユーティリティは、ネットワーク接続を構築し、ソースと送信先の DB 認証情報シークレットを取得するための関連 AWS リソースにアクセスできます。
詳細については、「ロールの修正」を参照してください。
アクセス許可ポリシーを追加するには
AWS Management Console にサインインして、IAM コンソール (https://console.aws.amazon.com/iam/
) を開きます。 -
[ロール] ページに移動します。
-
「IAM ロールの作成」で作成した IAM ロール (aurora-data-loader など) を選択します。
-
[許可] タブの [許可ポリシー] で [許可を追加] を選択し、インラインポリシーを作成します。
-
[アクセス許可を指定] ページで、[JSON] エディタを選択します。
-
次のテンプレートをコピーして JSON エディタに貼り付け、プレースホルダーをデータベースシークレットと KMS キーの ARN に置き換えます。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Ec2Permission", "Effect": "Allow", "Action": [ "ec2:DescribeNetworkInterfaces", "ec2:CreateNetworkInterface", "ec2:DeleteNetworkInterface", "ec2:CreateNetworkInterfacePermission", "ec2:DeleteNetworkInterfacePermission", "ec2:DescribeNetworkInterfacePermissions", "ec2:ModifyNetworkInterfaceAttribute", "ec2:DescribeNetworkInterfaceAttribute", "ec2:DescribeAvailabilityZones", "ec2:DescribeRegions", "ec2:DescribeVpcs", "ec2:DescribeSubnets", "ec2:DescribeSecurityGroups", "ec2:DescribeNetworkAcls" ], "Resource": "*" }, { "Sid": "SecretsManagerPermissions", "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "arn:aws:secretsmanager:us-east-1:
123456789012
:secret:source_DB_secret-ABC123
", "arn:aws:secretsmanager:us-east-1:123456789012
:secret:destination_DB_secret-456DEF
" ] }, { "Sid": "KmsPermissions", "Effect": "Allow", "Action": [ "kms:Decrypt", "kms:DescribeKey", "kms:GenerateDataKey" ], "Resource": "arn:aws:kms:us-east-1:123456789012
:key/aa11bb22-####-####-####-fedcba123456
" }, { "Sid": "RdsPermissions", "Effect": "Allow", "Action": [ "rds:DescribeDBClusters", "rds:DescribeDBInstances" ], "Resource": "*" } ] } -
エラーを確認して修正します。
-
[Next] を選択します。
-
[確認して作成] ページで、[ポリシー名] (
data_loading_policy
など) を入力し、[ポリシーを作成] を選択します。