Amazon S3 バケットへのアクセスを設定する
データを Amazon S3 にエクスポートするには、PostgreSQL DB クラスターに、ファイルが入る Amazon S3 バケットに対するアクセス許可を付与します。
これには、以下の手順を使用します。
IAM ロールを介して PostgreSQLDB のクラスターに Amazon S3 へのアクセスを許可するには
-
IAM ポリシーを作成します。
このポリシーは、PostgreSQL DB クラスターに、Amazon S3 のバケットとオブジェクトに対するアクセス許可を付与します。
このポリシーの作成の一環として、次のステップを実行します。
-
ポリシーに、PostgreSQL DB クラスターから Amazon S3 バケットへのファイル転送を許可するための以下の必須アクションを含めます。
-
s3:PutObject
-
s3:AbortMultipartUpload
-
-
Amazon S3 バケットとバケット内のオブジェクトを識別する Amazon リソースネーム (ARN) を含めます。Amazon S3 アクセス用の ARN 形式は
arn:aws:s3:::
です。amzn-s3-demo-bucket
/*
Aurora PostgreSQL の IAM ポリシーの作成の詳細については、IAM データベースアクセス用の IAM ポリシーの作成と使用 を参照してください。IAM ユーザーガイドの「チュートリアル: はじめてのカスタマー管理ポリシーの作成とアタッチ」も参照してください。
以下の AWS CLI コマンドでは、これらのオプションを指定して、
rds-s3-export-policy
という名前の IAM ポリシーを作成します。amzn-s3-demo-bucket
という名前のバケットへのアクセスを許可します。警告
特定のバケットにアクセスするようにエンドポイントポリシーが設定されているプライベート VPC 内にデータベースをセットアップすることをお勧めします。詳細については、Amazon VPC ユーザーガイドの「Amazon S3 のエンドポイントポリシーの使用」を参照してください。
すべてのリソースへのアクセスを持つポリシーを作成しないことを強くお勧めします。このアクセスは、データセキュリティにとって脅威になる可能性があります。
S3:PutObject
を使用してすべてのリソースへのアクセスを"Resource":"*"
に許可するポリシーを作成すると、エクスポート権限を持つユーザーはアカウント内のすべてのバケットにデータをエクスポートできます。さらに、ユーザーは AWS リージョン内のパブリックに書き込み可能なバケットにデータをエクスポートできます。ポリシーを作成したら、そのポリシーの Amazon リソースネーム (ARN) を書き留めます。ポリシーを IAM ロールにアタッチする場合、後続のステップで ARN が必要です。
aws iam create-policy --policy-name rds-s3-export-policy --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Sid": "s3export", "Action": [ "s3:PutObject*", "s3:ListBucket", "s3:GetObject*", "s3:DeleteObject*", "s3:GetBucketLocation", "s3:AbortMultipartUpload" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::
amzn-s3-demo-bucket
/*" ] } ] }' -
-
IAM ロールを作成します。
これを行うと、Aurora PostgreSQL がユーザーに代わってこの IAM ロールを引き受け、Amazon S3 バケットにアクセスできます。詳細については、IAM ユーザーガイドの「IAM ユーザーにアクセス許可を委任するロールの作成」を参照してください。
リソースポリシー内では
aws:SourceArn
およびaws:SourceAccount
のグローバル条件コンテキストキーを使用して、サービスに付与するリソースへのアクセス許可を制限することをお勧めします。これは、混乱した使節の問題に対する最も効果的な保護方法です。グローバル条件コンテキストキーの両方を使用し、
aws:SourceArn
の値にアカウント ID が含まれている場合、同じポリシーステートメントで使用する場合は、aws:SourceArn
の値とaws:SourceAccount
の値のアカウントでは同じアカウント ID を使用する必要があります。単一リソースに対するクロスサービスアクセスが必要な場合は
aws:SourceArn
を使用します。-
そのアカウント内の任意のリソースをクロスサービス使用に関連付けることを許可する場合、
aws:SourceAccount
を使用します。
ポリシーでは、必ずリソースの完全な ARN を持つ
aws:SourceArn
グローバル条件コンテキストキーを使用してください。以下の例は、AWS CLI コマンドを使用して、rds-s3-export-role
という名前のロールを作成する方法を示しています。例
Linux、macOS、Unix の場合:
aws iam create-role \ --role-name rds-s3-export-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
111122223333
", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname
" } } } ] }'Windows の場合:
aws iam create-role ^ --role-name rds-s3-export-role ^ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceAccount": "
111122223333
", "aws:SourceArn": "arn:aws:rds:us-east-1:111122223333:db:dbname
" } } } ] }' -
作成した IAM ポリシーを、作成した IAM ロールにアタッチします。
次の AWS CLI コマンドは、先ほど作成したポリシーを
rds-s3-export-role.
という名前のロールにアタッチします。
を前のステップでメモしたポリシー ARN に置き換えます。your-policy-arn
aws iam attach-role-policy --policy-arn
your-policy-arn
--role-name rds-s3-export-role -
DB クラスターに IAM ロールを追加します。これを行うには、以下で説明するように、AWS Management Console または AWS CLI を使用します。
コンソールを使用して PostgreSQL DB クラスターの IAM ロールを追加するには
AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/
) を開きます。 -
詳細を表示するには、PostgreSQL DB クラスターの名前を選択します。
-
[接続とセキュリティ] タブの [IAM ロールの管理] セクションで、[このインスタンスに IAM ロールを追加] で追加するロールを選択します。
-
[Feature] で、[s3Export] を選択します。
-
[Add role] を選択します。
CLI を使用して PostgreSQL DB クラスターの IAM ロールを追加するには
-
次のコマンドを使用して、
my-db-cluster
という名前の PostgreSQL DB クラスターにロールを追加します。
を、以前のステップで書き留めたロール ARN に置き換えます。your-role-arn
s3Export
オプションの値に--feature-name
を使用します。例
Linux、macOS、Unix の場合:
aws rds add-role-to-db-cluster \ --db-cluster-identifier
my-db-cluster
\ --feature-name s3Export \ --role-arnyour-role-arn
\ --regionyour-region
Windows の場合:
aws rds add-role-to-db-cluster ^ --db-cluster-identifier
my-db-cluster
^ --feature-name s3Export ^ --role-arnyour-role-arn
^ --regionyour-region