Storage Transfer Service dapat menggunakan bucket tujuan (sink) Cloud Storage dalam dua jenis transfer:
Transfer tanpa agen: Transfer cloud-ke-cloud seperti AWS S3, Azure Blob Storage, atau Cloud Storage ke Cloud Storage. Izin diberikan ke agen layanan Storage Transfer Service.
Transfer berbasis agen: Transfer dari sistem file, HDFS, atau penyimpanan yang kompatibel dengan S3 ke Cloud Storage 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 tujuan Anda.
Anda dapat melewati langkah-langkah di halaman ini. Jika diperlukan, konfigurasikan akses ke sumber 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 tujuan dan project kumpulan agen Anda. 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 bersama-sama memberikan izin yang diperlukan pada bucket tujuan kepada agen layanan:
- 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).
Tambahkan agen layanan ke kebijakan IAM bucket tujuan:
Konsol
- Di konsol Google Cloud , buka halaman Buckets Cloud Storage.
- Klik menu Bucket overflow () untuk bucket tujuan.
- 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
Storage Object User, atauStorage Object Adminjika mempertahankan ACL objek. - 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.OBJECT_ROLE
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReader
Ganti:
- BUCKET_NAME: Nama bucket tujuan Anda.
- SERVICE_AGENT_EMAIL: Email agen layanan.
- OBJECT_ROLE: Tentukan
objectUsersecara default, atauobjectAdminjika mempertahankan ACL objek (ACL_PRESERVE).
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 sebagaisink_policy.json:{ "bindings": [ { "role": "roles/storage.OBJECT_ROLE", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] } ] }
Ganti:
- SERVICE_AGENT_EMAIL: Email agen layanan.
- OBJECT_ROLE: Tentukan
objectUsersecara default, atauobjectAdminjika mempertahankan ACL objek (ACL_PRESERVE).
Kirim permintaan
PUTmenggunakancurl:curl -X PUT --data-binary @sink_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 tujuan Anda.
Transfer berbasis agen
Peran yang telah ditetapkan berikut memberikan akses yang diperlukan pada bucket tujuan ke agen layanan:
- Storage Object Creator (
roles/storage.objectCreator) - Storage Object Viewer (
roles/storage.objectViewer) - Storage Legacy Bucket Reader (
roles/storage.legacyBucketReader)
Peran berikut memberikan akses yang diperlukan pada bucket tujuan ke akun agen transfer:
- Storage Object User (
roles/storage.objectUser)
Berikan peran ini pada bucket tujuan.
Konsol
- Di konsol Google Cloud , buka halaman Buckets Cloud Storage.
- Klik menu Bucket overflow () untuk bucket tujuan, lalu pilih Edit access.
- Klik + Add principal.
- Di New principals, masukkan email agen layanan Anda.
- Pilih
Storage Object Creator,Storage Object Viewer, danStorage Legacy Bucket Readerdari 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 Userdari menu drop-down Select a role. - Klik Simpan.
gcloud
Berikan peran logging dan pelihat ke agen layanan:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreatorgcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectViewergcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.legacyBucketReaderBerikan peran tulis dan pengelolaan ke akun agen transfer:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \ --member=serviceAccount_OR_user:TRANSFER_AGENT_ACCOUNT --role=roles/storage.objectUserGanti:
- BUCKET_NAME: Nama bucket tujuan 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.
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_sink_policy.json:{ "bindings": [ { "role": "roles/storage.objectCreator", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectViewer", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.legacyBucketReader", "members": ["serviceAccount:SERVICE_AGENT_EMAIL"] }, { "role": "roles/storage.objectUser", "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.
Perbarui kebijakan bucket melalui
curl:curl -X PUT --data-binary @agent_sink_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 tujuan Anda.
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 memeriksa metadata dan lokasi bucket. |
storage.objects.create |
Memungkinkan agen layanan menulis objek yang ditransfer ke bucket tujuan. |
storage.objects.get |
Mengizinkan melihat objek dan metadata yang ada. Wajib jika transfer Anda dikonfigurasi untuk menimpa objek di sink jika berbeda atau tidak pernah. |
storage.objects.list |
Memungkinkan pembuatan daftar objek di bucket tujuan. Diperlukan jika memeriksa apakah objek sudah ada di sink. |
storage.objects.delete |
Mengizinkan penghapusan objek di bucket tujuan. Diperlukan jika opsi penimpaan atau penghapusan objek unik diaktifkan. |
storage.objects.setIamPolicy |
Memungkinkan penetapan ACL objek di bucket tujuan. Wajib jika pelestarian ACL objek (ACL_PRESERVE) diaktifkan. |
storage.folders.createstorage.folders.get |
Memungkinkan pembuatan dan pembacaan folder. Diperlukan saat mentransfer ke bucket tujuan dengan namespace hierarkis diaktifkan. |
Transfer berbasis agen
Untuk transfer berbasis agen ke tujuan Cloud Storage, izin dibagi antara dua akun utama:
Agen layanan: Memerlukan izin untuk menulis log transfer dan memverifikasi keberadaan objek di bucket tujuan.
Akun agen transfer: Akun layanan atau akun pengguna yang menjalankan agen transfer yang menulis file ke Cloud Storage.
Izin agen layanan
| Izin | Deskripsi |
|---|---|
storage.buckets.get |
Memungkinkan agen layanan memeriksa metadata dan lokasi bucket. |
storage.objects.create |
Memungkinkan pembuatan log transfer di bucket. |
storage.objects.get |
Memungkinkan pemeriksaan apakah objek telah ditransfer. |
Izin akun agen transfer
| Izin | Deskripsi |
|---|---|
storage.objects.create |
Mengizinkan agen menulis objek ke bucket tujuan selama transfer. |
storage.objects.get |
Memungkinkan agen membaca data dan metadata objek di bucket tujuan. |
storage.objects.list |
Mengizinkan agen mencantumkan objek yang ada di bucket tujuan. |
storage.objects.delete |
Diperlukan jika transfer Anda dikonfigurasi untuk menimpa atau menghapus objek di sink. |
storage.multipartUploads.createstorage.multipartUploads.abortstorage.multipartUploads.listPartsstorage.multipartUploads.list |
Memungkinkan agen melakukan upload multibagian untuk file besar. Disertakan secara otomatis di roles/storage.objectUser. |
storage.folders.createstorage.folders.get |
Mengizinkan agen membuat dan membaca folder saat mentransfer ke bucket tujuan dengan namespace hierarkis yang diaktifkan. |
Langkah berikutnya
- Pelajari cara Mengonfigurasi akses ke sumber.
- Pelajari cara Membuat transfer.
- Tinjau Referensi peran dan izin.