Bagikan melalui


Menggunakan rahasia informasi masuk autentikasi di dalam pekerjaan Azure Machine Learning

BERLAKU UNTUK: Python SDK azureml v1

Di dalam artikel ini, Anda mempelajari cara menggunakan rahasia dalam pelatihan pekerjaan secara aman. Informasi autentikasi seperti nama pengguna dan kata sandi Anda adalah rahasia. Misalnya, jika Anda menyambungkan ke database eksternal untuk meminta data pelatihan, Anda harus meneruskan nama pengguna dan kata sandi Anda ke konteks pekerjaan jarak jauh. Pengodean nilai-nilai tersebut ke dalam skrip pelatihan dalam cleartext tidak aman karena akan memaparkan rahasia.

Sebaliknya, ruang kerja Azure Machine Learning Anda memiliki sumber daya terkait yang disebut Azure Key Vault. Gunakan Key Vault ini untuk meneruskan rahasia ke pekerjaan jarak jauh secara aman melalui satu set API di dalam SDK Python Azure Machine Learning.

Aliran standar untuk menggunakan rahasia adalah:

  1. Di komputer lokal, masuk ke Azure dan sambungkan ke ruang kerja Anda.
  2. Di komputer lokal, atur rahasia di Key Vault Ruang Kerja.
  3. Kirim pekerjaan jarak jauh.
  4. Di dalam pekerjaan jarak jauh, dapatkan rahasia dari Key Vault dan gunakan rahasia.

Mengatur rahasia

Di Azure Machine Learning, kelas Keyvault berisi metode untuk mengatur rahasia. Dalam sesi Python lokal Anda, pertama-tama dapatkan referensi ke Key Vault ruang kerja Anda, lalu gunakan metode set_secret() untuk mengatur rahasia berdasarkan nama dan nilai. Metode set_secret memperbarui nilai rahasia jika nama sudah ada.

from azureml.core import Workspace
from azureml.core import Keyvault
import os


ws = Workspace.from_config()
my_secret = os.environ.get("MY_SECRET")
keyvault = ws.get_default_keyvault()
keyvault.set_secret(name="mysecret", value = my_secret)

Jangan letakkan nilai rahasia dalam kode Python Anda karena tidak aman untuk menyimpannya dalam file sebagai cleartext. Sebaliknya, dapatkan nilai rahasia dari variabel lingkungan, misalnya rahasia build Azure DevOps, atau dari input pengguna interaktif.

Anda dapat mencantumkan nama rahasia menggunakan list_secrets() metode dan ada juga versi batch,set_secrets() yang memungkinkan Anda mengatur beberapa rahasia sekaligus.

Penting

Menggunakan list_secrets() hanya akan mencantumkan rahasia yang dibuat melalui set_secret() atau set_secrets() menggunakan Azure Pembelajaran Mesin SDK. Rahasia yang dibuat dengan sesuatu selain SDK tidak akan dicantumkan. Misalnya, rahasia yang dibuat menggunakan portal Microsoft Azure atau Azure PowerShell tidak akan dicantumkan.

Anda dapat menggunakan get_secret() untuk mendapatkan nilai rahasia dari brankas kunci, bagaimana pun cara pembuatannya. Jadi Anda dapat mengambil rahasia yang tidak dicantumkan oleh list_secrets().

Mendapatkan rahasia

Dalam kode lokal, Anda dapat menggunakan metode get_secret() untuk mendapatkan nilai rahasia berdasarkan nama.

Untuk pekerjaan yang dikirimkan ke Experiment.submit , gunakan metode get_secret() dengan kelas Run. Karena eksekusi yang dikirim mengetahui ruang kerjanya, metode ini memintas inisialisasi Ruang Kerja dan mengembalikan nilai rahasia secara langsung.

# Code in submitted job
from azureml.core import Experiment, Run

run = Run.get_context()
secret_value = run.get_secret(name="mysecret")

Berhati-hatilah untuk tidak memaparkan nilai dengan menulis atau mencetaknya.

Ada juga versi batch, get_secrets() untuk mengakses beberapa rahasia sekaligus.