Konfigurowanie uwierzytelniania dla zasobów i przepływów pracy usługi Azure Machine Edukacja przy użyciu zestawu SDK w wersji 1

DOTYCZY: Zestaw SDK języka Python azureml w wersji 1

Dowiedz się, jak skonfigurować uwierzytelnianie w obszarze roboczym usługi Azure Machine Edukacja. Uwierzytelnianie w obszarze roboczym usługi Azure Machine Edukacja 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 jest używana, gdy potrzebny jest zautomatyzowany proces uwierzytelniania 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. Uwierzytelnianie interfejsu wiersza polecenia platformy Azure jest używane podczas eksperymentowania i programowania iteracyjnego lub gdy potrzebny jest zautomatyzowany proces uwierzytelniania w usłudze przy użyciu wstępnie uwierzytelnionej sesji. 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 Edukacja SDK 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. Usługa Azure Machine Edukacja klastrów obliczeniowych i wystąpień obliczeniowych można również skonfigurować tak, aby używała 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, podczas gdy 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 Edukacja.

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

  • Tworzenie obszaru roboczego usługi Azure Machine Edukacja.
  • Skonfiguruj środowisko programistyczne, aby zainstalować zestaw SDK usługi Azure Machine Edukacja lub użyć wystąpienia obliczeniowego usługi Azure Machine Edukacja z już zainstalowanym zestawem SDK.

Identyfikator usługi Microsoft Entra

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 Edukacja, aby uzyskać informacje na temat udzielania im dostępu do obszaru roboczego i innych operacji w usłudze Azure Machine Edukacja.

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ć Twoją domyślną przeglądarkę, zrobi to i zał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 tym użyciem .--sdk-auth

    Dane wyjściowe będą JSON podobne do poniższych. Zanotuj clientIdpola , clientSecreti tenantId , ponieważ będą one 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 Edukacja, 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 dla danego scenariusza, zobacz Zarządzanie dostępem do obszaru roboczego usługi Azure Machine Edukacja.

Konfigurowanie tożsamości zarządzanej

Ważne

Tożsamość zarządzana jest obsługiwana tylko w przypadku korzystania z zestawu AZURE Machine Edukacja SDK z maszyny wirtualnej platformy Azure lub z klastrem obliczeniowym lub wystąpieniem obliczeniowym usługi Azure Machine Edukacja.

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. Przypisz następującą rolę. Aby uzyskać szczegółowe instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

    Ustawienie Wartość
    Rola Rola, którą chcesz przypisać.
    Przypisz dostęp do Tożsamość zarządzana
    Członkowie Utworzona wcześniej tożsamość zarządzana

    Add role assignment page in Azure portal.

Tożsamość zarządzana z klastrem obliczeniowym

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

Korzystanie z uwierzytelniania interakcyjnego

Ważne

Uwierzytelnianie interakcyjne używa przeglądarki i wymaga plików cookie (w tym plików cookie innych firm). Jeśli wyłączono pliki cookie, może zostać wyświetlony komunikat o błędzie, taki jak "nie mogliśmy Cię zalogować". Ten błąd może również wystąpić, jeśli włączono uwierzytelnianie wieloskładnikowe firmy Microsoft Entra.

Większość przykładów w dokumentacji i przykładach używa uwierzytelniania interakcyjnego. Na przykład w przypadku korzystania z zestawu SDK istnieją dwa wywołania funkcji, które automatycznie wyświetlają monit o przepływ uwierzytelniania opartego na interfejsie użytkownika:

  • from_config() Wywołanie funkcji spowoduje wyświetlenie monitu.

    from azureml.core import Workspace
    ws = Workspace.from_config()
    

    Funkcja from_config() szuka pliku JSON zawierającego informacje o połączeniu z obszarem roboczym.

  • Użycie konstruktora Workspace w celu udostępnienia informacji o subskrypcji, grupie zasobów i obszarze roboczym spowoduje również wyświetlenie monitu o uwierzytelnianie interakcyjne.

    ws = Workspace(subscription_id="your-sub-id",
                  resource_group="your-resource-group-id",
                  workspace_name="your-workspace-name"
                  )
    

Napiwek

Jeśli masz dostęp do wielu dzierżaw, może być konieczne zaimportowanie klasy i jawne zdefiniowanie docelowej dzierżawy. Wywołanie konstruktora polecenia spowoduje InteractiveLoginAuthentication również wyświetlenie monitu o zalogowanie się podobne do powyższych wywołań.

from azureml.core.authentication import InteractiveLoginAuthentication
interactive_auth = InteractiveLoginAuthentication(tenant_id="your-tenant-id")

W przypadku korzystania z interfejsu wiersza polecenia az login platformy Azure polecenie jest używane do uwierzytelniania sesji interfejsu wiersza polecenia. Aby uzyskać więcej informacji, zobacz Wprowadzenie do interfejsu wiersza polecenia platformy Azure.

Napiwek

Jeśli używasz zestawu SDK ze środowiska, w którym wcześniej uwierzytelniono się interaktywnie przy użyciu interfejsu wiersza polecenia platformy Azure, możesz użyć AzureCliAuthentication klasy do uwierzytelniania w obszarze roboczym przy użyciu poświadczeń buforowanych przez interfejs wiersza polecenia:

from azureml.core.authentication import AzureCliAuthentication
cli_auth = AzureCliAuthentication()
ws = Workspace(subscription_id="your-sub-id",
               resource_group="your-resource-group-id",
               workspace_name="your-workspace-name",
               auth=cli_auth
               )

Korzystanie z uwierzytelniania jednostki usługi

Aby uwierzytelnić się w obszarze roboczym z zestawu SDK przy użyciu jednostki usługi, użyj konstruktora ServicePrincipalAuthentication klasy. Użyj wartości, które otrzymasz podczas tworzenia dostawcy usług jako parametrów. Parametr tenant_id jest mapowy na tenantId z góry, service_principal_id mapuje na clientId, i service_principal_password mapuje na clientSecret.

from azureml.core.authentication import ServicePrincipalAuthentication

sp = ServicePrincipalAuthentication(tenant_id="your-tenant-id", # tenantID
                                    service_principal_id="your-client-id", # clientId
                                    service_principal_password="your-client-secret") # clientSecret

Zmienna sp zawiera teraz obiekt uwierzytelniania używany bezpośrednio w zestawie SDK. Ogólnie rzecz biorąc, dobrym pomysłem jest przechowywanie identyfikatorów/wpisów tajnych użytych powyżej w zmiennych środowiskowych, jak pokazano w poniższym kodzie. Przechowywanie w zmiennych środowiskowych uniemożliwia przypadkowe zaewidencjonowanie informacji w repozytorium GitHub.

import os

sp = ServicePrincipalAuthentication(tenant_id=os.environ['AML_TENANT_ID'],
                                    service_principal_id=os.environ['AML_PRINCIPAL_ID'],
                                    service_principal_password=os.environ['AML_PRINCIPAL_PASS'])

W przypadku zautomatyzowanych przepływów pracy uruchamianych w języku Python i używania zestawu SDK można używać tego obiektu w większości przypadków do uwierzytelniania. Poniższy kod uwierzytelnia się w obszarze roboczym przy użyciu utworzonego obiektu uwierzytelniania.

from azureml.core import Workspace

ws = Workspace.get(name="ml-example",
                   auth=sp,
                   subscription_id="your-sub-id",
                   resource_group="your-rg-name")
ws.get_details()

Korzystanie z uwierzytelniania tożsamości zarządzanej

Aby uwierzytelnić się w obszarze roboczym z maszyny wirtualnej, klastra obliczeniowego lub wystąpienia obliczeniowego skonfigurowanego przy użyciu tożsamości zarządzanej, użyj MsiAuthentication klasy . W poniższym przykładzie pokazano, jak używać tej klasy do uwierzytelniania w obszarze roboczym:

from azureml.core.authentication import MsiAuthentication

msi_auth = MsiAuthentication()

ws = Workspace(subscription_id="your-sub-id",
                resource_group="your-resource-group-id",
                workspace_name="your-workspace-name",
                auth=msi_auth
                )

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. Aby użyć dostępu warunkowego dla obszarów roboczych usługi Azure Machine Edukacja, przypisz zasady dostępu warunkowego do aplikacji o nazwie Azure Machine Edukacja. Identyfikator aplikacji to 0736f41a-0425-bdb5-1563eff02385.

Następne kroki