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 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
federatedIdentityConfig
selama pembuatan tugas transfer.
Dokumen ini juga menyertakan informasi tentang cara menambahkan alamat IP pekerja Storage Transfer Service ke firewall Azure Storage 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: Amerika Serikat Timur, Amerika Serikat Timur 2, Amerika Serikat Barat, Amerika Serikat Barat 2, Amerika Serikat Barat 3, Amerika Serikat Tengah, Amerika Serikat Tengah Utara, Amerika Serikat Tengah Selatan, Amerika Serikat 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 Barat Tengah, 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: Melakukan autentikasi menggunakan token SAS
Ikuti langkah-langkah berikut untuk mengonfigurasi akses ke penampung 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 penampung 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 menyertakan Blob.
Untuk Jenis resource yang diizinkan, pilih Container dan Object.
Izin yang diizinkan harus menyertakan Read dan List. 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 berhasil menyelesaikan transfer.
Jangan tentukan alamat IP apa pun di kolom Alamat IP yang diizinkan. Layanan Transfer Penyimpanan 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: Lakukan autentikasi menggunakan Kunci Bersama Azure atau token SAS di Secret Manager
Secret Manager adalah layanan aman yang menyimpan dan mengelola data sensitif seperti sandi. Layanan ini menggunakan enkripsi yang kuat, kontrol akses berbasis peran, 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 dibatasi cakupannya ke penampung Azure yang ditentukan dalam tugas transfer.
Mengaktifkan API
Aktifkan API Secret Manager.
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 kepada agen layanan:
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 menu drop-down Pilih peran, telusuri 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 Buat secret.
Masukkan nama.
Di kotak teks Nilai rahasia, masukkan kredensial Anda dalam salah satu format berikut.
{ "sas_token" : "SAS_TOKEN_VALUE" }
Atau:
{ "access_key" : "ACCESS_KEY" }
Klik Buat secret.
Setelah secret dibuat, catat nama resource lengkap secret:
Pilih tab Ringkasan.
Salin nilai Nama resource. Kode ini 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 resource lengkap secret:
gcloud secrets describe SECRET_NAME
Catat nilai name
dalam respons. Kode ini menggunakan format berikut:
projects/1234567890/secrets/SECRET_NAME
Untuk mengetahui detail selengkapnya tentang cara membuat dan mengelola secret, lihat dokumentasi Secret Manager.
Teruskan secret Anda ke perintah pembuatan tugas
Menggunakan 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: Lakukan 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 Anda tidak perlu meneruskan kredensial ke Storage Transfer Service secara langsung.
Untuk mengonfigurasi identitas gabungan, ikuti petunjuk berikut.
Mengonfigurasi kredensial Google Cloud
Anda harus menambahkan peran Service Account Token Creator
(roles/iam.serviceAccountTokenCreator
) ke agen layanan
Storage Transfer Service untuk mengizinkan pembuatan token ID OpenID Connect (OIDC) untuk akun tersebut.
Ambil
accountEmail
dansubjectId
dari agen layanan yang dikelola Google yang dibuat secara otomatis saat Anda mulai menggunakan Storage Transfer Service. Untuk mengambil nilai ini:Buka halaman referensi
googleServiceAccounts.get
.Panel interaktif akan terbuka, berjudul Coba metode ini.
Di panel, pada bagian Request parameters, masukkan project ID Anda. Project yang Anda tentukan di sini harus berupa project yang Anda gunakan untuk mengelola Storage Transfer Service.
Klik Jalankan.
accountEmail
dansubjectId
disertakan dalam respons. Simpan nilai ini.
Berikan peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
) kepada agen layanan Storage Transfer Service. Ikuti petunjuk di Mengelola akses ke akun layanan.
Mengonfigurasi kredensial Microsoft
Pertama, daftarkan aplikasi dan tambahkan kredensial gabungan:
- Login ke https://portal.azure.com.
- Buka halaman Pendaftaran aplikasi.
- Klik New registration.
- Masukkan nama. Misalnya,
azure-transfer-app
. - Pilih Accounts in this organizational directory only.
- Klik Daftar. Aplikasi dibuat. Perhatikan
Application (client) ID
danDirectory (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:
subjectId
agen layanan Anda, yang Anda ambil di Mengonfigurasi kredensial Google Cloud. - Nama unik untuk kredensial gabungan.
- Audiens harus tetap
api://AzureADTokenExchange
.
- Penerbit:
- Klik Tambahkan.
Selanjutnya, berikan akses aplikasi ke penampung Azure Storage Anda:
- Buka halaman Storage Accounts di akun Azure Anda.
- Pilih akun penyimpanan Anda, lalu pilih Penampung dari bagian Penyimpanan data.
- Klik bucket yang akan diberi akses.
- Klik Access Control (IAM) dari menu kiri, lalu pilih tab Roles.
- Klik menu tambahan (
...
) di samping peran apa pun, lalu pilih Clone. - Masukkan nama untuk peran kustom ini, lalu pilih Mulai dari awal. Klik Berikutnya.
- Klik Tambahkan izin, lalu telusuri
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
. - Klik kartu Microsoft Storage yang muncul.
- Pilih tombol pilihan Tindakan data.
- Pilih Read : Read 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 Data actions, lalu pilih Delete : Delete blob.
- Klik Tambahkan.
- Klik Review + create, lalu Create. Anda akan kembali ke halaman Kontrol Akses (IAM) bucket.
- Klik Tambahkan, lalu pilih Tambahkan penetapan peran.
- Dari daftar peran, pilih peran kustom 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 Tinjau + tetapkan.
Teruskan ID aplikasi Anda ke perintah pembuatan tugas
ID aplikasi Anda diteruskan ke perintah pembuatan tugas menggunakan
objek federatedIdentityConfig
. Salin ID Aplikasi (klien) dan
ID Direktori (tenant) yang Anda simpan selama
langkah-langkah Mengonfigurasi kredensial Microsoft ke dalam
kolom client_id
dan tenant_id
.
"federatedIdentifyConfig": {
"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",
"federatedIdentifyConfig": {
"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 minimal 7 hari sebelum menggunakan rentang tersebut untuk permintaan dari Layanan Transfer Penyimpanan.
Sebaiknya Anda mengambil data dari dokumen ini setidaknya setiap minggu untuk terus memperbarui konfigurasi keamanan. 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 dalam artikel Microsoft Azure, Mengonfigurasi firewall dan jaringan virtual Azure Storage.