數據復制權限有同賬號復制與跨賬號復制兩種使用場景。對于同賬號與跨賬號復制,您必須授予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角色所需的信任策略
以下信任策略用于添加阿里云對象存儲服務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名稱。 |