Sebelum mentransfer data dari bucket Azure Storage, Anda harus mengonfigurasi akses ke bucket tersebut agar Storage Transfer Service dapat mengambil objeknya.
Storage Transfer Service mendukung metode autentikasi Azure berikut:
Token tanda tangan akses bersama (SAS). Token SAS dapat ditentukan secara langsung saat membuat tugas transfer, atau dapat disimpan di Secret Manager.
Kunci Bersama Azure dapat disimpan di Secret Manager dan secret diteruskan saat membuat tugas transfer.
Kredensial gabungan diteruskan dalam objek
federatedIdentityConfigselama pembuatan tugas transfer.
Dokumen ini juga mencakup informasi tentang cara menambahkan alamat IP pekerja Storage Transfer Service ke firewall Azure Storage Anda untuk mengizinkan akses. Lihat Pembatasan IP untuk mengetahui detailnya.
Region yang didukung
Storage Transfer Service dapat mentransfer data dari region Microsoft Azure Storage berikut:- Amerika: US Timur, US Timur 2, US Barat, US Barat 2, US Barat 3, US Tengah, US Tengah Utara, US Tengah Selatan, US Tengah Barat, Kanada Tengah, Kanada Timur, Brasil Selatan
- Asia Pasifik: Australia Tengah, Australia Timur, Australia Tenggara, India Tengah, India Selatan, India Barat, Asia Tenggara, Asia Timur, Jepang Timur, Jepang Barat, Korea Selatan, Korea Tengah
- Eropa, Timur Tengah, Afrika (EMEA): Prancis Tengah, Jerman Tengah Barat, Norwegia Timur, Swedia Tengah, Swiss Utara, Eropa Utara, Eropa Barat, Inggris Raya Selatan, Inggris Raya Barat, Qatar Tengah, Uni Emirat Arab Utara, Afrika Selatan Utara
Opsi 1: Mengautentikasi menggunakan token SAS
Ikuti langkah-langkah berikut untuk mengonfigurasi akses ke container Microsoft Azure Storage menggunakan token SAS. Atau, Anda dapat menyimpan token SAS di Secret Manager; untuk melakukannya, ikuti petunjuk di Mengautentikasi menggunakan Kunci Bersama Azure atau token SAS di Secret Manager.
Buat atau gunakan pengguna Microsoft Azure Storage yang ada untuk mengakses akun penyimpanan untuk container Blob Microsoft Azure Storage Anda.
Buat token SAS di tingkat penampung. Lihat Memberikan akses terbatas ke resource Azure Storage menggunakan tanda tangan akses bersama untuk mengetahui petunjuknya.
Layanan yang diizinkan harus mencakup Blob.
Untuk Jenis resource yang diizinkan, pilih Container dan Object.
Izin yang diperbolehkan harus mencakup Baca dan Buat daftar. Jika transfer dikonfigurasi untuk menghapus objek dari sumber, Anda juga harus menyertakan izin Hapus.
Waktu habis masa berlaku default untuk token SAS adalah 8 jam. Tetapkan waktu habis masa berlaku yang wajar agar Anda dapat berhasil menyelesaikan transfer.
Jangan tentukan alamat IP apa pun di kolom Alamat IP yang diizinkan. Storage Transfer Service menggunakan berbagai alamat IP dan tidak mendukung pembatasan alamat IP.
Protokol yang diizinkan harus Khusus HTTPS.
Setelah token dibuat, catat nilai token SAS yang ditampilkan. Anda memerlukan nilai ini saat mengonfigurasi transfer dengan Storage Transfer Service.
Opsi 2: Mengautentikasi menggunakan Kunci Bersama Azure atau token SAS di Secret Manager
Secret Manager adalah layanan aman yang menyimpan dan mengelola data sensitif seperti sandi. Secret Manager menggunakan enkripsi yang kuat, role-based access control, dan logging audit untuk melindungi secret Anda.
Storage Transfer Service mendukung nama resource Secret Manager yang mereferensikan kredensial Azure Anda yang disimpan dengan aman.
Untuk menggunakan Kunci Bersama Azure, Anda harus menyimpan kunci di Secret Manager. Token SAS dapat disimpan di Secret Manager atau diteruskan secara langsung.
Saat Anda menentukan Kunci Bersama, Storage Transfer Service akan menggunakan kunci tersebut untuk membuat SAS layanan yang cakupannya dibatasi ke penampung Azure yang ditentukan dalam tugas transfer.
Mengaktifkan API
Aktifkan Secret Manager API, jika belum diaktifkan.
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin serviceusage.services.enable. Jika Anda
membuat project, kemungkinan Anda sudah memiliki izin ini melalui
peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui
peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin).
Pelajari cara memberikan peran.
Mengonfigurasi izin tambahan
Izin pengguna
Pengguna yang membuat secret memerlukan peran berikut:
- Secret Manager Admin (
roles/secretmanager.admin)
Pelajari cara memberikan peran.
Izin agen layanan
Agen layanan Storage Transfer Service memerlukan peran IAM berikut:
- Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor)
Untuk memberikan peran ke agen layanan Anda:
Cloud Console
Ikuti petunjuk untuk mengambil email agen layanan Anda.
Buka halaman IAM di konsol Google Cloud .
Klik Grant access.
Di kotak teks New principals, masukkan email agen layanan.
Di drop-down Select a role, cari dan pilih Secret Manager Secret Accessor.
Klik Simpan.
gcloud
Gunakan perintah gcloud projects add-iam-policy-binding untuk menambahkan peran IAM ke agen layanan Anda.
Ikuti petunjuk untuk mengambil email agen layanan Anda.
Dari command line, masukkan perintah berikut:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member='serviceAccount:SERVICE_AGENT_EMAIL' \ --role='roles/secretmanager.secretAccessor'
Membuat secret
Buat secret dengan Secret Manager:
Cloud Console
Buka halaman Secret Manager di konsol Google Cloud .
Klik Create secret.
Masukkan nama.
Di kotak teks Secret value, masukkan kredensial Anda dalam salah satu format berikut.
{ "sas_token" : "SAS_TOKEN_VALUE" }Atau:
{ "access_key" : "ACCESS_KEY" }Klik Create secret.
Setelah secret dibuat, catat nama resource lengkap secret:
Pilih tab Ringkasan.
Salin nilai Nama resource. Menggunakan format berikut:
projects/1234567890/secrets/SECRET_NAME
gcloud
Untuk membuat secret baru menggunakan alat command line gcloud, teruskan kredensial berformat JSON ke perintah gcloud secrets create:
printf '{
"sas_token" : "SAS_TOKEN_VALUE"
}' | gcloud secrets create SECRET_NAME --data-file=-
Atau:
printf '{
"access_key" : "ACCESS_KEY"
}' | gcloud secrets create SECRET_NAME --data-file=-
Ambil nama lengkap resource secret:
gcloud secrets describe SECRET_NAME
Catat nilai name dalam respons. Menggunakan format berikut:
projects/1234567890/secrets/SECRET_NAME
Untuk mengetahui detail selengkapnya tentang cara membuat dan mengelola secret, lihat dokumentasi Secret Manager.
Teruskan rahasia Anda ke perintah pembuatan tugas
Penggunaan Secret Manager dengan Storage Transfer Service memerlukan penggunaan REST API untuk membuat tugas transfer.
Teruskan nama resource Secret Manager sebagai nilai kolom
transferSpec.azureBlobStorageDataSource.credentialsSecret:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Secret Manager",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"credentialsSecret": "SECRET_RESOURCE_ID",
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Lihat Membuat transfer untuk mengetahui detail selengkapnya tentang cara membuat transfer.
Opsi 3: Melakukan autentikasi menggunakan identitas gabungan
Storage Transfer Service mendukung penggabungan identitas workload Azure dengan Google Cloud. Storage Transfer Service dapat mengeluarkan permintaan ke Azure Storage melalui aplikasi Azure terdaftar, sehingga tidak perlu meneruskan kredensial ke Storage Transfer Service secara langsung.
Untuk mengonfigurasi identitas gabungan, ikuti petunjuk berikut.
Mengonfigurasi kredensial Google Cloud
Untuk mengizinkan Storage Transfer Service membuat token ID OpenID Connect (OIDC):
Agen layanan
Jika tugas transfer Anda tidak menentukan serviceAccount (yaitu, Anda tidak
mendelegasikan izin agen layanan ke akun layanan yang dikelola pengguna),
berikan peran Service Account Token Creator
(roles/iam.serviceAccountTokenCreator) kepada agen layanan:
Ambil
accountEmailagen layanan:- Buka
halaman referensi
googleServiceAccounts.get. - Di bagian Parameter permintaan, masukkan project ID Anda.
- Klik Jalankan.
accountEmaildansubjectIdditampilkan.
- Buka
halaman referensi
Berikan peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator) kepada agen layanan di dirinya sendiri. Ikuti petunjuk di Mengelola akses ke akun layanan.
Akun layanan yang dikelola pengguna
Jika Anda mendelegasikan izin agen layanan ke akun layanan yang dikelola pengguna, kredensial Google Anda dikonfigurasi saat Anda menyiapkan delegasi izin. Tidak diperlukan langkah tambahan.
Mengonfigurasi kredensial Microsoft
Pertama, daftarkan aplikasi dan tambahkan kredensial gabungan:
- Login ke https://portal.azure.com.
- Buka halaman App registrations.
- Klik New registration.
- Masukkan nama. Misalnya,
azure-transfer-app. - Pilih Accounts in this organizational directory only.
- Klik Daftar. Aplikasi dibuat. Catat
Application (client) IDdanDirectory (tenant) ID. Anda juga dapat mengambilnya nanti dari halaman Ringkasan aplikasi. - Klik Certificates & secrets, lalu pilih tab Federated credentials.
- Klik Tambahkan kredensial.
Pilih Other issuer sebagai skenario dan masukkan informasi berikut:
- Penerbit:
https://accounts.google.com ID subjek: Bergantung pada apakah Anda menggunakan agen layanan default atau akun layanan yang dikelola pengguna, salah satu dari berikut ini:
subjectIdagen layanan Anda, yang Anda ambil di Konfigurasi kredensial Google Cloud.uniqueIdakun layanan yang dikelola pengguna Anda. Lihat Mengambil ID unik akun layanan untuk mengetahui detail tentang cara mengambil nilai ini.
Nama unik untuk kredensial gabungan.
Audiens harus tetap
api://AzureADTokenExchange.
- Penerbit:
Klik Tambahkan.
Selanjutnya, berikan akses aplikasi ke container Azure Storage Anda:
- Buka halaman Storage Accounts di akun Azure Anda.
- Pilih akun penyimpanan Anda, lalu pilih Containers dari bagian Data storage.
- Klik bucket yang akan diberi akses.
- Klik Access Control (IAM) dari menu kiri, lalu pilih tab Roles.
- Klik menu tambahan (
...) di samping peran mana pun, lalu pilih Clone. - Masukkan nama untuk peran khusus ini, lalu pilih Mulai dari awal. Klik Berikutnya.
- Klik Add permissions dan cari
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read. - Klik kartu Microsoft Storage yang muncul.
- Pilih tombol pilihan Tindakan data.
- Pilih Baca : Baca Blob.
- Klik Tambahkan.
- Jika Anda akan menghapus objek di sumber setelah transfer, klik
Tambahkan izin lagi dan telusuri
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete. - Klik kartu Microsoft Storage yang muncul, pilih Tindakan data, lalu pilih Hapus : Hapus blob.
- Klik Tambahkan.
- Klik Tinjau + buat, lalu Buat. Anda akan kembali ke halaman Kontrol Akses (IAM) bucket.
- Klik Add, lalu pilih Add role assignment.
- Dari daftar peran, pilih peran khusus Anda, lalu klik Berikutnya.
- Klik Select members.
- Di kolom Select, masukkan nama aplikasi yang sebelumnya Anda daftarkan. Contoh,
azure-transfer-app. - Klik kartu aplikasi, lalu klik Pilih.
- Klik Review + assign.
Teruskan ID aplikasi Anda ke perintah pembuatan tugas
ID aplikasi Anda diteruskan ke perintah pembuatan tugas menggunakan objek
federatedIdentityConfig. Salin Application (client) ID dan
Directory (tenant) ID yang Anda simpan selama langkah-langkah
Mengonfigurasi kredensial Microsoft ke dalam
kolom client_id dan tenant_id.
"federatedIdentityConfig": {
"client_id": "efghe9d8-4810-800b-8f964ed4057f",
"tenant_id": "abcd1234-c8f0-4cb0-b0c5-ae4aded60078"
}
Contoh permintaan pembuatan tugas terlihat seperti berikut:
POST https://storagetransfer.googleapis.com/v1/transferJobs
{
"description": "Transfer with Azure Federated Identity",
"status": "ENABLED",
"projectId": "PROJECT_ID",
"transferSpec": {
"azureBlobStorageDataSource": {
"storageAccount": "AZURE_STORAGE_ACCOUNT_NAME",
"container": "AZURE_CONTAINER_NAME",
"federatedIdentityConfig": {
"client_id": "AZURE_CLIENT_ID",
"tenant_id": "AZURE_TENANT_ID"
}
},
"gcsDataSink": {
"bucketName": "CLOUD_STORAGE_BUCKET_NAME"
}
}
}
Lihat Membuat transfer untuk mengetahui detail selengkapnya tentang cara membuat transfer.
Pembatasan IP
Jika membatasi akses ke resource Azure menggunakan firewall Azure Storage, Anda harus menambahkan rentang IP yang digunakan oleh pekerja Storage Transfer Service ke daftar IP yang diizinkan.
Karena rentang IP ini dapat berubah, kami memublikasikan nilai saat ini sebagai file JSON di alamat permanen:
https://www.gstatic.com/storage-transfer-service/ipranges.json
Saat rentang baru ditambahkan ke file, kami akan menunggu setidaknya 7 hari sebelum menggunakan rentang tersebut untuk permintaan dari Storage Transfer Service.
Sebaiknya tarik data dari dokumen ini setidaknya setiap minggu agar konfigurasi keamanan Anda tetap terbaru. Untuk contoh skrip Python yang mengambil rentang IP dari file JSON, lihat artikel ini dari dokumentasi Virtual Private Cloud.
Untuk menambahkan rentang ini sebagai IP yang diizinkan, ikuti petunjuk di artikel Microsoft Azure, Mengonfigurasi firewall dan jaringan virtual Azure Storage.