Storage Transfer Service dapat menggunakan bucket sumber Cloud Storage dalam dua jenis transfer:
Transfer tanpa agen: Transfer cloud-ke-cloud seperti Cloud Storage ke Cloud Storage, Cloud Storage ke AWS S3, atau Cloud Storage ke Azure Blob Storage. Izin diberikan ke agen layanan Storage Transfer Service.
Transfer berbasis agen: Transfer yang melibatkan sistem file atau penyimpanan lokal yang menggunakan agen transfer dan kumpulan agen. Izin harus diberikan kepada agen layanan dan akun agen transfer.
Memberikan izin secara otomatis di konsol Google Cloud
Jika Anda menggunakan konsol Google Cloud untuk membuat transfer tanpa agen dan memiliki izin pengguna yang diperlukan, agen layanan akan otomatis diberi izin yang diperlukan di bucket sumber Anda.
Anda dapat melewati langkah-langkah di halaman ini. Jika diperlukan, konfigurasikan akses ke tujuan Anda, lalu buat transfer.
Prasyarat
Izin akun pengguna: Untuk memberikan peran IAM yang diperlukan yang tercantum di halaman ini, akun pengguna (atau akun layanan terkelola pengguna) Anda harus memiliki izin untuk mengubah kebijakan IAM di bucket sumber dan project kumpulan agen. Untuk mengetahui detail tentang persyaratan akun pengguna, lihat Izin akun pengguna.
Izin project transfer berbasis agen: Untuk transfer berbasis agen, pastikan Anda telah mengonfigurasi peran level project yang diperlukan untuk agen layanan dan akun agen transfer. Lihat Izin level project berbasis agen.
Menemukan email agen layanan
Agen layanan dibuat
secara otomatis saat Anda pertama kali membuat tugas transfer, menjalankan perintah penyiapan gcloud transfer,
mengunjungi halaman Storage Transfer di
konsolGoogle Cloud , atau memanggil
googleServiceAccounts.get.
Untuk mendapatkan email agen layanan, yang digunakan untuk mengidentifikasinya dalam perintah Storage Transfer Service:
- Buka halaman referensi
googleServiceAccounts.get. Panel interaktif akan terbuka, berjudul Try this method. - Di panel, di bagian Request parameters, masukkan project ID Anda.
- Klik Jalankan.
Salin nilai accountEmail. Formatnya adalah:
project-PROJECT_NUMBER@storage-transfer-service..
Memberikan izin yang diperlukan
Pilih jenis transfer Anda untuk melihat langkah-langkah pemberian akses.
Transfer tanpa agen
Peran yang telah ditetapkan berikut memberikan izin yang diperlukan pada bucket sumber kepada agen layanan:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Ditambah salah satu dari berikut ini:
- Storage Object Viewer (
roles/storage.objectViewer) jika objek sumber dipertahankan. - Storage Object User (
roles/storage.objectUser) jika menghapus objek sumber setelah transfer (deleteObjectsFromSourceAfterTransfer). - Storage Object Admin (
roles/storage.objectAdmin) jika mempertahankan ACL objek (ACL_PRESERVE). Juga mendukung penghapusan objek sumber setelah transfer.
- Storage Object Viewer (
Tambahkan agen layanan ke kebijakan IAM bucket sumber:
Konsol
- Di konsol Google Cloud , buka halaman Buckets Cloud Storage.
- Klik menu Bucket overflow () untuk bucket sumber.
- Pilih Edit akses.
- Klik + Add principal.
- Di New principals, masukkan email agen layanan Anda.
- Pilih
Storage Legacy Bucket Readerdari menu drop-down Select a role. - Klik Add another role dan pilih salah satu opsi berikut:
Storage Object ViewerStorage Object UserStorage Object Admin
- Klik Simpan.
gcloud
Jalankan perintah gcloud storage berikut:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.OBJECT_ROLE
Ganti:
- BUCKET_NAME: Nama bucket sumber Anda.
- SERVICE_AGENT_EMAIL: Email agen layanan.
- OBJECT_ROLE: Pilih salah satu opsi berikut berdasarkan opsi transfer Anda:
objectViewer: Jika mempertahankan objek sumber.objectUser: Jika menghapus objek sumber setelah transfer.objectAdmin: Jika mempertahankan ACL objek. Juga mendukung penghapusan objek sumber setelah transfer.
REST API
Buat token akses untuk mengautentikasi permintaan Anda. Jika Anda menggunakan
gcloudCLI, jalankan:gcloud auth print-access-token
Ambil kebijakan IAM bucket yang ada (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), tambahkan binding berikut ke arraybindings-nya, dan simpan kebijakan yang digabungkan sebagaisource_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Ganti:
- SERVICE_AGENT_EMAIL: Email agen layanan.
- OBJECT_ROLE: Pilih
objectViewerjika mempertahankan objek sumber,objectUserjika menghapus objek sumber, atauobjectAdminjika mempertahankan ACL objek.
Kirim permintaan
PUTmenggunakancurl:curl -X PUT --data-binary @source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"
Ganti:
- OAUTH2_TOKEN: Token akses OAuth 2.0 yang dibuat di langkah 1.
- BUCKET_NAME: Nama bucket sumber Anda.
Transfer berbasis agen
Peran yang telah ditetapkan berikut memberikan akses yang diperlukan pada bucket sumber ke agen layanan:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Storage Object Creator (
roles/storage.objectCreator)
Peran berikut memberikan akses yang diperlukan pada bucket sumber ke akun agen transfer:
- Storage Object Viewer (
roles/storage.objectViewer) jika mempertahankan objek sumber, atau Storage Object User (roles/storage.objectUser) jika menghapus objek sumber setelah transfer.
Berikan peran ini pada bucket sumber.
Konsol
- Di konsol Google Cloud , buka halaman Buckets Cloud Storage.
- Klik menu Bucket overflow () untuk bucket sumber, lalu pilih Edit access.
- Klik + Add principal.
- Di New principals, masukkan email agen layanan Anda.
- Pilih
Storage Legacy Bucket ReaderdanStorage Object Creatordari menu drop-down Select a role. - Klik + Add principal lagi.
- Masukkan email akun agen transfer Anda. Ini adalah akun pengguna atau
layanan yang digunakan saat menginstal agen transfer. Misalnya,
my-agent-sa@PROJECT_ID.atauuser@example.com. - Pilih
Storage Object Viewerjika mempertahankan objek sumber, atauStorage Object Userjika menghapus objek sumber setelah transfer. - Klik Simpan.
gcloud
Berikan peran baca metadata bucket dan tulis log transfer ke agen layanan:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReadergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorBerikan peran akses objek ke akun agen transfer:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.OBJECT_ROLEGanti:
- BUCKET_NAME: Nama bucket sumber Anda.
- SERVICE_AGENT_EMAIL: Email agen layanan.
- serviceAccount_OR_user: Tentukan
serviceAccountjika akun agen transfer Anda adalah akun layanan, atauuserjika agen Anda diinstal dengan akun pengguna. - TRANSFER_AGENT_ACCOUNT: Email akun yang menginstal agen transfer Anda. Misalnya,
my-agent-sa@PROJECT_ID.atauuser@example.com. - OBJECT_ROLE: Tentukan
objectViewerjika mempertahankan objek sumber, atauobjectUserjika menghapus objek sumber setelah transfer.
REST API
Buat token akses untuk mengautentikasi permintaan Anda. Jika Anda menggunakan
gcloudCLI, jalankan:gcloud auth print-access-token
Ambil kebijakan IAM bucket yang ada (
GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), tambahkan binding berikut ke arraybindings-nya, dan simpan kebijakan yang digabungkan sebagaiagent_source_policy.json:{ "bindings": [ { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT"] } ] }
Ganti:
- SERVICE_AGENT_EMAIL: Email agen layanan.
- serviceAccount_OR_user: Tentukan
serviceAccountjika akun agen transfer Anda adalah akun layanan, atauuserjika agen Anda diinstal dengan akun pengguna. - TRANSFER_AGENT_ACCOUNT: Email akun yang menginstal agen transfer Anda. Misalnya,
my-agent-sa@PROJECT_ID.atauuser@example.com. - OBJECT_ROLE: Tentukan
objectViewerjika mempertahankan objek sumber, atauobjectUserjika menghapus objek sumber setelah transfer.
Perbarui kebijakan bucket melalui
curl:curl -X PUT --data-binary @agent_source_policy.json \ -H "Authorization: Bearer OAUTH2_TOKEN" \ -H "Content-Type: application/json" \ "https://storage./storage/v1/b/BUCKET_NAME/iam"Ganti:
- OAUTH2_TOKEN: Token akses OAuth 2.0 yang dibuat di langkah 1.
- BUCKET_NAME: Nama bucket sumber Anda.
Transfer Cloud Storage lintas project
Untuk mentransfer objek antar-bucket Cloud Storage di project Google Cloud yang berbeda, Anda harus memberikan izin kepada agen layanan project yang membuat transfer di bucket sumber dan bucket tujuan.
Akun pengguna atau akun layanan terkelola pengguna yang membuat transfer hanya memerlukan izin pada project tempat tugas transfer dibuat.
Untuk memberikan peran bagi transfer lintas project:
- Dapatkan email agen layanan untuk project yang akan menjalankan transfer. Lihat Menemukan email agen layanan.
- Di bucket sumber, berikan peran berikut kepada agen layanan tersebut:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Ditambah salah satu peran objek berikut:
- Storage Object Viewer (
roles/storage.objectViewer) jika mempertahankan objek sumber. - Storage Object User (
roles/storage.objectUser) jika menghapus objek sumber setelah transfer (deleteObjectsFromSourceAfterTransfer). - Storage Object Admin (
roles/storage.objectAdmin) jika mempertahankan ACL objek (ACL_PRESERVE). Juga mendukung penghapusan objek sumber setelah transfer.
- Storage Object Viewer (
- Storage Legacy Bucket Reader (
- Di bucket tujuan, berikan peran berikut ke agen layanan yang sama:
- Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader) - Storage Object User (
roles/storage.objectUser), atau Storage Object Admin (roles/storage.objectAdmin) jika mempertahankan ACL objek (ACL_PRESERVE).
- Storage Legacy Bucket Reader (
Untuk petunjuk langkah demi langkah tentang cara memberikan akses bucket tujuan, lihat Mengonfigurasi akses ke sink: Cloud Storage.
Pembatasan organisasi
Jika organisasi Anda telah menerapkan batasan Kebijakan Organisasi, pastikan batasan tersebut mengizinkan akses agen layanan lintas project:
- Berbagi yang dibatasi domain (
constraints/iam.allowedPolicyMemberDomains): Kebijakan pada project yang menghosting bucket harus mengizinkan domain anggota yang berisi agen layanan. Lihat Membatasi domain. - Menonaktifkan penggunaan akun layanan lintas project (
constraints/iam.disableCrossProjectServiceAccountUsage): Pastikan batasan ini tidak memblokir akses akun layanan lintas project. Lihat Membatasi akun layanan. - Kontrol Layanan VPC: Jika bucket termasuk dalam perimeter layanan yang berbeda, konfigurasikan aturan ingress dan egress untuk mengizinkan komunikasi transfer. Lihat Mengonfigurasi Kontrol Layanan VPC untuk transfer penyimpanan objek cloud.
Referensi izin terperinci
Pilih jenis transfer Anda untuk melihat peran dan izin yang diperlukan.
Transfer tanpa agen
Untuk transfer tanpa agen, izin harus diberikan kepada agen layanan Storage Transfer Service:
| Izin | Deskripsi |
|---|---|
storage.buckets.get |
Memungkinkan agen layanan mendapatkan lokasi bucket. |
storage.objects.list |
Mengizinkan agen layanan mencantumkan objek dalam bucket. |
storage.objects.get |
Mengizinkan agen layanan membaca objek di bucket. |
storage.objects.delete |
Mengizinkan agen layanan menghapus objek di bucket. Wajib jika deleteObjectsFromSourceAfterTransfer adalah true. |
storage.objects.getIamPolicy |
Memungkinkan pembacaan ACL pada objek sumber. Wajib jika pelestarian ACL objek (ACL_PRESERVE) diaktifkan. |
storage.folders.liststorage.folders.get |
Memungkinkan pencantuman dan pembacaan folder. Diperlukan saat mentransfer dari bucket dengan namespace hierarkis yang diaktifkan. |
Transfer berbasis agen
Untuk transfer berbasis agen dari sumber Cloud Storage, izin dibagi antara dua akun utama:
Agen layanan: Memerlukan akses baca tingkat bucket untuk me-resolve metadata dan lokasi bucket, serta akses pembuatan objek untuk menulis log transfer agen.
Akun agen transfer: Akun layanan atau akun pengguna yang digunakan untuk membuat agen transfer.
Izin agen layanan
| Izin | Deskripsi |
|---|---|
storage.buckets.get |
Memungkinkan agen layanan memeriksa metadata dan lokasi bucket. |
storage.objects.create |
Memungkinkan agen layanan menulis log transfer agen ke bucket sumber saat mentransfer dari Cloud Storage ke sistem file. |
Izin akun agen transfer
| Izin | Deskripsi |
|---|---|
storage.objects.list |
Mengizinkan agen mencantumkan objek di bucket sumber. |
storage.objects.get |
Memungkinkan agen membaca objek dari bucket sumber. |
storage.objects.delete |
Mengizinkan agen menghapus objek sumber jika
deleteObjectsFromSourceAfterTransfer diaktifkan. |
storage.folders.liststorage.folders.get |
Mengizinkan agen mencantumkan dan membaca folder saat mentransfer dari bucket dengan namespace hierarkis yang diaktifkan. |
Langkah berikutnya
Anda harus mengonfigurasi akses ke tujuan: