クロスアカウント同一リージョンレプリケーション (SRR) は、オブジェクトの作成、更新、削除などの操作を、アカウント A のソースバケットから、アカウント B の同一リージョンにある宛先バケットに、自動的かつ非同期にコピーします。このトピックでは、クロスアカウント同一リージョンレプリケーションを設定する方法について説明します。
前提条件
アカウント A のリージョンに、SRR のソースバケットとしてバケット A を作成します。アカウント A の UID、バケット A の名前、およびそのリージョンを記録します。
アカウント B の同一リージョンに、SRR の宛先バケットとしてバケット B を作成します。アカウント B の UID とバケット B の名前を記録します。
ロールの権限付与
クロスアカウント SRR タスクには、2 つの異なるアカウントのバケットが関与します。したがって、Resource Access Management (RAM) ロールに必要な信頼ポリシーと最小権限ポリシーを設定する必要があります。
アカウント A を使用して、次の操作を実行します。
サービスロールを作成します。
重要RAM ユーザーを使用してロールを作成できます。RAM ユーザーには、
ram:CreateRole、ram:GetRole、ram:ListPoliciesForRole、およびram:AttachPolicyToRoleの権限が必要です。ただし、RAM ユーザーにram:CreateRoleやram:GetRoleなどの権限を付与すると、セキュリティ上の脅威が高くなります。Alibaba Cloud アカウントを使用して RAM ロールを作成し、それに権限を付与することをお勧めします。権限付与が完了すると、RAM ユーザーは Alibaba Cloud アカウントによって作成された RAM ロールを直接使用できます。ロールの作成プロセス中に、信頼できるエンティティタイプとして [Alibaba Cloud Service] を選択し、信頼できるエンティティ名として [Object Storage Service] を選択します。詳細については、「サービスロールの作成」をご参照ください。
説明ロールが作成されたら、後で使用するために [基本情報] セクションから RAM ロール ARN を記録します。
ソースバケットでクロスアカウント SRR を実行するための権限をロールに付与します。
次のいずれかの方法でロールに権限を付与できます。
RAM ロールにシステムポリシーを付与する
警告AliyunOSSFullAccessシステムポリシーを RAM ロールに付与できます。AliyunOSSFullAccessポリシーは、デフォルトで現在のアカウントのすべてのバケットに対する完全な権限を付与します。このポリシーは注意して使用してください。RAM ロールにカスタムポリシーを付与する
RAM ポリシーを使用して、ソースバケット (src-bucket) でのレプリケーションに必要な最小権限を RAM ロールに付与します。
説明ポリシーを使用するときは、必要に応じてソースバケット名を置き換えてください。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource":[ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] } ] }Key Management Service (KMS) で暗号化されたオブジェクトを宛先バケットにレプリケーションする場合は、
AliyunKMSFullAccessシステムポリシーもロールに付与する必要があります。詳細については、「RAM ロールへの権限付与」をご参照ください。
アカウント B を使用して、宛先バケットでレプリケーションされたオブジェクトを受信する権限をロールに付与します。
(推奨) 方法 1: ビジュアルエディターを使用してポリシーを追加する
OSS コンソールにログインします。
左側のナビゲーションウィンドウで、バケット をクリックし、宛先バケット名
dest-bucketをクリックします。左側のナビゲーションウィンドウで、 を選択します。
バケット承認ポリシー ページの GUI で追加 タブで、レプリケーションオブジェクトの受信 をクリックします。
レプリケーションオブジェクトの受信 パネルの UID および RAM ロールの取得方法 で、[ソースレプリケーション RAM ロール ARN から取得] を選択します。ソースから RAM ロールの ARN をコピーする に、ステップ 1 で記録したロール ARN を入力します。[権限付与の目的] で、[クロスアカウント SRR] を選択します。
ポリシーの生成 をクリックします。
方法 2: 構文ポリシーで追加
左側のナビゲーションウィンドウで、権限管理 > バケット承認ポリシー を選択します。
バケット承認ポリシー ページの 構文で追加 タブで、[編集] をクリックします。
ポリシーエディターで、次のバケットポリシーを入力します。
重要JSON エディターを使用してバケットポリシーを追加すると、新しいポリシーが既存のポリシーを上書きします。新しいポリシーに既存のポリシーの内容が含まれていることを確認してください。そうしないと、既存のポリシーに依存する操作が失敗する可能性があります。
ポリシーを使用するときは、必要に応じて、カスタムロール名、宛先バケット名 (dest-bucket)、ソースバケットを所有するアカウントの UID (137918634953xxxx)、および宛先バケットを所有するアカウントの UID (111933544165xxxx) を置き換えてください。カスタムロール名に大文字が含まれている場合は、小文字に変換してください。たとえば、作成されたロールの名前が AliyunOssDrsRole の場合、aliyunossdrsrole に変換する必要があります。UID は Alibaba Cloud アカウントの UID である必要があります。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet", "oss:ReplicatePut", "oss:ReplicateDelete" ], "Principal": [ "arn:sts::137918634953xxxx:assumed-role/aliyunossdrsrole/*" ], "Resource":[ "acs:oss:*:111933544165xxxx:dest-bucket", "acs:oss:*:111933544165xxxx:dest-bucket/*" ] } ] }[保存] をクリックします。
KMS で暗号化されたオブジェクトのレプリケーション
アカウント A のソースバケットからアカウント B の宛先バケットに KMS で暗号化されたオブジェクトをレプリケーションする場合は、アカウント B を使用して次の手順を実行します。
KMS コンソールの [インスタンス管理] ページにログインします。宛先バケットと同じリージョンで KMS インスタンスを購入して有効にします。KMS インスタンスを購入する際は、[アクセス管理数量] が 2 以上であることを確認してください。他のパラメーターはデフォルト設定のままにします。詳細については、「KMS インスタンスの購入と有効化」をご参照ください。
説明KMS で暗号化されたオブジェクトのクロスアカウントレプリケーションは KMS に依存します。この機能をサポートするリージョンは KMS によって制限されます。KMS がサポートするリージョンの詳細については、「ソフトウェアで保護されたキーをサポートするリージョンとエンドポイント」をご参照ください。
KMS インスタンスでキーを作成します。キーの種類はデフォルト以外のキーである必要があります。ソフトウェアで保護されたキーを使用することをお勧めします。詳細については、「ソフトウェアで保護されたキーの作成」をご参照ください。
説明キーが作成されたら、レプリケーションルールを作成するときに使用するために、[基本情報] セクションからキー ARN を記録します。
作成したキーにキーポリシーを設定します。キーポリシーを設定するときは、[他のアカウントユーザー] を選択し、上記の手順で作成したロール ARN を [他のアカウントユーザー] として指定します。詳細については、「キーポリシーの設定」をご参照ください。
重要KMS で暗号化されたデータをクロスアカウントでレプリケーションするには、キーポリシーに少なくとも復号 (
kms:Decrypt) とデータキーの生成 (kms:GenerateDataKey) の権限が含まれている必要があります。コンソールでキーポリシーを設定すると、これらの権限はデフォルトで含まれます。OpenAPI を使用してカスタムキーポリシーを設定する場合は、ポリシーに少なくともkms:Decryptとkms:GenerateDataKeyの権限が含まれていることを確認してください。