Mengonfigurasi akses ke sink: Cloud Storage

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:

  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 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

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

    Buka Buckets

  2. Klik menu Bucket overflow () untuk bucket tujuan.
  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 Storage Object User, atau Storage Object Admin jika mempertahankan ACL objek.
  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.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 objectUser secara default, atau objectAdmin jika mempertahankan ACL objek (ACL_PRESERVE).

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 sink_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 objectUser secara default, atau objectAdmin jika mempertahankan ACL objek (ACL_PRESERVE).
  3. Kirim permintaan PUT menggunakan curl:

    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

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

    Buka Buckets

  2. Klik menu Bucket overflow () untuk bucket tujuan, lalu pilih Edit access.
  3. Klik + Add principal.
  4. Di New principals, masukkan email agen layanan Anda.
  5. Pilih Storage Object Creator, Storage Object Viewer, dan Storage Legacy Bucket Reader 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 User dari menu drop-down Select a role.
  9. Klik Simpan.

gcloud

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

    Ganti:

    • BUCKET_NAME: Nama bucket tujuan 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.

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_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 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.
  3. 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.create
storage.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.create
storage.multipartUploads.abort
storage.multipartUploads.listParts
storage.multipartUploads.list
Memungkinkan agen melakukan upload multibagian untuk file besar. Disertakan secara otomatis di roles/storage.objectUser.
storage.folders.create
storage.folders.get
Mengizinkan agen membuat dan membaca folder saat mentransfer ke bucket tujuan dengan namespace hierarkis yang diaktifkan.

Langkah berikutnya