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