ライブレプリケーションのアクセス許可の設定
Amazon S3 でライブレプリケーションを設定する場合は、次のように必要なアクセス許可を取得します。
-
Simple Storage Service (Amazon S3) は、ユーザーに代わってオブジェクトをレプリケートするための許可を必要とします。AWS Identity and Access Management (IAM) ロールを作成してこれらの許可を付与し、その後、レプリケーション設定でそのロールを指定します。
-
レプリケート元バケットとレプリケート先バケットが同じアカウントによって所有されていない場合、レプリケート先バケット所有者は、レプリカを保存するためのアクセス許可をレプリケート元バケット所有者にも付与する必要があります。
トピック
IAM ロールの作成
デフォルトで、すべての Simple Storage Service (Amazon S3) リソース (バケット、オブジェクト、関連するサブリソース) はプライベートであり、リソース所有者のみがリソースにアクセスできます。Amazon S3 には、ソースバケットからオブジェクトを読み取って、レプリケートするアクセス許可が必要です。IAM ロールを作成してこれらの許可を付与し、レプリケーション設定でそのロールを指定します。
このセクションでは、信頼ポリシーとこの IAM ロールにアタッチされた最低限必要なアクセス許可ポリシーについて説明します。チュートリアル例では、IAM ロールを作成するための手順をステップバイステップで説明しています。詳細については、「ライブレプリケーションの設定例」を参照してください。
信頼ポリシーは、IAM ロールを引き受けることができるプリンシパル ID を識別します。アクセス許可ポリシーは、IAM ロールが実行できるアクション、リソース、および条件を指定します。
-
以下の例は、信頼ポリシーを示しています。ここでは、このロールを引き受けることができる AWS のサービスプリンシパルとして Amazon S3 を特定します。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"s3.amazonaws.com" }, "Action":"sts:AssumeRole" } ] }
-
以下の例は、信頼ポリシーを示しています。ここでは、このロールを引き受けることができるプリンシパルとして Amazon S3 および S3 バッチオペレーションを特定します。バッチレプリケーションジョブを作成する場合はこの方法を使用します。詳細については、「新しいレプリケーションルールまたは新しいレプリケート先にバッチレプリケーションジョブを作成する」を参照してください。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service": [ "s3.amazonaws.com", "batchoperations.s3.amazonaws.com" ] }, "Action":"sts:AssumeRole" } ] }
IAM ロールの詳細については、IAM ユーザーガイドの IAM ロールを参照してください。
-
以下の例は、アクセス許可ポリシーを示しています。ここでは、ユーザーに代わってレプリケーションタスクを実行する許可を IAM ロールに付与します。Amazon S3 がこのロールを引き受ける場合、このポリシーで指定されたアクセス許可を持つことになります。このポリシーでは、
はレプリケート元バケットで、amzn-s3-demo-source-bucket
はレプリケート先バケットです。amzn-s3-demo-destination-bucket
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:GetReplicationConfiguration", "s3:ListBucket" ], "Resource":[ "arn:aws:s3:::
amzn-s3-demo-source-bucket
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObjectVersionForReplication", "s3:GetObjectVersionAcl", "s3:GetObjectVersionTagging" ], "Resource":[ "arn:aws:s3:::amzn-s3-demo-source-bucket
/*" ] }, { "Effect":"Allow", "Action":[ "s3:ReplicateObject", "s3:ReplicateDelete", "s3:ReplicateTags" ], "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" } ] }以下のアクセス許可ポリシーは、以下のアクションに対する許可を付与します。
-
s3:GetReplicationConfiguration
およびs3:ListBucket
—
バケットでのこれらのアクションの許可により、Amazon S3 はレプリケーション設定とリストバケットのコンテンツを取得できます。(現在の権限モデルには、amzn-s3-demo-source-bucket
s3:ListBucket
削除マーカーにアクセスするために許可が必要です。) -
s3:GetObjectVersionForReplication
およびs3:GetObjectVersionAcl
– すべてのオブジェクトに付与されているこれらのアクションの許可で、Simple Storage Service (Amazon S3) はオブジェクトに関連付けられた特定のオブジェクトバージョンとアクセスコントロールリスト (ACL) を取得することができます。 -
s3:ReplicateObject
およびs3:ReplicateDelete
—
バケットのオブジェクトに属すこれらのアクションの許可により、Simple Storage Service (Amazon S3) はレプリケート先バケットにオブジェクトまたは削除マーカーをレプリケートできます。削除マーカーの詳細については、「削除オペレーションがレプリケーションに与える影響」を参照してください。amzn-s3-demo-destination-bucket
注記
バケット に対するamzn-s3-demo-destination-bucket
s3:ReplicateObject
アクションの許可により、オブジェクトタグや ACL などのメタデータのレプリケーションも許可されます。したがって、s3:ReplicateTags
アクションのアクセス許可を明示的に付与する必要はありません。 -
s3:GetObjectVersionTagging
—
バケットのオブジェクトに属するこのアクションの許可により、Amazon S3 はレプリケーションのためにオブジェクトタグを読み取ることができるようになります。オブジェクトタグの詳細については、タグを使用してストレージを分類するを参照してください。Amazon S3 がamzn-s3-demo-source-bucket
s3:GetObjectVersionTagging
アクセス許可を持っていない場合は、オブジェクトはレプリケートされますが、オブジェクトタグはレプリケートされません。
Amazon S3 アクションの一覧については、「サービス認可リファレンス」の「Amazon S3 のアクション、リソース、および条件キー」を参照してください。
S3 リソースタイプ別の S3 API オペレーションへのアクセス許可の詳細については、「Amazon S3 API オペレーションに必要なアクセス許可」を参照してください。
重要
IAM ロールを所有する AWS アカウントは、IAM ロールに付与するアクションの許可を持っている必要があります。
例えば、レプリケート元バケットに別の AWS アカウントが所有するオブジェクトが含まれていたとします。オブジェクトの所有者は、IAM ロールを所有する AWS アカウントに、オブジェクトのアクセスコントロールリスト (ACL) を介して必要な許可を明示的に付与する必要があります。そうでない場合、Amazon S3 はオブジェクトにアクセスできず、オブジェクトのレプリケーションは失敗します。ACL のアクセス許可については、「アクセスコントロールリスト (ACL) の概要」を参照してください。
ここで説明されているアクセス許可は、最小のレプリケーション設定に関連しています。オプションのレプリケーション設定を追加する場合は、追加のアクセス許可を Amazon S3 に付与する必要があります。例えば、暗号化されたオブジェクトをレプリケートする場合は、必要な AWS Key Management Service (AWS KMS) キーアクセス許可も付与する必要があります。詳細については、「暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)」を参照してください。
-
レプリケーション元とレプリケーション先のバケットが異なる AWS アカウントによって所有されている場合の許可の付与
レプリケート元バケットとレプリケート先バケットが同じアカウントによって所有されていない場合、レプリケート先バケット所有者は、次のように、レプリケート元バケット所有者にレプリケーションアクションを実行する許可を付与するバケットポリシーも追加する必要があります。このポリシーの例では、
はレプリケーション先バケットです。amzn-s3-demo-destination-bucket
Amazon S3 コンソールを使用して、このバケットポリシーを自動的に生成することもできます。詳細については、「レプリケートされたオブジェクトをレプリケート元バケットから受信できるようにする」を参照してください。
注記
ロールの ARN 形式が異なって表示される場合があります。コンソールを使用してロールが作成された場合、ARN 形式は arn:aws:iam::
です。AWS CLI を使用してロールが作成された場合、ARN 形式は account-ID
:role/service-role/role-name
arn:aws:iam::
です。詳細については、「IAM ユーザーガイド」の「IAM ロール」を参照してください。account-ID
:role/role-name
{ "Version":"2012-10-17", "Id":"PolicyForDestinationBucket", "Statement":[ { "Sid":"Permissions on objects", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
source-bucket-account-ID
:role/service-role/source-account-IAM-role
" }, "Action":[ "s3:ReplicateDelete", "s3:ReplicateObject" ], "Resource":"arn:aws:s3:::/*" }, { "Sid":"Permissions on bucket", "Effect":"Allow", "Principal":{ "AWS":"arn:aws:iam::
amzn-s3-demo-destination-bucket
source-bucket-account-ID
:role/service-role/source-account-IAM-role
" }, "Action": [ "s3:List*", "s3:GetBucketVersioning", "s3:PutBucketVersioning" ], "Resource":"arn:aws:s3:::
" } ] }amzn-s3-demo-destination-bucket
例については、「異なるアカウントでのバケットのレプリケーション設定」を参照してください。
レプリケート元バケットのオブジェクトがタグ付きの場合は、以下の点に注意してください。
-
レプリケート元のバケット所有者が (IAM ロールによって) オブジェクトタグをレプリケートするための
s3:GetObjectVersionTagging
およびs3:ReplicateTags
アクションのアクセス許可を Amazon S3 に付与した場合、Amazon S3 はオブジェクトと共にタグをレプリケートします。IAM ロールに関する詳細は、「IAM ロールの作成」を参照してください。 -
レプリケート先のバケット所有者は、タグがレプリケートされるのを望まない場合、次のステートメントをレプリケート先のバケットポリシーに追加することで、
s3:ReplicateTags
アクションのアクセス許可を明示的に拒否できます。このポリシーでは、
はレプリケーション先バケットです。amzn-s3-demo-destination-bucket
... "Statement":[ { "Effect":"Deny", "Principal":{ "AWS":"arn:aws:iam::
source-bucket-account-id
:role/service-role/source-account-IAM-role
" }, "Action":"s3:ReplicateTags", "Resource":"arn:aws:s3:::amzn-s3-demo-destination-bucket
/*" } ] ...
注記
暗号化されたオブジェクトをレプリケートする場合は、必要な AWS Key Management Service (AWS KMS) キーアクセス許可も付与する必要があります。詳細については、「暗号化されたオブジェクトのレプリケート (SSE-S3、SSE-KMS、DSSE-KMS、SSE-C)」を参照してください。
レプリケートされたオブジェクトをレプリケート元バケットから受信できるようにする
上記のポリシーをレプリケート先バケットに手動で追加する代わりに、Amazon S3 コンソールを介して、レプリケート元バケットからレプリケートされたオブジェクトの受信を有効にするために必要なポリシーをすばやく生成できます。
AWS Management Console にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/
) を開きます。 -
左側のナビゲーションペインで、[バケット] を選択します。
-
バケットリストで、レプリケート先バケットとして使用するバケットを選択します。
-
[Management (管理)] タブを選択し、[Replication rules (レプリケーションルール)] まで下にスクロールします。
-
[Actions] (アクション)で、[Receive replicated objects] (レプリケートされたオブジェクトの受信)を選択します。
プロンプトに従って、レプリケート元バケットアカウントの AWS アカウント ID を選択し、[ポリシーの生成] を選択します。コンソールにより、Amazon S3 バケットポリシーと KMS キーポリシーが生成されます。
-
このポリシーを既存のバケットポリシーに追加するには、[Apply settings] (設定の適用) を選択するか、または [Copy] (コピー) をクリックして、変更を手動でコピーします。
-
(オプション) AWS KMS ポリシーを AWS Key Management Service コンソール上の必要な KMS キーポリシーへコピーします。
レプリカの所有権の変更
レプリケート元とレプリケート先のバケットが、異なる AWS アカウントによって所有されている場合、レプリケート先バケットを所有する AWS アカウントにレプリカの所有者を変更するように Amazon S3 に指示できます。所有者上書きの詳細については、「レプリカ所有者の変更」を参照してください。
S3 バッチオペレーションに対するアクセス許可の付与
S3 バッチレプリケーションでは、次のオブジェクトをレプリケートできます。
-
レプリケーション設定が実行される前に存在していたオブジェクト
-
以前にレプリケートされたオブジェクト
-
レプリケーションに失敗したオブジェクト
新しいレプリケーション設定で最初のルールを作成する場合や、Amazon S3 コンソールを介して新しいレプリケート先を既存の設定に追加する場合は、1 回限りのバッチレプリケーションジョブを作成できます。バッチオペレーションジョブを作成して、既存のレプリケーション設定でバッチレプリケーションを開始することもできます。
バッチレプリケーションの IAM ロールとポリシーの例については、「S3 バッチレプリケーション用の IAM ロールの設定」を参照してください。