OSS mengasumsikan role Resource Access Management (RAM) untuk mereplikasi data antar bucket. Izin yang Anda sambungkan ke role tersebut berbeda tergantung pada apakah bucket sumber dan tujuan berada dalam Akun Alibaba Cloud yang sama atau berbeda.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Role RAM dengan OSS (
oss.aliyuncs.com) sebagai entitas tepercayaAkses ke kedua akun bucket sumber dan tujuan (untuk replikasi lintas akun, akses ke Akun A dan Akun B)
Cara kerja
Setiap tugas replikasi memerlukan OSS untuk mengasumsikan role RAM yang Anda buat. Role tersebut harus memiliki dua jenis kebijakan:
Trust policy — mengotorisasi OSS untuk mengasumsikan role tersebut
Permission policy — memberikan aksi minimum yang diperlukan pada bucket sumber dan tujuan
Karena bidang Resource dalam kebijakan RAM hanya dapat mereferensikan resource dalam Akun Alibaba Cloud yang sama, struktur kebijakan berbeda antara replikasi dalam akun yang sama dan lintas akun:
| Skenario | Pengaturan sisi sumber | Pengaturan sisi tujuan |
|---|---|---|
| Same-account | Kebijakan RAM pada role (mencakup kedua bucket) | — |
| Cross-account | Kebijakan RAM pada role Akun A (hanya bucket sumber) | Kebijakan bucket pada bucket tujuan di Akun B |
Menyiapkan izin untuk replikasi dalam akun yang sama
Trust policy
Sambungkan trust policy berikut ke role RAM. Kebijakan ini mengotorisasi OSS untuk mengasumsikan role tersebut.
{
"Statement": [
{
"Action": "sts:AssumeRole",
"Effect": "Allow",
"Principal": {
"Service": [
"oss.aliyuncs.com"
]
}
}
],
"Version": "1"
}Permission policy
Sambungkan kebijakan RAM berikut ke role tersebut. Kebijakan ini memberikan aksi minimum yang diperlukan pada bucket sumber dan tujuan.
{
"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/*"
]
}
]
}Ganti src-bucket dan dest-bucket dengan nama bucket aktual Anda.
Referensi aksi
| Action | Lingkup | Deskripsi |
|---|---|---|
oss:ReplicateList | Bucket sumber dan tujuan | Mencantumkan objek historis di bucket sumber agar OSS dapat mereplikasikannya ke tujuan |
oss:ReplicateGet | Bucket sumber dan tujuan | Membaca objek, bagian, task unggah multi-bagian, dan metadata objek |
oss:ReplicatePut | Bucket tujuan | Menulis objek, bagian, task unggah multi-bagian, tautan simbolik, dan metadata objek ke tujuan |
oss:ReplicateDelete | Bucket tujuan | Melakukan operasi DeleteObject, AbortMultipartUpload, dan DeleteMarker pada tujuan |
oss:ReplicateDelete hanya diperlukan jika Anda mengatur Replication Policy ke Add/Delete/Change.
Menyiapkan izin untuk replikasi lintas akun
Replikasi lintas akun melibatkan Akun A (bucket sumber) dan Akun B (bucket tujuan). Pengaturannya mirip dengan replikasi dalam akun yang sama, dengan dua perbedaan:
Kebijakan RAM Akun A hanya mencakup bucket sumber, bukan bucket tujuan.
Akun B harus menambahkan kebijakan bucket yang memberikan akses role RAM Akun A ke bucket tujuan.
Langkah 1: Sambungkan kebijakan ke RAM role Akun A
Kebijakan kepercayaan — identik dengan kebijakan kepercayaan pada akun yang sama. Lampirkan ke Peran RAM di Akun A.
Permission policy — memberikan izin minimum pada role Akun A hanya untuk bucket sumber.
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"oss:ReplicateList",
"oss:ReplicateGet"
],
"Resource": [
"acs:oss:*:*:src-bucket",
"acs:oss:*:*:src-bucket/*"
]
}
]
}Ganti src-bucket dengan nama bucket sumber aktual Anda.
Langkah 2: Tambahkan kebijakan bucket ke bucket tujuan Akun B
Di Akun B, tambahkan kebijakan bucket berikut ke bucket tujuan. Kebijakan ini memberikan izin kepada role RAM Akun A untuk menulis data yang direplikasi.
{
"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/*"
]
}
]
}Ganti placeholder dengan nilai lingkungan Anda:
| Placeholder | Deskripsi |
|---|---|
src-uid | UID Akun Alibaba Cloud tempat bucket sumber berada |
role-name | Nama RAM role yang dibuat di Akun A |
dest-uid | UID Akun Alibaba Cloud tempat bucket tujuan berada |
dest-bucket | Nama bucket tujuan |
Untuk deskripsi aksi, lihat Referensi aksi.