RDS for SQL Server を S3 と統合するための前提条件 - Amazon Relational Database Service

RDS for SQL Server を S3 と統合するための前提条件

開始する前に、使用するS3バケットを選択してください。また、許可を追加してRDS DBインスタンスがS3バケットにアクセスできるようにしてください。このアクセスを設定するには、IAMポリシーとIAMロールの両方を作成します。

Amazon S3にアクセスするための IAM ポリシーを作成します。
  1. IAMマネジメントコンソールのナビゲーションペインで、ポリシー を選択します。

  2. 新しいポリシーを作成し、ビジュアルエディタタブを使用して以下の手順を行ってください。

  3. サービスのため、S3を入力してS3サービスを選択します。

  4. 実行のため,以下を選択してDBインスタンス要件にアクセスできるようにします。

    • ListAllMyBuckets – 必須

    • ListBucket – 必須

    • GetBucketACL – 必須

    • GetBucketLocation – 必須

    • GetObject – S3 から にファイルをダウンロードする際に必須D:\S3\

    • PutObjectD:\S3\ から S3 にファイルをアップロードする際に必須

    • ListMultipartUploadPartsD:\S3\ から S3 にファイルをアップロードする際に必須

    • AbortMultipartUploadD:\S3\ から S3 にファイルをアップロードする際に必須

  5. [リソース] では、表示されるオプションは、前の手順で選択した内容により異なります。[バケット]、[オブジェクト]、またはその両方に対するオプションが表示されます。それぞれ、適切な Amazon リソースネーム (ARN) を加えてください。

    [バケット] は、使用したいバケットに対する ARN を追加します。例えば、バケットの名前が amzn-s3-demo-bucket の場合、ARN を arn:aws:s3:::amzn-s3-demo-bucket に設定します。

    [オブジェクト] は、バケットの ARN を入力してから以下のいずれかを選択します。

    • 特定のバケット内のすべてのファイルへのアクセスを許可するには、[バケット名] および [オブジェクト名] の両方に対して [すべて] を選択してください。

    • バケット内の特定のファイルやフォルダへのアクセスを許可する場合は、SQL Server からのアクセスを希望する特定のバケットやオブジェクトに、ARN を提供します。

  6. ポリシーの作成が完了するまで、コンソール内の指示に従ってください。

    前述の部分は、ポリシーの簡略設定ガイドです。IAM ポリシーを作成する詳細な手順については、IAM ユーザーガイドIAM ポリシーの作成を参照してください。

前の手順からの IAM ポリシーを使用する IAM ロールを作成します。
  1. [IAM 管理コンソール] で、ナビゲーションペインから [ロール] を選択します。

  2. 新しい IAM ロールを作成し、コンソール内に表示された以下のオプションを選択してください。

    • AWS サービス

    • RDS

    • RDS – ロールをデータベースに加える

    次に、下部の [次: 許可] を選択します。

  3. アクセス権限ポリシーをアタッチする で、事前に作成した IAM ポリシーの名前を入力してください。次にリストからポリシーを選択します。

  4. ロールの作成が完了するまで、コンソール内の指示に従ってください。

    前述の部分は、ロールの簡略設定ガイドです。ロールを作成する詳細な手順については、IAM ユーザーガイドIAM ロールを参照してください。

Amazon RDS に Amazon S3 バケットへのアクセスを付与するには、次のプロセスを使用します。

  1. S3 バケットに Amazon RDS アクセスを付与する IAM ポリシーを作成します。

  2. S3 バケットにアクセスするには、お客様に代わって Amazon RDS が引き受けることのできる IAM ロールを作成します。

    詳細については、IAM ユーザーガイドの「IAM ユーザーにアクセス許可を委任するロールの作成」を参照してください。

  3. 作成した IAM ポリシーを、作成した IAM ロールにアタッチします。

IAM ポリシーを作成するには

DB インスタンスが必要とするアクセスを付与するための適切なアクションが含まれるようにしてください。

  • ListAllMyBuckets – 必須

  • ListBucket – 必須

  • GetBucketACL – 必須

  • GetBucketLocation – 必須

  • GetObject – S3 から にファイルをダウンロードする際に必須D:\S3\

  • PutObjectD:\S3\ から S3 にファイルをアップロードする際に必須

  • ListMultipartUploadPartsD:\S3\ から S3 にファイルをアップロードする際に必須

  • AbortMultipartUploadD:\S3\ から S3 にファイルをアップロードする際に必須

  1. 以下の AWS CLI コマンドでは、これらのオプションを指定して、rds-s3-integration-policy という名前の IAM ポリシーを作成します。amzn-s3-demo-bucket という名前のバケットへのアクセスを許可します。

    Linux、macOS、Unix の場合:

    aws iam create-policy \ --policy-name rds-s3-integration-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*" } ] }'

    Windows の場合:

    インターフェイスでサポートされた改行コードに、必ず変更してください (^ではなく\)。また Windows では、すべてのダブルクオテーションを \ にエスケープしてください。JSON のクオーツをエスケープしなくても済むようにするには、代わりにファイルに保存し、パラメータとしてパスします。

    最初に、以下の許可ポリシーで policy.json ファイルを作成してください。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListAllMyBuckets", "Resource": "*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketACL", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/key_prefix/*" } ] }

    次のコマンドを使用してポリシーを作成します。

    aws iam create-policy ^ --policy-name rds-s3-integration-policy ^ --policy-document file://file_path/assume_role_policy.json
  2. ポリシーが作成されたら、そのポリシーの Amazon リソースネーム (ARN) を書き留めます。この ARN は、後のステップで必要になります。

IAM ロールを作成するには
  • 次の AWS CLI コマンドでは、この目的で rds-s3-integration-role IAM ロールを作成します。

    Linux、macOS、Unix の場合:

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }'

    Windows の場合:

    インターフェイスでサポートされた改行コードに、必ず変更してください (^ではなく\)。また Windows では、すべてのダブルクオテーションを \ にエスケープしてください。JSON のクオーツをエスケープしなくても済むようにするには、代わりにファイルに保存し、パラメータとしてパスします。

    最初に、次のポリシーで、assume_role_policy.json ファイルを作成します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }

    次に、以下のコマンドを使用して IAM ロールを作成します。

    aws iam create-role ^ --role-name rds-s3-integration-role ^ --assume-role-policy-document file://file_path/assume_role_policy.json
    例 グローバル条件コンテキストキーを使用した IAM ロールの作成

    リソースポリシー内では aws:SourceArn および aws:SourceAccount のグローバル条件コンテキストキーを使用して、サービスに付与するリソースへのアクセス許可を制限することをお勧めします。これは、混乱した使節の問題に対する最も効果的な保護方法です。

    両方のグローバル条件コンテキストキーを使用し、aws:SourceArn 値にアカウント ID を含めます。この場合、同じポリシーステートメントで使用する際に、aws:SourceAccount 値と aws:SourceArn 値のアカウントで同じアカウント ID を使用する必要があります。

    • 単一リソースに対するクロスサービスアクセスが必要な場合は aws:SourceArn を使用します。

    • そのアカウント内の任意のリソースをクロスサービス使用に関連付けることを許可する場合、aws:SourceAccountを使用します。

    ポリシーでは、ロールにアクセスするリソースの完全な ARN を持つ aws:SourceArn グローバル条件コンテキストキーを必ず使用してください。S3 統合の場合、次の例に示すように DB インスタンスの ARN を必ず含めてください。

    Linux、macOS、Unix の場合:

    aws iam create-role \ --role-name rds-s3-integration-role \ --assume-role-policy-document '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "rds.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier" } } } ] }'

    Windows の場合:

    assume_role_policy.json にグローバル条件コンテキストキーを追加します。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "rds.amazonaws.com" ] }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "aws:SourceArn":"arn:aws:rds:Region:my_account_ID:db:db_instance_identifier" } } } ] }
IAM ポリシーを IAM ロールにアタッチするには
  • 以下の AWS CLI コマンドでは、rds-s3-integration-role という名前のロールにこのポリシーをアタッチします。your-policy-arn を、以前のステップで書き留めたポリシー ARN に置き換えます。

    Linux、macOS、Unix の場合:

    aws iam attach-role-policy \ --policy-arn your-policy-arn \ --role-name rds-s3-integration-role

    Windows の場合:

    aws iam attach-role-policy ^ --policy-arn your-policy-arn ^ --role-name rds-s3-integration-role