Używanie wpisów tajnych poświadczeń uwierzytelniania w zadaniach szkoleniowych usługi Azure Machine Learning
DOTYCZY: Zestaw SDK języka Python w wersji 1
Z tego artykułu dowiesz się, jak bezpiecznie używać wpisów tajnych w zadaniach szkoleniowych. Informacje uwierzytelniania, takie jak nazwa użytkownika i hasło, są wpisami tajnymi. Jeśli na przykład łączysz się z zewnętrzną bazą danych w celu wykonywania zapytań dotyczących danych szkoleniowych, musisz przekazać nazwę użytkownika i hasło do kontekstu zadania zdalnego. Kodowanie takich wartości do skryptów szkoleniowych w postaci zwykłego tekstu jest niezabezpieczone, ponieważ uwidacznia wpis tajny.
Zamiast tego obszar roboczy usługi Azure Machine Learning ma skojarzony zasób o nazwie Azure Key Vault. Ta usługa Key Vault umożliwia bezpieczne przekazywanie wpisów tajnych do zadań zdalnych za pośrednictwem zestawu interfejsów API w zestawie SDK języka Python usługi Azure Machine Learning.
Standardowy przepływ używania wpisów tajnych to:
- Na komputerze lokalnym zaloguj się do platformy Azure i połącz się z obszarem roboczym.
- Na komputerze lokalnym ustaw wpis tajny w usłudze Key Vault obszaru roboczego.
- Prześlij zadanie zdalne.
- W ramach zadania zdalnego pobierz wpis tajny z usługi Key Vault i użyj go.
Ustawianie wpisów tajnych
W usłudze Azure Machine Learning klasa Keyvault zawiera metody ustawiania wpisów tajnych. W lokalnej sesji języka Python najpierw uzyskaj odwołanie do obszaru roboczego usługi Key Vault, a następnie użyj set_secret()
metody , aby ustawić wpis tajny według nazwy i wartości. Metoda set_secret aktualizuje wartość wpisu tajnego, jeśli nazwa już istnieje.
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)
Nie umieszczaj wartości wpisu tajnego w kodzie języka Python, ponieważ jest niezabezpieczona do przechowywania jej w pliku jako zwykłego tekstu. Zamiast tego uzyskaj wartość wpisu tajnego ze zmiennej środowiskowej, na przykład wpis tajny kompilacji usługi Azure DevOps lub z interakcyjnych danych wejściowych użytkownika.
Można wyświetlić listę nazw wpisów tajnych przy użyciu list_secrets()
metody i istnieje również wersja wsadowa,set_secrets(), która umożliwia ustawienie wielu wpisów tajnych naraz.
Ważne
Użycie list_secrets()
spowoduje wyświetlenie listy tylko wpisów tajnych utworzonych za pomocą set_secret()
zestawu SDK usługi Azure Machine Learning lub set_secrets()
przy użyciu go. Nie będzie zawierać listy wpisów tajnych utworzonych przez coś innego niż zestaw SDK. Na przykład wpis tajny utworzony przy użyciu witryny Azure Portal lub programu Azure PowerShell nie zostanie wyświetlony.
Możesz użyć get_secret()
polecenia , aby uzyskać wartość wpisu tajnego z magazynu kluczy, niezależnie od sposobu jego utworzenia. Aby można było pobrać wpisy tajne, które nie są wymienione na liście .list_secrets()
Uzyskiwanie wpisów tajnych
W kodzie lokalnym możesz użyć get_secret()
metody , aby uzyskać wartość wpisu tajnego według nazwy.
W przypadku przesłanych Experiment.submit
zadań użyj get_secret()
metody z klasą Run
. Ponieważ przesłany przebieg jest świadomy swojego obszaru roboczego, ta metoda skrótuje wystąpienie obszaru roboczego i zwraca bezpośrednio wartość wpisu tajnego.
# Code in submitted job
from azureml.core import Experiment, Run
run = Run.get_context()
secret_value = run.get_secret(name="mysecret")
Należy zachować ostrożność, aby nie uwidocznić wartości wpisu tajnego przez zapisanie lub wydrukowanie go.
Istnieje również wersja wsadowa, get_secrets() na potrzeby uzyskiwania dostępu do wielu wpisów tajnych jednocześnie.