Mengonfigurasi akses ke sumber: Microsoft Azure Storage

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 federatedIdentityConfig selama 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: East US, East US 2, West US, West US 2, West US 3, Central US, North Central US, South Central US, West Central US, Canada Central, Canada East, Brazil South
  • 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): France Central, Germany West Central, Norway East, Sweden Central, Switzerland North, North Europe, West Europe, UK South, UK West, Qatar Central, UAE North, South Africa North

Opsi 1: Melakukan autentikasi 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.

  1. Buat atau gunakan pengguna Microsoft Azure Storage yang ada untuk mengakses akun penyimpanan untuk container Blob Microsoft Azure Storage Anda.

  2. Buat token SAS di tingkat penampung. Lihat Memberikan akses terbatas ke resource Azure Storage menggunakan tanda tangan akses bersama untuk mengetahui petunjuknya.

    1. Layanan yang diizinkan harus mencakup Blob.

    2. Untuk Jenis resource yang diizinkan, pilih Container dan Object.

    3. Izin yang diperbolehkan harus mencakup Baca dan Buat daftar. Jika transfer dikonfigurasi untuk menghapus objek dari sumber, Anda juga harus menyertakan izin Hapus.

    4. Waktu habis masa berlaku default untuk token SAS adalah 8 jam. Tetapkan waktu habis masa berlaku yang wajar agar Anda dapat menyelesaikan transfer dengan berhasil.

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

    6. Protokol yang diizinkan harus berupa Khusus HTTPS.

  3. 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, 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 cakupannya dibatasi ke penampung Azure yang ditentukan dalam tugas transfer.

Mengaktifkan API

Enable the Secret Manager API.

Enable the API

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

  1. Ikuti petunjuk untuk mengambil email agen layanan Anda.

  2. Buka halaman IAM di konsol Google Cloud .

    Buka IAM

  3. Klik Grant access.

  4. Di kotak teks New principals, masukkan email agen layanan.

  5. Di drop-down Pilih peran, telusuri dan pilih Secret Manager Secret Accessor.

  6. Klik Simpan.

gcloud

Gunakan perintah gcloud projects add-iam-policy-binding untuk menambahkan peran IAM ke agen layanan Anda.

  1. Ikuti petunjuk untuk mengambil email agen layanan Anda.

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

  1. Buka halaman Secret Manager di konsol Google Cloud .

    Buka Secret Manager

  2. Klik Buat secret.

  3. Masukkan nama.

  4. Di kotak teks Nilai rahasia, masukkan kredensial Anda dalam salah satu format berikut.

    {
      "sas_token" : "SAS_TOKEN_VALUE"
    }
    

    Atau:

    {
      "access_key" : "ACCESS_KEY"
    }
    
  5. Klik Buat secret.

  6. Setelah secret dibuat, catat nama resource lengkap secret:

    1. Pilih tab Ringkasan.

    2. 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 rahasia:

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 mengharuskan 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 workforce identity federation Azure dengan Google Cloud. Storage Transfer Service dapat mengirimkan permintaan ke Azure Storage melalui aplikasi Azure yang terdaftar, sehingga 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.

  1. Ambil accountEmail dan subjectId agen layanan terkelola Google yang dibuat secara otomatis saat Anda mulai menggunakan Storage Transfer Service. Untuk mengambil nilai ini:

    1. Buka halaman referensi googleServiceAccounts.get.

      Panel interaktif akan terbuka, berjudul Coba metode ini.

    2. Di panel, di bagian Parameter permintaan, masukkan project ID Anda. Project yang Anda tentukan di sini harus berupa project yang Anda gunakan untuk mengelola Storage Transfer Service.

    3. Klik Jalankan. accountEmail dan subjectId disertakan dalam respons. Simpan nilai ini.

  2. 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:

  1. Login ke https://portal.azure.com.
  2. Buka halaman App registrations.
  3. Klik New registration.
  4. Masukkan nama. Misalnya, azure-transfer-app.
  5. Pilih Accounts in this organizational directory only.
  6. Klik Daftar. Aplikasi dibuat. Catat Application (client) ID dan Directory (tenant) ID. Anda juga dapat mengambilnya nanti dari halaman Ringkasan aplikasi.
  7. Klik Certificates & secrets, lalu pilih tab Federated credentials.
  8. Klik Tambahkan kredensial.
  9. 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.
  10. Klik Tambahkan.

Selanjutnya, berikan akses aplikasi ke container Azure Storage Anda:

  1. Buka halaman Storage Accounts di akun Azure Anda.
  2. Pilih akun penyimpanan Anda, lalu pilih Containers dari bagian Data storage.
  3. Klik bucket yang akan diberi akses.
  4. Klik Access Control (IAM) dari menu kiri, lalu pilih tab Roles.
  5. Klik menu tambahan (...) di samping peran mana pun, lalu pilih Clone.
  6. Masukkan nama untuk peran khusus ini, lalu pilih Mulai dari awal. Klik Berikutnya.
  7. Klik Add permissions, lalu cari Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read.
  8. Klik kartu Microsoft Storage yang muncul.
  9. Pilih tombol pilihan Tindakan data.
  10. Pilih Baca : Baca Blob.
  11. Klik Tambahkan.
  12. Jika Anda akan menghapus objek di sumber setelah transfer, klik Tambahkan izin lagi dan telusuri Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete.
  13. Klik kartu Microsoft Storage yang muncul, pilih Tindakan data, lalu pilih Hapus : Hapus blob.
  14. Klik Tambahkan.
  15. Klik Tinjau + buat, lalu Buat. Anda akan kembali ke halaman Kontrol Akses (IAM) bucket.
  16. Klik Tambahkan, lalu pilih Tambahkan penetapan peran.
  17. Dari daftar peran, pilih peran khusus Anda, lalu klik Berikutnya.
  18. Klik Select members.
  19. Di kolom Select, masukkan nama aplikasi yang sebelumnya Anda daftarkan. Contoh, azure-transfer-app.
  20. Klik kartu aplikasi, lalu klik Pilih.
  21. Klik Tinjau + tetapkan.

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 Configure Microsoft credentials 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.