アカウント間のクロスリージョンレプリケーション (CRR) を使用して、Alibaba Cloud アカウント A 内のリージョンにあるバケットから Alibaba Cloud アカウント B 内の別のリージョンにある別のバケットに Object Storage Service (OSS) オブジェクトをレプリケートできます。
前提条件
CRR タスクのソースバケットとして機能するバケット A は、アカウント A 内のリージョンに作成されます。アカウント A の UID、バケット A の名前、およびバケット A が配置されているリージョンが記録されます。
アカウント A には、
oss:PutBucketReplication
、oss:GetBucketReplication
、oss:DeleteBucketReplication
、oss:GetBucketReplicationLocation、および oss:GetBucketReplicationProgress の権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。CRR タスクのデスティネーションバケットとして機能するバケット B は、アカウント B 内の別のリージョンに作成されます。アカウント B の UID、バケット B の名前、およびバケット B が配置されているリージョンが記録されます。
ロールの承認
アカウント間でデータをレプリケートするには、異なる Alibaba Cloud アカウントに属する 2 つのバケットが必要です。次の項目では、アカウント間のデータレプリケーションに必要な信頼ポリシーと最小限の権限について説明します。
アカウント A を使用して、次の操作を実行します。
通常のサービロールを作成します。
重要RAM ユーザーを使用して RAM ロールを作成できます。RAM ユーザーには、
ram:CreateRole
、ram:GetRole
、ram:ListRoles
、ram:ListPoliciesForRole
、およびram:AttachPolicyToRole
の権限が必要です。ただし、RAM ユーザーにram:CreateRole
やram:GetRole
などの権限を付与すると、セキュリティリスクが発生する可能性があります。RAM ユーザーが関連付けられている Alibaba Cloud アカウントを使用して RAM ロールを作成し、必要な権限を RAM ロールに付与できます。その後、RAM ユーザーは Alibaba Cloud アカウントによって作成された RAM ロールを引き受けることができます。RAM ロールを作成するときは、プリンシパルタイプを [クラウドサービス] に設定し、プリンシパル名パラメーターには [OSS] を選択します。詳細については、「通常のサービロールを作成する」をご参照ください。
説明RAM ロールの作成後、後続の権限付与のために、[基本情報] セクションにある RAM ロールの Alibaba Cloud Resource Name (ARN) を記録します。
ソースバケットで CRR を実行するための権限を RAM ロールに付与します。
次のいずれかの方法を使用して、RAM ロールに権限を付与できます。
必要なシステムポリシーを RAM ロールにアタッチする
警告AliyunOSSFullAccess
システムポリシーを RAM ロールにアタッチします。AliyunOSSFullAccess
システムポリシーがアタッチされている RAM ロールには、現在の Alibaba Cloud アカウント内のすべてのバケットに対するすべての操作を実行するための権限があります。システムポリシーを RAM ロールにアタッチする際は注意してください。カスタムポリシーを RAM ロールにアタッチする
RAM ポリシーを使用して、ソースバケットで CRR を実行するために必要な最小限の権限を RAM ロールに付与できます。
説明ビジネス要件に基づいて、src-bucket をソースバケットの名前に置き換えます。
{ "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 ロールにアタッチする必要があります。システムポリシーを RAM ロールにアタッチする方法の詳細については、「RAM ロールに権限を付与する」をご参照ください。
アカウント B を使用して、デスティネーションバケットにレプリケートするオブジェクトを受信するための権限を RAM ロールに付与します。
方法 1: (推奨) GUI で追加
OSS コンソール にログインします。
左側のナビゲーションウィンドウで、バケット をクリックします。「ベケットリスト」ページで、
dest-bucket
という名前のバケットを見つけ、バケット名をクリックします。左側のナビゲーションツリーで、
を選択します。バケット承認ポリシー タブで、GUI で追加 をクリックし、次に レプリケーションオブジェクトの受信 をクリックします。
[レプリケートするオブジェクトを受信] パネルで、UID および RAM ロールの取得方法 を [レプリケーションのソース RAM ロール ARN] に設定し、[レプリケーションのソース RAM ロール ARN] に 手順 1 で作成した RAM ロールの ARN を入力し、[目的] には [アカウント間のレプリケーション] を選択します。
ポリシーの生成 をクリックします。
方法 2: 構文で追加
左側のナビゲーションツリーで、権限管理 > バケット承認ポリシー を選択します。
バケット承認ポリシー タブで、構文で追加 をクリックし、次に [編集] をクリックします。
コードエディターに次のバケットポリシーを入力します。
重要ポリシー ステートメントを指定してバケットポリシーを構成し、RAM ロールに必要な権限を付与する場合、新しいバケットポリシーは既存のバケットポリシーを上書きします。新しいバケットポリシーに既存のバケットポリシーの内容が含まれていることを確認してください。そうでない場合、既存のバケットポリシーの承認が失敗する可能性があります。
ビジネス要件に基づいて、ロール名を、作成した RAM ロールの名前に置き換えます。作成した RAM ロールの名前に大文字が含まれている場合は、小文字に変換する必要があります。 たとえば、作成した RAM ロールの名前が AliyunOssDrsRole の場合、AliyunOssDrsRole を aliyunossdrsrole に変換する必要があります。次の例では、デスティネーションバケットの名前は dest-bucket、ソースバケットが属するアカウントの UID は 137918634953xxxx、デスティネーションバケットが属するアカウントの UID は 111933544165xxxx です。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", // レプリケーションタスクを一覧表示します。 "oss:ReplicateGet", // レプリケーションタスクの構成を取得します。 "oss:ReplicatePut", // オブジェクトをレプリケートします。 "oss:ReplicateDelete" // オブジェクトのレプリカを削除します。 ], "Principal": [ "arn:sts::137918634953xxxx:assumed-role/aliyunossdrsrole/*" // ソースバケットが属するアカウントの UID と RAM ロールの名前を指定します。 ], "Resource":[ "acs:oss:*:111933544165xxxx:dest-bucket", // デスティネーションバケットが属するアカウントの UID とデスティネーションバケットの名前を指定します。 "acs:oss:*:111933544165xxxx:dest-bucket/*" // デスティネーションバケットが属するアカウントの UID とデスティネーションバケットの名前を指定します。 ] } ] }
[保存] をクリックします。表示されるメッセージで、「OK」をクリックします。
SSE-KMS を使用して暗号化されたオブジェクトをレプリケートする
SSE-KMS を使用して暗号化されたオブジェクトは、中国 (杭州)、中国 (上海)、中国 (深圳)、中国 (河源)、中国 (広州)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (フフホト)、中国 (ウランチャブ)、中国 (成都)、中国東部 2 金融、中国 (香港)、シンガポール、マレーシア (クアラルンプール)、インドネシア (ジャカルタ)、フィリピン (マニラ)、タイ (バンコク)、日本 (東京)、米国 (シリコンバレー)、米国 (バージニア)、ドイツ (フランクフルト)、英国 (ロンドン) のリージョンにあるバケットにレプリケートできます。
アカウント A に属するソースバケットからアカウント B に属するデスティネーションバケットに SSE-KMS を使用して暗号化されたオブジェクトをコピーする場合、アカウント B を使用して次の手順を実行します。
KMS コンソールにログインします。左側のナビゲーションウィンドウで、[リソース] > [インスタンス] を選択します。インスタンス ページで、デスティネーションバケットと同じリージョンに KMS インスタンスを作成して有効にします。KMS インスタンスを作成するときは、[VPC の数] パラメーターの値が 2 以上であることを確認してください。その他のパラメーターについてはデフォルト設定を保持します。詳細については、「KMS インスタンスを購入して有効にする」をご参照ください。
KMS インスタンスにキーを作成します。キタイプをデフォルトにすることはできません。ソフトウェアキーを使用することをお勧めします。詳細については、「キーを管理する」をご参照ください。
説明キーを作成したら、後続のレプリケーションルール構成のために [基本情報] セクションにキーの ARN を記録します。
キーのポリシーを構成します。キーポリシーを構成するときは、[アカウント間のユーザー] を 前の手順 で作成したロールの ARN に設定します。詳細については、「キーポリシーを構成する」をご参照ください。
重要アカウント間で SSE-KMS で暗号化されたオブジェクトをレプリケートするには、キーポリシーに少なくとも
kms:Decrypt
およびkms:GenerateDataKey
の権限が必要です。KMS コンソールでキーポリシーを構成すると、上記の権限がデフォルトで追加されます。API 操作を呼び出してカスタムキーポリシーを構成する場合は、ポリシーに少なくともkms:Decrypt
およびkms:GenerateDataKey
の権限があることを確認してください。