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

  1. Buat atau gunakan pengguna Microsoft Azure Storage yang ada untuk mengakses akun penyimpanan untuk penampung 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 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 Hapus.

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

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

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

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 kepada agen layanan:

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 menu 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. 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 yang 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.

  1. Ambil accountEmail dan subjectId agen layanan yang dikelola 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, 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.

    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 Pendaftaran aplikasi.
  3. Klik New registration.
  4. Masukkan nama. Misalnya, azure-transfer-app.
  5. Pilih Accounts in this organizational directory only.
  6. Klik Daftar. Aplikasi dibuat. Perhatikan 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 penampung Azure Storage Anda:

  1. Buka halaman Storage Accounts di akun Azure Anda.
  2. Pilih akun penyimpanan Anda, lalu pilih Penampung dari bagian Penyimpanan data.
  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 apa pun, lalu pilih Clone.
  6. Masukkan nama untuk peran kustom ini, lalu pilih Mulai dari awal. Klik Berikutnya.
  7. Klik Tambahkan izin, lalu telusuri Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read.
  8. Klik kartu Microsoft Storage yang muncul.
  9. Pilih tombol pilihan Tindakan data.
  10. Pilih Read : Read 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 Data actions, lalu pilih Delete : Delete blob.
  14. Klik Tambahkan.
  15. Klik Review + create, lalu Create. Anda akan kembali ke halaman Kontrol Akses (IAM) bucket.
  16. Klik Tambahkan, lalu pilih Tambahkan penetapan peran.
  17. Dari daftar peran, pilih peran kustom 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 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 lengkap 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.