Izin transfer berbasis agen

Sebelum membuat transfer berbasis agen, Anda harus mengonfigurasi izin untuk entity berikut:

  • Akun pengguna atau akun layanan yang dikelola pengguna yang digunakan untuk membuat transfer. Ini adalah akun yang digunakan untuk login ke konsol Google Cloud, atau akun yang ditentukan saat melakukan autentikasi ke CLI gcloud. Akun pengguna dapat berupa akun pengguna reguler, atau akun layanan yang dikelola pengguna.

  • Akun layanan yang dikelola Google, juga dikenal sebagai agen layanan, yang digunakan oleh Storage Transfer Service. Akun ini umumnya diidentifikasi oleh alamat emailnya, yang menggunakan format project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com.

  • Akun agen transfer yang memberikan izin Google Cloud untuk agen transfer. Akun agen transfer menggunakan kredensial pengguna yang menginstalnya, atau kredensial akun layanan yang dikelola pengguna, untuk melakukan autentikasi.

Untuk mengetahui informasi selengkapnya tentang cara memberikan peran IAM, lihat Memberikan, mengubah, dan mencabut akses ke resource.

Metode termudah untuk memberikan izin

CLI gcloud dapat digunakan untuk memberikan izin yang diperlukan ke akun layanan pengguna / yang dikelola pengguna dan ke akun layanan yang dikelola Google. Izin ini memungkinkan pengguna membuat, mengedit, dan menghapus tugas transfer, serta menetapkan atau mengubah batas bandwidth.

Jika izin ini terlalu luas untuk kebijakan organisasi Anda, lihat bagian selanjutnya dalam dokumen ini untuk mengetahui izin minimum yang diperlukan oleh Storage Transfer Service.

Untuk memeriksa izin yang ada dan mencetak peran yang tidak ada, jalankan perintah berikut:

gcloud transfer authorize

Untuk menerapkan peran tersebut secara otomatis, gunakan flag --add-missing:

gcloud transfer authorize --add-missing

Untuk memberikan izin ke akun layanan yang dikelola pengguna, teruskan file kunci akun layanan:

gcloud transfer authorize --add-missing --creds-file=path/to/key.json

Untuk petunjuk tentang cara membuat akun layanan, lihat Membuat dan mengelola akun layanan.

Perintah ini memberikan izin berikut.

  • Kepada pengguna / akun layanan yang dikelola pengguna:

    • roles/owner
    • roles/storagetransfer.admin
    • roles/storagetransfer.transferAgent
    • roles/storage.objectAdmin
    • roles/pubsub.editor
  • Ke akun layanan yang dikelola Google:

    • roles/storage.admin
    • roles/storagetransfer.serviceAgent

Untuk petunjuk tentang cara menginstal gcloud CLI, lihat panduan memulai gcloud.

Izin pengguna atau akun layanan yang dikelola pengguna

Bagian ini membahas peran yang diperlukan untuk akun yang mengelola dan menjalankan transfer. Persyaratan organisasi Anda akan menentukan peran yang tepat untuk setiap persona; bagian ini mengasumsikan bahwa Anda akan membuat administrator dan pengguna.

Akun administrator

Akun administrator Layanan Transfer Penyimpanan mengelola agen transfer, menetapkan batas penggunaan bandwidth, dan menghapus tugas transfer.

Untuk menyiapkan akun administrator, tetapkan izin dan peran IAM berikut:

Peran / Izin Fungsi Catatan
resourcemanager.projects.getIamPolicy Izin ini digunakan untuk mengonfirmasi bahwa akun layanan yang dikelola Google memiliki izin yang diperlukan untuk transfer. Untuk memberikan izin ini, berikan peran standar Role Viewer (roles/iam.roleViewer), atau buat peran khusus dengan izin tunggal ini dan berikan peran khusus.
Storage Transfer Admin (roles/storagetransfer.admin) Mengaktifkan tindakan administratif dalam project transfer, seperti penyiapan project dan pemantauan agen. Untuk mengetahui daftar mendetail izin yang diberikan, lihat Peran yang telah ditetapkan untuk Layanan Transfer Penyimpanan.

Akun pengguna

Akun pengguna Storage Transfer Service digunakan untuk membuat dan menjalankan transfer. Akun ini biasanya tidak memiliki akses untuk menghapus tugas transfer.

Akun pengguna dapat berupa pengguna konsol Google Cloud, atau akun layanan. Jika Anda menggunakan akun layanan, metode yang Anda gunakan untuk meneruskan kredensial ke Storage Transfer Service bervariasi bergantung pada antarmuka yang Anda gunakan.

Untuk menyiapkan akun pengguna, tetapkan izin dan peran berikut ke akun:

Peran / Izin Fungsi Catatan
resourcemanager.projects.getIamPolicy Digunakan untuk mengonfirmasi bahwa akun layanan yang dikelola Google memiliki izin Pub/Sub yang diperlukan untuk transfer. Untuk memberikan izin ini, berikan peran standar Role Viewer (roles/iam.roleViewer), atau buat peran khusus dengan izin tunggal ini dan berikan peran khusus.
Storage Transfer User (roles/storagetransfer.user) Memungkinkan pengguna membuat, mendapatkan, memperbarui, dan mencantumkan transfer. Untuk mengetahui daftar mendetail izin yang diberikan, lihat Peran yang telah ditetapkan untuk Layanan Transfer Penyimpanan.

Izin akun layanan yang dikelola Google

Storage Transfer Service menggunakan akun layanan yang dikelola Google untuk memindahkan data Anda. Akun layanan ini otomatis dibuat saat pertama kali Anda membuat tugas transfer, memanggil googleServiceAccounts.get, atau membuka halaman pembuatan tugas di konsol Google Cloud.

Format akun layanan biasanya project-PROJECT_NUMBER@storage-transfer-service.iam.gserviceaccount.com. Untuk mengambil ID akun layanan Anda, gunakan panggilan API googleServiceAccounts.get.

Menetapkan peran secara otomatis

Ada dua cara untuk menetapkan peran yang benar secara otomatis ke akun layanan yang dikelola Google:

  • Buat transfer menggunakan konsol Google Cloud. Konsol akan otomatis menerapkan izin yang diperlukan.

  • Menggunakan gcloud transfer authorize --add-missing. Lihat Metode termudah untuk memberikan izin.

Menetapkan peran secara manual

Untuk mengizinkan akun layanan yang dikelola Google mengakses resource yang diperlukan untuk menyelesaikan transfer, tetapkan peran berikut, atau izin yang setara, ke akun layanan.

Peran / Izin Fungsi Catatan
Storage Object Creator (roles/storage.objectCreator) Memungkinkan Storage Transfer Service membuat log transfer di bucket Cloud Storage yang terhubung ke transfer ini. Berikan ke semua bucket Cloud Storage yang digunakan dalam transfer. Jika sesuai dengan situasi Anda, Anda dapat memberikan peran pada level project ke project tempat Layanan Transfer Penyimpanan berjalan.

Untuk mengetahui daftar mendetail tentang izin yang diberikan peran ini, lihat Peran Standar Cloud Storage.
Storage Object Viewer (roles/storage.objectViewer) Memungkinkan Storage Transfer Service menentukan apakah file telah ditransfer ke atau dari Cloud Storage.
Storage Transfer Service Agent (roles/storagetransfer.serviceAgent) Memungkinkan Storage Transfer Service membuat dan mengubah topik Pub/Sub secara otomatis untuk berkomunikasi dari Google Cloud ke agen transfer. Terapkan peran di tingkat project ke project tempat Layanan Transfer Penyimpanan dijalankan.

Untuk mengetahui daftar mendetail izin yang diberikan peran ini, lihat Izin dan peran.
Storage Legacy Bucket Reader (roles/storage.legacyBucketReader) Memungkinkan Storage Transfer Service membaca metadata bucket Cloud Storage.

Berikan ke setiap bucket Cloud Storage yang digunakan dalam transfer.

Peran legacy Cloud Storage hanya dapat diberikan di tingkat bucket.

Lihat Memberikan izin yang diperlukan untuk mengetahui petunjuknya.

Mentransfer izin akun agen

Agen transfer Storage Transfer Service dapat dijalankan dengan akun pengguna, atau dengan akun layanan.

Untuk menyiapkan akun layanan agen transfer atau akun pengguna yang menjalankan agen transfer, tetapkan peran berikut:

Peran / Izin Fungsi Catatan
Storage Transfer Agent (roles/storagetransfer.transferAgent) Memberi agen transfer izin Storage Transfer Service dan Pub/Sub yang diperlukan untuk menyelesaikan transfer. Berikan peran ini kepada pengguna atau akun layanan yang digunakan oleh agen.

Untuk mengetahui daftar mendetail izin yang diberikan peran ini, lihat Kontrol Akses dengan IAM.

Izin sumber dan tujuan

Anda juga harus memastikan bahwa akun agen memiliki izin yang benar untuk mengakses data sumber dan menulis ke tujuan.

Sistem file, penyimpanan yang kompatibel dengan S3, atau HDFS ke Cloud Storage

Jika tujuan transfer Anda adalah bucket Cloud Storage, agen transfer memerlukan izin berikut di bucket tujuan. Lihat Menambahkan akun utama ke kebijakan level bucket untuk mengetahui petunjuknya.

Izin Deskripsi
storage.objects.create Mengizinkan akun agen menulis objek Cloud Storage selama transfer.
storage.objects.get Mengizinkan akun agen membaca data dan metadata objek.
storage.objects.list Memungkinkan akun agen mencantumkan objek di bucket Cloud Storage.
storage.objects.delete Wajib jika transfer Anda dikonfigurasi untuk menimpa atau menghapus objek di sink; misalnya, jika overwriteObjectsAlreadyExistingInSink atau deleteObjectsUniqueInSink ditetapkan dalam konfigurasi transferOptions transfer Anda.

Untuk memberikan izin ini, berikan peran berikut:

Atau, buat peran khusus dengan izin tertentu dan berikan peran khusus tersebut.

Izin tambahan diperlukan untuk mengaktifkan upload multibagian.

Cloud Storage ke sistem file

Jika sumber transfer Anda adalah bucket Cloud Storage, agen transfer memerlukan izin berikut di bucket sumber.

Izin Deskripsi
storage.objects.create Mengizinkan akun agen menulis log transfer dan metadata terkait transfer ke bucket sumber Cloud Storage.
storage.objects.get Mengizinkan akun agen membaca data dan metadata objek.
storage.objects.list Memungkinkan akun agen mencantumkan objek di bucket Cloud Storage.
storage.objects.delete Diperlukan jika transfer Anda dikonfigurasi untuk menghapus objek dari sumber. Lihat deleteObjectsFromSourceAfterTransfer.

Untuk memberikan izin ini, berikan peran berikut:

Atau, buat peran kustom dengan satu izin dan berikan peran kustom.

Sistem file ke sistem file

Jika transfer Anda dilakukan antara dua sistem file, agen transfer memerlukan izin berikut di bucket perantara.

Izin Deskripsi
storage.objects.create Mengizinkan akun agen menulis objek Cloud Storage selama transfer.
storage.objects.get Mengizinkan akun agen membaca data dan metadata objek.
storage.objects.list Memungkinkan akun agen mencantumkan objek di bucket Cloud Storage.
storage.objects.delete Wajib jika transfer Anda dikonfigurasi untuk menghapus objek di bucket perantara setelah transfer selesai.

Untuk memberikan izin ini, berikan peran berikut:

Atau, buat peran khusus dengan izin tertentu dan berikan peran khusus tersebut.

Izin tambahan diperlukan untuk mengaktifkan upload multibagian.

Upload multibagian

Untuk mengaktifkan upload multibagian untuk transfer sistem file ke Cloud Storage atau transfer antarsistem file, berikan juga izin berikut ke agen.

  • Untuk transfer ke Cloud Storage, tetapkan izin ke bucket tujuan.
  • Untuk transfer antarsistem file, tetapkan izin ke bucket perantara.
Nama izin upload multibagian Deskripsi
storage.multipartUploads.create Mengupload objek dalam beberapa bagian.
storage.multipartUploads.abort Membatalkan sesi upload multibagian.
storage.multipartUploads.listParts Membuat daftar bagian objek yang diupload dalam sesi upload multibagian.
storage.multipartUploads.list Membuat daftar sesi upload multibagian dalam bucket.

Untuk memberikan izin ini, berikan peran berikut:

Atau, buat peran khusus dengan izin tertentu dan berikan peran khusus tersebut.