資料複製許可權有同帳號複製與跨帳號複製兩種使用情境。對於同帳號與跨帳號複製,您必須授予RAM角色相應的複製許可權,否則無法完成複製任務。
注意事項
每一種複製操作對應著一種複製許可權。OSS需要通過扮演您建立的RAM角色來擷取複製許可權,從而執行資料複製所需的操作。
由於RAM角色權限原則中指定的Resource僅作用於其當前帳號下所擁有的資源,因此同帳號複製與跨帳號複製所需的RAM角色權限原則存在差異,具體說明如下:
在同帳號複製情境下,源Bucket和目標Bucket均為同一帳號下的資源。因此,您可以為該帳號下的RAM角色授予源和目標bucket的複製許可權。
在跨帳號複製情境下,源Bucket和目標Bucket是兩個不同帳號下的資源。因此,您需要在源Bucket所屬帳號A下,通過RAM Policy的方式對RAM角色完成授權操作。此外,還需要在目標Bucket所屬帳號B下,通過Bucket Policy的方式對帳號A的RAM角色完成授權操作。
同帳號複製任務的RAM角色許可權說明
同帳號複製任務的RAM角色所需的信任策略和最小許可權說明如下:
RAM角色所需的信任策略
以下信任策略用於添加阿里雲Object Storage Service服務OSS為可信實體,並授權OSS可以扮演RAM角色來複製資料。
{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "oss.aliyuncs.com" ] } } ], "Version": "1" }
RAM角色所需的最小權限原則
通過RAM Policy為RAM角色授予源Bucket(src-bucket)和目標Bucket(dest-bucket)複製所需的最小許可權。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource":[ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] }, { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet", "oss:ReplicatePut", "oss:ReplicateDelete" ], "Resource":[ "acs:oss:*:*:dest-bucket", "acs:oss:*:*:dest-bucket/*" ] } ] }
以下權限原則中涉及的Action說明如下:
Action
說明
oss:ReplicateList
複製過程涉及的列舉許可權。即允許OSS先列舉源Bucket的歷史資料,再逐一對歷史資料進行複製。
oss:ReplicateGet
複製過程涉及的讀許可權。即允許OSS讀取源Bucket和目標Bucket中的資料與中繼資料,包括Object、Part、Multipart Upload等。
oss:ReplicatePut
複製過程涉及的寫入權限。即允許OSS對目標Bucket複製相關的寫入類操作,包括寫入Object、Multipart Upload、Part和Symlink,修改中繼資料資訊等。
oss:ReplicateDelete
複製過程涉及的刪除許可權。即允許OSS對目標Bucket複製相關的刪除操作,包括DeleteObject、AbortMultipartUpload、DeleteMarker等。
重要僅當資料複製方式選擇增/刪/改 同步時,需要授予RAM角色該Action。
跨帳號複製任務的RAM角色許可權說明
跨帳號複製任務涉及兩個不同帳號的Bucket,您需要按照以下說明完成RAM角色所需的信任策略和最小權限原則。
源Bucket所屬帳號A需要完成的RAM角色授權操作
RAM角色所需的信任策略
跨帳號複製任務的RAM角色所需的信任策略與同帳號情境相同。您需要通過源Bucket所屬帳號A授予角色所需的信任策略。更多資訊,請參見RAM角色所需的信任策略。
RAM角色所需的最小權限原則
不同帳號複製任務涉及Action對應的許可權說明,請參見Action說明。
在源Bucket所屬帳號A下,通過RAM Policy的方式對RAM角色授予源Bucket複製所需的最小許可權。
{ "Version":"1", "Statement":[ { "Effect":"Allow", "Action":[ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource":[ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] } ] }
目標Bucket所屬帳號B需要完成的RAM角色授權操作
在目標Bucket所屬帳號B下,通過Bucket Policy的方式對帳號A的RAM角色授予複製所需的最小許可權。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ReplicateList",
"oss:ReplicateGet",
"oss:ReplicatePut",
"oss:ReplicateDelete"
],
"Principal": [
"arn:sts::src-uid:assumed-role/role-name/*"
],
"Resource": [
"acs:oss:*:dest-uid:dest-bucket",
"acs:oss:*:dest-uid:dest-bucket/*"
]
}
]
}
以上Policy中涉及的配置項說明如下:
配置項 | 說明 |
src-uid | 源Bucket歸屬帳號的UID。 |
role-name | 源Bucket歸屬帳號建立的RAM角色名稱。 |
dest-uid | 目標Bucket歸屬帳號的UID。 |
dest-bucket | 目標Bucket名稱。 |