Udostępnij za pośrednictwem


Konfigurowanie uwierzytelniania dla zasobów i przepływów pracy usługi Azure Machine Learning

DOTYCZY: Rozszerzenie interfejsu wiersza polecenia platformy Azure w wersji 2 (current)Zestaw PYTHON SDK azure-ai-ml v2 (bieżąca)

Dowiedz się, jak skonfigurować uwierzytelnianie w obszarze roboczym usługi Azure Machine Learning z poziomu interfejsu wiersza polecenia platformy Azure lub zestawu SDK v2 usługi Azure Machine Learning. Uwierzytelnianie w obszarze roboczym usługi Azure Machine Learning jest oparte na identyfikatorze Entra firmy Microsoft dla większości rzeczy. Ogólnie rzecz biorąc, istnieją cztery przepływy pracy uwierzytelniania, których można użyć podczas nawiązywania połączenia z obszarem roboczym:

  • Interakcyjne: używasz swojego konta w identyfikatorze Entra firmy Microsoft do bezpośredniego uwierzytelniania lub do uzyskania tokenu używanego do uwierzytelniania. Uwierzytelnianie interakcyjne jest używane podczas eksperymentowania i programowania iteracyjnego. Uwierzytelnianie interakcyjne umożliwia kontrolowanie dostępu do zasobów (takich jak usługa internetowa) na podstawie poszczególnych użytkowników.

  • Jednostka usługi: utworzysz konto jednostki usługi w identyfikatorze Entra firmy Microsoft i użyjesz go do uwierzytelniania lub uzyskania tokenu. Jednostka usługi służy do uwierzytelniania zautomatyzowanego procesu w usłudze bez konieczności interakcji z użytkownikiem. Na przykład skrypt ciągłej integracji i wdrażania, który trenuje i testuje model za każdym razem, gdy zmienia się kod trenowania.

  • Sesja interfejsu wiersza polecenia platformy Azure: do uwierzytelniania jest używana aktywna sesja interfejsu wiersza polecenia platformy Azure. Rozszerzenie interfejsu wiersza polecenia platformy Azure dla usługi Machine Learning ( ml rozszerzenie lub interfejs wiersza polecenia w wersji 2) to narzędzie wiersza polecenia do pracy z usługą Azure Machine Learning. Możesz zalogować się do platformy Azure za pośrednictwem interfejsu wiersza polecenia platformy Azure na lokalnej stacji roboczej bez przechowywania poświadczeń w kodzie języka Python lub monitowania użytkownika o uwierzytelnienie. Podobnie można ponownie użyć tych samych skryptów w ramach potoków ciągłej integracji i wdrażania, uwierzytelnianie interfejsu wiersza polecenia platformy Azure przy użyciu tożsamości jednostki usługi.

  • Tożsamość zarządzana: w przypadku korzystania z zestawu Azure Machine Learning SDK w wersji 2 w wystąpieniu obliczeniowym lub na maszynie wirtualnej platformy Azure można użyć tożsamości zarządzanej dla platformy Azure. Ten przepływ pracy umożliwia maszynie wirtualnej nawiązanie połączenia z obszarem roboczym przy użyciu tożsamości zarządzanej bez przechowywania poświadczeń w kodzie języka Python lub monitowania użytkownika o uwierzytelnienie. Klastry obliczeniowe usługi Azure Machine Learning można również skonfigurować tak, aby używać tożsamości zarządzanej do uzyskiwania dostępu do obszaru roboczego podczas trenowania modeli.

Niezależnie od używanego przepływu pracy uwierzytelniania kontrola dostępu oparta na rolach platformy Azure (RBAC) jest używana do określania zakresu poziomu dostępu (autoryzacji) dozwolonego dla zasobów. Na przykład administrator lub proces automatyzacji może mieć dostęp do tworzenia wystąpienia obliczeniowego, ale nie używać go. Analityk danych może go użyć, ale nie może go usunąć ani utworzyć. Aby uzyskać więcej informacji, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.

Dostęp warunkowy firmy Microsoft Entra może służyć do dalszej kontroli lub ograniczenia dostępu do obszaru roboczego dla każdego przepływu pracy uwierzytelniania. Na przykład administrator może zezwolić na dostęp do obszaru roboczego tylko z urządzeń zarządzanych.

Wymagania wstępne

Microsoft Entra ID

Wszystkie przepływy pracy uwierzytelniania dla obszaru roboczego korzystają z identyfikatora Entra firmy Microsoft. Jeśli chcesz, aby użytkownicy uwierzytelniali się przy użyciu poszczególnych kont, muszą mieć konta w identyfikatorze Microsoft Entra. Jeśli chcesz używać jednostek usługi, muszą istnieć w identyfikatorze Entra firmy Microsoft. Tożsamości zarządzane są również funkcją identyfikatora Entra firmy Microsoft.

Aby uzyskać więcej informacji na temat identyfikatora Entra firmy Microsoft, zobacz Co to jest uwierzytelnianie firmy Microsoft Entra.

Po utworzeniu kont microsoft Entra zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning, aby uzyskać informacje na temat udzielania im dostępu do obszaru roboczego i innych operacji w usłudze Azure Machine Learning.

Korzystanie z uwierzytelniania interakcyjnego

DOTYCZY: Zestaw PYTHON SDK azure-ai-ml w wersji 2 (bieżąca)

Uwierzytelnianie interakcyjne używa pakietu tożsamości platformy Azure dla języka Python. Większość przykładów służy DefaultAzureCredential do uzyskiwania dostępu do poświadczeń. Gdy token jest wymagany, żąda jednego przy użyciu wielu tożsamości (EnvironmentCredential, ManagedIdentityCredential, , SharedTokenCacheCredentialVisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential) z kolei, zatrzymując się, gdy jeden udostępnia token. Aby uzyskać więcej informacji, zobacz dokumentację klasy DefaultAzureCredential .

Poniższy kod jest przykładem użycia DefaultAzureCredential do uwierzytelniania. Jeśli uwierzytelnianie nie DefaultAzureCredential powiedzie się, zamiast tego zostanie użyta rezerwa uwierzytelniania za pośrednictwem przeglądarki internetowej.

from azure.identity import DefaultAzureCredential, InteractiveBrowserCredential

try:
    credential = DefaultAzureCredential()
    # Check if given credential can get token successfully.
    credential.get_token("https://management.azure.com/.default")
except Exception as ex:
    # Fall back to InteractiveBrowserCredential in case DefaultAzureCredential not work
    # This will open a browser page for
    credential = InteractiveBrowserCredential()

Po utworzeniu obiektu poświadczeń klasa MLClient jest używana do nawiązywania połączenia z obszarem roboczym. Na przykład poniższy kod używa metody do ładowania informacji o połączeniu from_config() :

from azure.ai.ml import MLClient
try:
    ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
    # NOTE: Update following workspace information to contain
    #       your subscription ID, resource group name, and workspace name
    client_config = {
        "subscription_id": "<SUBSCRIPTION_ID>",
        "resource_group": "<RESOURCE_GROUP>",
        "workspace_name": "<AZUREML_WORKSPACE_NAME>",
    }

    # write and reload from config file
    import json, os

    config_path = "../.azureml/config.json"
    os.makedirs(os.path.dirname(config_path), exist_ok=True)
    with open(config_path, "w") as fo:
        fo.write(json.dumps(client_config))
    ml_client = MLClient.from_config(credential=credential, path=config_path)

print(ml_client)

Konfigurowanie nazwy głównej usługi

Aby użyć jednostki usługi (SP), należy najpierw utworzyć sp. Następnie przyznaj mu dostęp do obszaru roboczego. Jak wspomniano wcześniej, kontrola dostępu oparta na rolach platformy Azure (RBAC) jest używana do kontrolowania dostępu, dlatego należy również zdecydować, jaki dostęp ma udzielić dostawcy usług.

Ważne

W przypadku korzystania z jednostki usługi przyznaj mu minimalny dostęp wymagany dla zadania , dla którego jest używany. Na przykład nie można udzielić dostępu właściciela jednostki usługi lub współautora, jeśli wszystkie używane do tego celu odczytuje token dostępu dla wdrożenia internetowego.

Przyczyną udzielenia najmniejszego dostępu jest to, że jednostka usługi używa hasła do uwierzytelniania, a hasło może być przechowywane w ramach skryptu automatyzacji. Jeśli hasło zostanie ujawnione, minimalny dostęp wymagany do wykonania określonych zadań minimalizuje złośliwe użycie dostawcy usług.

Najprostszym sposobem utworzenia dostawcy usługi i udzielenia dostępu do obszaru roboczego jest użycie interfejsu wiersza polecenia platformy Azure. Aby utworzyć jednostkę usługi i udzielić jej dostępu do obszaru roboczego, wykonaj następujące kroki:

Uwaga

Aby wykonać wszystkie te kroki, musisz być administratorem subskrypcji.

  1. Uwierzytelnianie w subskrypcji platformy Azure:

    az login
    

    Jeśli interfejs wiersza polecenia może otworzyć domyślną przeglądarkę, robi to i ładuje stronę logowania. W przeciwnym razie musisz otworzyć przeglądarkę i postępować zgodnie z instrukcjami w wierszu polecenia. Instrukcje obejmują przechodzenie do https://aka.ms/devicelogin i wprowadzanie kodu autoryzacji.

    Jeśli masz wiele subskrypcji platformy Azure, możesz użyć az account set -s <subscription name or ID> polecenia , aby ustawić subskrypcję. Aby uzyskać więcej informacji, zobacz Używanie wielu subskrypcji platformy Azure.

    Aby uzyskać informacje na temat innych metod uwierzytelniania, zobacz Logowanie się przy użyciu interfejsu wiersza polecenia platformy Azure.

  2. Utwórz jednostkę usługi. W poniższym przykładzie tworzony jest sp o nazwie ml-auth :

    az ad sp create-for-rbac --json-auth --name ml-auth --role Contributor --scopes /subscriptions/<subscription id>
    

    Parametr --json-auth jest dostępny w wersjach >interfejsu wiersza polecenia platformy Azure = 2.51.0. Wersje przed użyciem programu --sdk-auth.

    Dane wyjściowe są dokumentem JSON podobnym do poniższego. Zanotuj clientIdpola , clientSecreti tenantId , ponieważ są potrzebne do wykonania innych kroków w tym artykule.

    {
        "clientId": "your-client-id",
        "clientSecret": "your-client-secret",
        "subscriptionId": "your-sub-id",
        "tenantId": "your-tenant-id",
        "activeDirectoryEndpointUrl": "https://login.microsoftonline.com",
        "resourceManagerEndpointUrl": "https://management.azure.com",
        "activeDirectoryGraphResourceId": "https://graph.windows.net",
        "sqlManagementEndpointUrl": "https://management.core.windows.net:5555",
        "galleryEndpointUrl": "https://gallery.azure.com/",
        "managementEndpointUrl": "https://management.core.windows.net"
    }
    
  3. Pobierz szczegóły jednostki usługi przy użyciu clientId wartości zwróconej w poprzednim kroku:

    az ad sp show --id your-client-id
    

    Poniższy kod JSON jest uproszczonym przykładem danych wyjściowych polecenia . Zanotuj objectId pole, ponieważ będzie potrzebna jego wartość dla następnego kroku.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Aby udzielić dostępu do obszaru roboczego i innych zasobów używanych przez usługę Azure Machine Learning, skorzystaj z informacji w następujących artykułach:

    Ważne

    Dostęp właściciela umożliwia jednostce usługi wykonywanie praktycznie dowolnej operacji w obszarze roboczym. Jest on używany w tym dokumencie, aby zademonstrować sposób udzielania dostępu; w środowisku produkcyjnym firma Microsoft zaleca przyznanie jednostce usługi minimalnego dostępu wymaganego do wykonania roli, dla której zamierzasz. Aby uzyskać informacje na temat tworzenia roli niestandardowej z dostępem wymaganym do danego scenariusza, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Learning.

Konfigurowanie tożsamości zarządzanej

Ważne

Tożsamość zarządzana jest obsługiwana tylko w przypadku korzystania z zestawu SDK usługi Azure Machine Learning z maszyny wirtualnej platformy Azure, klastra obliczeniowego usługi Azure Machine Learning lub wystąpienia obliczeniowego.

Tożsamość zarządzana przy użyciu maszyny wirtualnej

  1. Włącz tożsamość zarządzaną przypisaną przez system dla zasobów platformy Azure na maszynie wirtualnej.

  2. W witrynie Azure Portal wybierz swój obszar roboczy, a następnie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).

  3. Wybierz pozycję Dodaj, Dodaj przypisanie roli, aby otworzyć stronę Dodawanie przypisania roli.

  4. Wybierz rolę, którą chcesz przypisać tożsamości zarządzanej. Na przykład Czytelnik. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Tożsamość zarządzana z klastrem obliczeniowym

Aby uzyskać więcej informacji, zobacz Konfigurowanie tożsamości zarządzanej dla klastra obliczeniowego.

Tożsamość zarządzana z wystąpieniem obliczeniowym

Aby uzyskać więcej informacji, zobacz Konfigurowanie tożsamości zarządzanej dla wystąpienia obliczeniowego.

Korzystanie z uwierzytelniania jednostki usługi

DOTYCZY: Zestaw PYTHON SDK azure-ai-ml w wersji 2 (bieżąca)

Uwierzytelnianie za pomocą jednostki usługi używa pakietu Azure Identity dla języka Python. Klasa DefaultAzureCredential wyszukuje następujące zmienne środowiskowe i używa wartości podczas uwierzytelniania jako jednostki usługi:

  • AZURE_CLIENT_ID — Identyfikator klienta zwrócony podczas tworzenia jednostki usługi.
  • AZURE_TENANT_ID — Identyfikator dzierżawy zwrócony podczas tworzenia jednostki usługi.
  • AZURE_CLIENT_SECRET — hasło/poświadczenia wygenerowane dla jednostki usługi.

Napiwek

Podczas programowania rozważ użycie pakietu python-dotenv , aby ustawić te zmienne środowiskowe. Rozszerzenie Python-dotenv ładuje zmienne środowiskowe z .env plików. Plik standardowy dla języka .gitignore Python automatycznie wyklucza .env pliki, więc nie należy ich ewidencjonować w żadnych repozytoriach GitHub podczas programowania.

W poniższym przykładzie pokazano, jak za pomocą polecenia python-dotenv załadować zmienne środowiskowe z .env pliku, a następnie użyć polecenia DefaultAzureCredential w celu utworzenia obiektu poświadczeń:

from dotenv import load_dotenv

if ( os.environ['ENVIRONMENT'] == 'development'):
    print("Loading environment variables from .env file")
    load_dotenv(".env")

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")

Po utworzeniu obiektu poświadczeń klasa MLClient jest używana do nawiązywania połączenia z obszarem roboczym. Na przykład poniższy kod używa metody do ładowania informacji o połączeniu from_config() :

try:
    ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
    # NOTE: Update following workspace information to contain
    #       your subscription ID, resource group name, and workspace name
    client_config = {
        "subscription_id": "<SUBSCRIPTION_ID>",
        "resource_group": "<RESOURCE_GROUP>",
        "workspace_name": "<AZUREML_WORKSPACE_NAME>",
    }

    # write and reload from config file
    import json, os

    config_path = "../.azureml/config.json"
    os.makedirs(os.path.dirname(config_path), exist_ok=True)
    with open(config_path, "w") as fo:
        fo.write(json.dumps(client_config))
    ml_client = MLClient.from_config(credential=credential, path=config_path)

print(ml_client)

Jednostka usługi może również służyć do uwierzytelniania w interfejsie API REST usługi Azure Machine Learning. Używasz przepływu udzielania poświadczeń klienta identyfikatora entra firmy Microsoft, który umożliwia wywołania typu service-to-service na potrzeby uwierzytelniania bezgłowego w zautomatyzowanych przepływach pracy.

Ważne

Jeśli obecnie używasz biblioteki Azure Active Directory Authentication Library (ADAL) w celu uzyskania poświadczeń, zalecamy przeprowadzenie migracji do biblioteki Microsoft Authentication Library (MSAL). Wsparcie biblioteki ADAL zakończyło się 30 czerwca 2022 r.

Aby uzyskać informacje i przykłady dotyczące uwierzytelniania za pomocą biblioteki MSAL, zobacz następujące artykuły:

Korzystanie z uwierzytelniania tożsamości zarządzanej

DOTYCZY: Zestaw PYTHON SDK azure-ai-ml w wersji 2 (bieżąca)

Uwierzytelnianie przy użyciu tożsamości zarządzanej używa pakietu Azure Identity dla języka Python. Aby uwierzytelnić się w obszarze roboczym z maszyny wirtualnej lub klastra obliczeniowego skonfigurowanego przy użyciu tożsamości zarządzanej, użyj DefaultAzureCredential klasy . Ta klasa automatycznie wykrywa, czy tożsamość zarządzana jest używana i używa tożsamości zarządzanej do uwierzytelniania w usługach platformy Azure.

W poniższym przykładzie pokazano użycie DefaultAzureCredential klasy do utworzenia obiektu poświadczeń, a następnie użycie MLClient klasy w celu nawiązania połączenia z obszarem roboczym:

from azure.identity import DefaultAzureCredential

credential = DefaultAzureCredential()
# Check if given credential can get token successfully.
credential.get_token("https://management.azure.com/.default")

try:
    ml_client = MLClient.from_config(credential=credential)
except Exception as ex:
    # NOTE: Update following workspace information to contain
    #       your subscription ID, resource group name, and workspace name
    client_config = {
        "subscription_id": "<SUBSCRIPTION_ID>",
        "resource_group": "<RESOURCE_GROUP>",
        "workspace_name": "<AZUREML_WORKSPACE_NAME>",
    }

    # write and reload from config file
    import json, os

    config_path = "../.azureml/config.json"
    os.makedirs(os.path.dirname(config_path), exist_ok=True)
    with open(config_path, "w") as fo:
        fo.write(json.dumps(client_config))
    ml_client = MLClient.from_config(credential=credential, path=config_path)

print(ml_client)

Korzystanie z dostępu warunkowego

Jako administrator możesz wymusić zasady dostępu warunkowego firmy Microsoft dla użytkowników logujący się do obszaru roboczego. Możesz na przykład wymagać uwierzytelniania dwuskładnikowego lub zezwolić na logowanie tylko z urządzeń zarządzanych. Poniżej przedstawiono identyfikatory aplikacji do użycia na potrzeby dostępu warunkowego:

Application ID Nazwisko Uwaga
d7304df8-741f-47d3-9bc2-df0e24e2071f Aplikacja internetowa usługi Azure Machine Learning Workbench Azure Machine Learning Studio
cb2ff863-7f30-4ced-ab89-a00194bcf6d9 Aplikacja azure AI Studio Azure AI Studio

Sprawdzanie jednostki usługi

Przed dodaniem zasad dostępu warunkowego sprawdź, czy identyfikator aplikacji znajduje się w sekcji Aplikacje dla przedsiębiorstw w witrynie Azure Portal:

Ważne

Aby wykonać kroki opisane w tej sekcji, musisz mieć identyfikator Entra ID P2 firmy Microsoft. Aby uzyskać więcej informacji, zobacz Licencjonowanie microsoft Entra.

  1. Wyszukaj pozycję Aplikacje dla przedsiębiorstw w polu wyszukiwania w górnej części portalu i wybierz wpis aplikacji dla przedsiębiorstw.

    Zrzut ekranu przedstawiający pole wyszukiwania w witrynie Azure Portal z wyszukiwaniem

  2. W obszarze Aplikacje dla przedsiębiorstw użyj pola Wyszukaj według nazwy aplikacji lub identyfikatora obiektu, aby wyszukać wpis, którego chcesz użyć z dostępem warunkowym. Jeśli pojawi się wpis, jednostka usługi już istnieje dla identyfikatora aplikacji. Pomiń pozostałe kroki opisane w tej sekcji i przejdź do sekcji Dodawanie dostępu warunkowego.

    Ważne

    Jedynym filtrem powinien być identyfikator aplikacji rozpoczynający się od. Usuń dowolny inny filtr, który może być obecny.

    Zrzut ekranu przedstawiający wyszukiwanie aplikacji dla przedsiębiorstw bez pasujących wyników.

  3. Jeśli nie pojawi się żaden wpis, użyj następującego polecenia cmdlet programu Azure PowerShell , aby utworzyć jednostkę usługi dla identyfikatora aplikacji:

    New-AzAdServicePrincipal -ApplicationId "application-ID"
    

    Na przykład New-AzADServicePrincipal -ApplicationId "d7304df8-741f-47d3-9bc2-df0e24e2071f".

  4. Po utworzeniu jednostki usługi wróć do aplikacji dla przedsiębiorstw i sprawdź, czy możesz teraz znaleźć identyfikator aplikacji. Listę identyfikatorów można znaleźć w sekcji Korzystanie z dostępu warunkowego.

Dodawanie dostępu warunkowego

Aby użyć dostępu warunkowego, przypisz zasady dostępu warunkowego do identyfikatora aplikacji. Jeśli aplikacja nie jest wyświetlana w obszarze Dostęp warunkowy, wykonaj kroki opisane w sekcji Sprawdzanie jednostki usługi.

Następne kroki