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 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: 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 Central, Australia East, Australia Tenggara, Central India, South India, West India, Southeast Asia, East Asia, Japan East, Japan West, Korea South, Korea Central
  • 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: 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 Autentikasi 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 container. Lihat Memberikan akses terbatas ke resource Azure Storage menggunakan tanda tangan akses bersama untuk mengetahui petunjuknya.

    1. Layanan yang diizinkan harus menyertakan Blob.

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

    3. Izin yang diizinkan harus menyertakan Read dan List. Jika transfer dikonfigurasi untuk menghapus objek dari sumber, Anda juga harus menyertakan izin Delete.

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

    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 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: 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 audit logging untuk melindungi secret Anda.

Storage Transfer Service mendukung nama resource Secret Manager yang mereferensikan kredensial Azure 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 container Azure yang ditentukan dalam tugas transfer.

Mengaktifkan API

Mengaktifkan Secret Manager API.

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 Service Usage (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.

Mengaktifkan 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 untuk agen layanan Anda:

Konsol Cloud

  1. Ikuti petunjuk untuk mengambil email agen layanan Anda.

  2. Buka halaman IAM di Google Cloud konsol.

    Buka IAM

  3. Klik Grant access.

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

  5. Di drop-down Select a role, telusuri dan pilih Secret Manager Secret Accessor.

  6. Klik Save.

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:

Konsol Cloud

  1. Buka halaman Secret Manager di Google Cloud konsol.

    Buka Secret Manager

  2. Klik Create secret.

  3. Masukkan nama.

  4. Di kotak teks Secret value, masukkan kredensial Anda dalam salah satu format berikut.

    {
      "sas_token" : "SAS_TOKEN_VALUE"
    }
    

    Atau:

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

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

    1. Pilih tab Overview.

    2. Salin nilai Resource name. Formatnya adalah sebagai 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

Perhatikan nilai name dalam respons. Formatnya adalah sebagai berikut:

projects/1234567890/secrets/SECRET_NAME

Untuk mengetahui detail selengkapnya tentang cara membuat dan mengelola secret, lihat dokumentasi Secret Manager.

Meneruskan secret ke perintah pembuatan tugas

Menggunakan 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: Autentikasi menggunakan identitas gabungan

Storage Transfer Service mendukung workload identity federation 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 ini.

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:

  1. Ambil accountEmail agen layanan:

    1. Buka halaman referensi googleServiceAccounts.get.
    2. Di bagian Request parameters, masukkan project ID Anda.
    3. Klik Execute. accountEmail dan subjectId akan ditampilkan.
  2. Berikan peran Service Account Token Creator (roles/iam.serviceAccountTokenCreator) kepada agen layanan itu 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 akan dikonfigurasi saat Anda menyiapkan delegasi izin. Tidak ada langkah tambahan yang diperlukan.

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 Register. Aplikasi akan dibuat. Catat Application (client) ID dan Directory (tenant) ID. Anda juga dapat mengambilnya nanti dari halaman Overview aplikasi.
  7. Klik Certificates &secrets , lalu pilih tab Federated credentials.
  8. Klik Add credential.
  9. Pilih Other issuer sebagai skenario dan masukkan informasi berikut:

  10. Klik Add.

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 sebelah kiri, lalu pilih tab Roles.
  5. Klik menu overflow (...) di samping peran mana pun, lalu pilih Clone.
  6. Masukkan nama untuk peran kustom ini, lalu pilih Start from scratch. Klik Next.
  7. Klik Add permissions , lalu telusuri Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read.
  8. Klik kartu Microsoft Storage yang muncul.
  9. Pilih tombol radio Data actions.
  10. Pilih Read : Read Blob.
  11. Klik Add.
  12. Jika Anda akan menghapus objek di sumber setelah transfer, klik Add permissions lagi, lalu telusuri Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete.
  13. Klik kartu Microsoft Storage yang muncul, pilih Data actions, lalu pilih Delete : Delete blob.
  14. Klik Add.
  15. Klik Review + create, lalu Create. Anda akan kembali ke halaman Access Control (IAM) bucket.
  16. Klik Add , lalu pilih Add role assignment.
  17. Dari daftar peran, pilih peran kustom Anda, lalu klik Next.
  18. Klik Select members.
  19. Di kolom Select, masukkan nama aplikasi yang sebelumnya Anda daftarkan. Misalnya, azure-transfer-app.
  20. Klik kartu aplikasi, lalu klik Select.
  21. Klik Review + assign.

Meneruskan ID aplikasi 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 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 ambil 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 documentation.

Untuk menambahkan rentang ini sebagai IP yang diizinkan, ikuti petunjuk di artikel Microsoft Azure, Mengonfigurasi firewall Azure Storage dan jaringan virtual.