跨帳號同地區複製是指將帳號A某個地區下源儲存空間(Bucket)的檔案(Object)的建立、更新和刪除等操作自動、非同步(近即時)地複製到帳號B相同地區下的目標Bucket。本文介紹如何進行跨帳號同地區複製。
前提條件
已在帳號A下的某個地區建立Bucket A作為同地區複製的源Bucket,並記錄帳號A的UID、Bucket A的名稱及所在地區。
已在帳號B下的相同地區建立Bucket B作為同地區複製的目標Bucket,並記錄帳號B的UID、Bucket B的名稱。
角色授權
跨帳號複製任務涉及兩個不同帳號的Bucket,您需要按照以下說明完成RAM角色所需的信任策略和最小權限原則。
通過帳號A完成以下操作。
建立普通服務角色。
重要您可以選擇通過RAM使用者建立角色,RAM使用者必須擁有以下許可權:
ram:CreateRole
、ram:GetRole
、ram:ListPoliciesForRole
、ram:AttachPolicyToRole
。但是考慮到授予RAM使用者ram:CreateRole
、ram:GetRole
等角色相關的許可權風險較大,您可以通過RAM使用者關聯的阿里雲帳號建立RAM角色並為相應的RAM角色完成授權。授權完成後,RAM使用者可以直接複用阿里雲帳號建立的RAM角色。建立角色過程中,需選擇可信實體類型為阿里雲服務,角色類型選擇普通服務角色,受信服務選擇Object Storage Service。具體步驟,請參見建立普通服務角色。
說明角色建立成功後,請記錄基本資料地區的RAM角色ARN,以便後續添加許可權時使用。
為角色授予源Bucket執行跨地區複製的許可權。
您可以選擇以下任意方式為角色授權。
為RAM角色授予系統策略
警告您可以選擇為RAM角色授予系統策略
AliyunOSSFullAccess
。AliyunOSSFullAccess
預設擁有當前帳號下所有Bucket的所有操作許可權,請謹慎使用。為RAM角色授予自訂策略
通過RAM Policy的方式對RAM角色授予源Bucket(src-bucket)複製所需的最小許可權。
說明實際使用時,請相應替換源Bucket名稱。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource":[ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] } ] }
如果您希望將KMS加密的Object複製到目標Bucket,您還需要為角色授予
AliyunKMSFullAccess
系統策略。具體步驟,請參見為RAM角色授權。
通過帳號B授予角色在目標Bucket接收複製對象的許可權。
(推薦)方式一:按圖形策略添加
方式二:按文法策略添加
在左側導覽列,選擇許可權控制>Bucket 授權策略。
在Bucket 授權策略頁面的按文法策略添加頁簽,單擊編輯。
在文法策略輸入框中,輸入以下Bucket Policy。
重要通過Bucket Policy按文法策略的方式進行授權時,新添加的策略會覆蓋已有的策略,請確保新添加策略包含已有策略的內容,否則可能導致關聯已有策略的操作失敗。
實際使用時,請相應替換自訂角色名稱(如果自訂角色名稱包含大寫字母,需轉換為對應的小寫字母。例如已建立的角色名稱為AliyunOssDrsRole,您需要轉換為aliyunossdrsrole)、目標Bucket名稱(dest-bucket)、源Bucket所屬帳號UID(137918634953xxxx)以及目標Bucket所屬帳號UID(111933544165xxxx)。UID必須填寫阿里雲帳號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加密的Object
支援複製KMS加密的Object到以下目標地區:華東1(杭州)、華東2(上海)、華南1(深圳)、華南2(河源)、華南3(廣州)、華北1(青島)、華北2(北京)、華北3(張家口)、華北5(呼和浩特)、華北6(烏蘭察布)、西南1(成都)、華東2(上海金融雲)、中國香港、新加坡、馬來西亞(吉隆坡)、印尼(雅加達)、菲律賓(馬尼拉)、泰國(曼穀)、日本(東京)、美國(矽谷)、美國(維吉尼亞)、德國(法蘭克福)、英國(倫敦)。
如果您希望將帳號A下源Bucket中KMS加密的Object複製到帳號B下的目標Bucket,您需要使用目標Bucket所屬帳號B執行以下步驟。
登入Key Management Service控制台的執行個體管理頁面,在與目標Bucket相同的地區購買並啟用KMS執行個體。購買KMS執行個體時,確保訪問管理數量大於等於2,其他參數保留預設配置。具體步驟,請參見購買和啟用KMS執行個體。
說明跨帳號複製KMS加密的Object依賴於Key Management Service,支援的地區受限於Key Management Service。關於Key Management Service支援的地區,請參見軟體密鑰管理支援的地區和接入地址。
在KMS執行個體下建立密鑰。密鑰類型限制為非預設密鑰(建議軟體密鑰)。具體步驟,請參見建立軟體密鑰。
說明密鑰建立成功後,請記錄基本資料地區的密鑰ARN,以便後續建立複製規則時使用。
為建立的密鑰設定密鑰策略。設定密鑰策略時,選擇其他帳號使用者,並將其他帳號使用者指定為上述步驟建立的角色ARN。具體步驟,請參見設定密鑰策略。
重要跨帳號複製KMS加密資料要求密鑰策略至少包含解密(
kms:Decrypt
)和產生資料密鑰(kms:GenerateDataKey
)的許可權。通過控制台設定密鑰策略時,預設包含這些許可權。如果通過OpenAPI設定自訂密鑰策略,需要確保至少包含kms:Decrypt
和kms:GenerateDataKey
許可權。