アカウント間のデータ移行とは、異なるAlibaba Cloudアカウントに属するバケット間のデータ移行を指します。このトピックでは、アカウント間のデータ移行のためにResource Access Management (RAM)ロールにポリシーをアタッチする方法について説明します。
前提条件
データオンライン移行コンソールにログオンするために使用するアカウントが、ソースアカウント、デスティネーションアカウント、およびインベントリリストの保存に使用するアカウントと同じである場合は、RAMロールを作成し、必要なポリシーをRAMロールにアタッチします。詳細については、準備トピックの「同じAlibaba Cloudアカウント内でデータを移行する」セクションを参照してください。インベントリリストのタイプには、AWS S3インベントリ、HTTP/HTTPS、およびAlibaba OSSインベントリが含まれます。このトピックでは、Alibaba CloudアカウントであるアカウントDを使用してインベントリリストを保存します。アカウントDがObject Storage Service (OSS)を使用してインベントリリストを保存し、データオンライン移行コンソールにログオンするために使用するアカウントと異なる場合は、「準備」トピックの「Alibaba Cloudアカウント間でデータを移行する」セクションを参照してください。
以下の項目では、このトピックで使用されるアカウントとバケットについて説明します。
Alibaba CloudアカウントであるアカウントAが作成され、データオンライン移行コンソールへのログオン、ソースデータアドレスとデスティネーションデータアドレスの作成、および移行タスクの作成に使用されます。
Alibaba CloudアカウントであるアカウントBが作成されます。アカウントB内のリージョンにバケットBが、アカウント間のデータ移行のソースバケットとして作成されます。アカウントBのUID、バケットBの名前、およびバケットBが存在するリージョンが記録されます。
Alibaba CloudアカウントであるアカウントCが作成されます。アカウントC内のリージョンにバケットCが、アカウント間のデータ移行のデスティネーションバケットとして作成されます。アカウントCのUID、バケットCの名前、およびバケットCが存在するリージョンが記録されます。
Alibaba CloudアカウントであるアカウントDが作成されます。アカウントD内のリージョンにバケットDが、アカウント間のデータ移行のインベントリリストを保存するために作成されます。アカウントDのUID、バケットDの名前、およびバケットDが存在するリージョンが記録されます。
データ移行のためのRAMロールを作成する
Alibaba Cloud アカウントを使用して権限を付与する場合、AccessKey ペアが必要です。データセキュリティを確保するため、最小権限の原則に基づいて RAM ロールを作成し、必要なポリシーを RAM ロールにアタッチすることをお勧めします。
アカウント間でデータを移行するには、必要に応じてアカウント A を使用して、アカウント B 用の RAM ロール Role B、アカウント C 用の RAM ロール Role C、およびアカウント D 用の RAM ロール Role D を作成することをお勧めします。その後、必要なポリシーを RAM ロールにアタッチします。
アカウントAを使用してRAMコンソールにログオンします。
左側のナビゲーションウィンドウで、 を選択します。
[ロール]ページで、ロールの作成をクリックします。
[ロールの作成] ページの [信頼できるエンティティタイプ] セクションで、[Alibaba Cloud サービス] を選択します。[信頼できるエンティティ名] には、[Data Transport] を選択します。
[ロール名] を入力します。ロール名はすべて小文字でなければなりません。
OSS コンソールで RAM ロールに権限を付与する
ポリシーステートメントを指定してバケットポリシーを設定し、RAM ロールに必要な権限を付与する場合、新しいバケットポリシーは既存のバケットポリシーを上書きします。新しいバケットポリシーに既存のバケットポリシーの内容が含まれていることを確認してください。そうしないと、既存のバケットポリシーの権限付与が失敗する可能性があります。必要に応じて、カスタムロール名を、作成したロールの名前に置き換えます。作成したロール名に大文字が含まれている場合は、小文字に変換する必要があります。たとえば、作成したロール名が AliyunSrcRoleA の場合、名前を aliyunsrcrolea に変換する必要があります。
アカウントBを使用してアカウントAのロールBにポリシーをアタッチする
アカウントBでOSSコンソールにログオンし、バケットBの詳細ページに移動します。
左側のナビゲーションウィンドウで、[権限コントロール] > [バケットポリシー] を選択します。
ポリシー構文エディタに次のバケットポリシーを追加します。
カスタムポリシー:
このポリシーは、ソースOSSバケット内のオブジェクトをリストおよび読み取る権限をRAMロールに付与します。
説明次のポリシーコンテンツは参照用です。<mybucket>をバケットBの名前に、<myuid>をアカウントBのUIDに、<uid>をアカウントAのUIDに、<rolename>をロールBの名前に置き換えます。OSSのRAMポリシーの詳細については、RAMポリシーの一般的な例を参照してください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", "oss:Get*" // オブジェクトのリストと取得を許可 ], "Principal": [ "arn:sts::<uid>:assumed-role/<rolename>/*" ], "Resource": [ "acs:oss:*:<myuid>:<mybucket>", "acs:oss:*:<myuid>:<mybucket>/*" ] } ] }
アカウントCを使用してアカウントAのロールCにポリシーをアタッチする
アカウントCでOSSコンソールにログオンし、バケットCの詳細ページに移動します。
左側のナビゲーションウィンドウで、[権限コントロール] > [バケットポリシー] を選択します。
バケットポリシーに次の文を追加します。
カスタムポリシー:
このポリシーは、デスティネーションOSSバケット内のオブジェクトをリスト、読み取り、削除、および書き込む権限をRAMロールに付与します。
説明次のポリシーコンテンツは参照用です。<mybucket>をバケットCの名前に、<myuid>をアカウントCのUIDに、<uid>をアカウントAのUIDに、<rolename>をロールCの名前に置き換えます。OSSのRAMポリシーの詳細については、RAMポリシーの一般的な例を参照してください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", // オブジェクトのリストを許可 "oss:Get*", // オブジェクトの取得を許可 "oss:Put*", // オブジェクトの配置を許可 "oss:AbortMultipartUpload" // マルチパートアップロードの中止を許可 ], "Principal": [ "arn:sts::<uid>:assumed-role/<rolename>/*" ], "Resource": [ "acs:oss:*:<myuid>:<mybucket>", "acs:oss:*:<myuid>:<mybucket>/*" ] } ] }
アカウントDを使用してアカウントAのロールDにポリシーをアタッチする
アカウントDでOSSコンソールにログオンし、バケットDの詳細ページに移動します。
左側のナビゲーションウィンドウで、[権限コントロール] > [バケットポリシー] を選択します。
[構文で追加]タブをクリックします。コードエディターで、次のポリシーコンテンツを追加します。
カスタムポリシー:
このポリシーは、インベントリリストが存在するバケット内のオブジェクトをリストおよび読み取る権限をRAMロールに付与します。
説明次のポリシーコンテンツは参照用です。<mybucket>をバケットDの名前に、<myuid>をアカウントDのUIDに、<uid>をアカウントAのUIDに、<rolename>をロールDの名前に置き換えます。OSSのRAMポリシーの詳細については、RAMポリシーの一般的な例を参照してください。
{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:List*", // オブジェクトのリストを許可 "oss:Get*" // オブジェクトの取得を許可 ], "Principal": [ "arn:sts::<uid>:assumed-role/<rolename>/*" ], "Resource": [ "acs:oss:*:<myuid>:<mybucket>", "acs:oss:*:<myuid>:<mybucket>/*" ] } ] }