Amazon S3 バケットへのアクセスを設定する - Amazon Aurora

Amazon S3 バケットへのアクセスを設定する

データを Amazon S3 にエクスポートするには、PostgreSQL DB クラスターに、ファイルが入る Amazon S3 バケットに対するアクセス許可を付与します。

これには、以下の手順を使用します。

IAM ロールを介して PostgreSQLDB のクラスターに Amazon S3 へのアクセスを許可するには
  1. IAM ポリシーを作成します。

    このポリシーは、PostgreSQL DB クラスターに、Amazon S3 のバケットとオブジェクトに対するアクセス許可を付与します。

    このポリシーの作成の一環として、次のステップを実行します。

    1. ポリシーに、PostgreSQL DB クラスターから Amazon S3 バケットへのファイル転送を許可するための以下の必須アクションを含めます。

      • s3:PutObject

      • s3:AbortMultipartUpload

    2. 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/*" ] } ] }'
  2. 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" } } } ] }'
  3. 作成した IAM ポリシーを、作成した IAM ロールにアタッチします。

    次の AWS CLI コマンドは、先ほど作成したポリシーを rds-s3-export-role. という名前のロールにアタッチします。your-policy-arn を前のステップでメモしたポリシー ARN に置き換えます。

    aws iam attach-role-policy --policy-arn your-policy-arn --role-name rds-s3-export-role
  4. DB クラスターに IAM ロールを追加します。これを行うには、以下で説明するように、AWS Management Console または AWS CLI を使用します。

コンソールを使用して PostgreSQL DB クラスターの IAM ロールを追加するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. 詳細を表示するには、PostgreSQL DB クラスターの名前を選択します。

  3. [接続とセキュリティ] タブの [IAM ロールの管理] セクションで、[このインスタンスに IAM ロールを追加] で追加するロールを選択します。

  4. [Feature] で、[s3Export] を選択します。

  5. [Add role] を選択します。

CLI を使用して PostgreSQL DB クラスターの IAM ロールを追加するには
  • 次のコマンドを使用して、my-db-cluster という名前の PostgreSQL DB クラスターにロールを追加します。your-role-arn を、以前のステップで書き留めたロール ARN に置き換えます。s3Export オプションの値に --feature-name を使用します。

    Linux、macOS、Unix の場合:

    aws rds add-role-to-db-cluster \ --db-cluster-identifier my-db-cluster \ --feature-name s3Export \ --role-arn your-role-arn \ --region your-region

    Windows の場合:

    aws rds add-role-to-db-cluster ^ --db-cluster-identifier my-db-cluster ^ --feature-name s3Export ^ --role-arn your-role-arn ^ --region your-region