Mengonfigurasi akses ke sumber: Cloud Storage

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:

  1. Buka halaman referensi googleServiceAccounts.get. Panel interaktif akan terbuka, berjudul Try this method.
  2. Di panel, di bagian Request parameters, masukkan project ID Anda.
  3. 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.

Tambahkan agen layanan ke kebijakan IAM bucket sumber:

Konsol

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Klik menu Bucket overflow () untuk bucket sumber.
  3. Pilih Edit akses.
  4. Klik + Add principal.
  5. Di New principals, masukkan email agen layanan Anda.
  6. Pilih Storage Legacy Bucket Reader dari menu drop-down Select a role.
  7. Klik Add another role dan pilih salah satu opsi berikut:
    • Storage Object Viewer
    • Storage Object User
    • Storage Object Admin
  8. 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

  1. Buat token akses untuk mengautentikasi permintaan Anda. Jika Anda menggunakan gcloud CLI, jalankan:

    gcloud auth print-access-token
  2. Ambil kebijakan IAM bucket yang ada (GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), tambahkan binding berikut ke array bindings-nya, dan simpan kebijakan yang digabungkan sebagai source_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 objectViewer jika mempertahankan objek sumber, objectUser jika menghapus objek sumber, atau objectAdmin jika mempertahankan ACL objek.
  3. Kirim permintaan PUT menggunakan curl:

    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

  1. Di konsol Google Cloud , buka halaman Buckets Cloud Storage.

    Buka Buckets

  2. Klik menu Bucket overflow () untuk bucket sumber, lalu pilih Edit access.
  3. Klik + Add principal.
  4. Di New principals, masukkan email agen layanan Anda.
  5. Pilih Storage Legacy Bucket Reader dan Storage Object Creator dari menu drop-down Select a role.
  6. Klik + Add principal lagi.
  7. Masukkan email akun agen transfer Anda. Ini adalah akun pengguna atau layanan yang digunakan saat menginstal agen transfer. Misalnya, my-agent-sa@PROJECT_ID. atau user@example.com.
  8. Pilih Storage Object Viewer jika mempertahankan objek sumber, atau Storage Object User jika menghapus objek sumber setelah transfer.
  9. Klik Simpan.

gcloud

  1. 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.legacyBucketReader
    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
        --member=serviceAccount:SERVICE_AGENT_EMAIL --role=roles/storage.objectCreator
  2. Berikan 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_ROLE

    Ganti:

    • BUCKET_NAME: Nama bucket sumber Anda.
    • SERVICE_AGENT_EMAIL: Email agen layanan.
    • serviceAccount_OR_user: Tentukan serviceAccount jika akun agen transfer Anda adalah akun layanan, atau user jika agen Anda diinstal dengan akun pengguna.
    • TRANSFER_AGENT_ACCOUNT: Email akun yang menginstal agen transfer Anda. Misalnya, my-agent-sa@PROJECT_ID. atau user@example.com.
    • OBJECT_ROLE: Tentukan objectViewer jika mempertahankan objek sumber, atau objectUser jika menghapus objek sumber setelah transfer.

REST API

  1. Buat token akses untuk mengautentikasi permintaan Anda. Jika Anda menggunakan gcloud CLI, jalankan:

    gcloud auth print-access-token
  2. Ambil kebijakan IAM bucket yang ada (GET https://storage./storage/v1/b/<var>BUCKET_NAME</var>/iam), tambahkan binding berikut ke array bindings-nya, dan simpan kebijakan yang digabungkan sebagai agent_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 serviceAccount jika akun agen transfer Anda adalah akun layanan, atau user jika agen Anda diinstal dengan akun pengguna.
    • TRANSFER_AGENT_ACCOUNT: Email akun yang menginstal agen transfer Anda. Misalnya, my-agent-sa@PROJECT_ID. atau user@example.com.
    • OBJECT_ROLE: Tentukan objectViewer jika mempertahankan objek sumber, atau objectUser jika menghapus objek sumber setelah transfer.
  3. 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:

  1. Dapatkan email agen layanan untuk project yang akan menjalankan transfer. Lihat Menemukan email agen layanan.
  2. 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.
  3. 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).

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.list
storage.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.list
storage.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: