Azure Machine Learning kaynakları ve iş akışları için kimlik doğrulamasını ayarlama

ŞUNLAR IÇIN GEÇERLIDIR: Azure CLI ml uzantısı v2 (geçerli)Python SDK azure-ai-ml v2 (geçerli)

Azure CLI veya Azure Machine Learning SDK v2'den Azure Machine Learning çalışma alanınızda kimlik doğrulamasını ayarlamayı öğrenin. Azure Machine Learning çalışma alanınızda kimlik doğrulaması çoğu şey için Microsoft Entra Id'yi temel alır. Genel olarak, çalışma alanına bağlanırken kullanabileceğiniz dört kimlik doğrulama iş akışı vardır:

  • Etkileşimli: Microsoft Entra Id'de hesabınızı doğrudan kimlik doğrulaması yapmak veya kimlik doğrulaması için kullanılan bir belirteç almak için kullanırsınız. Etkileşimli kimlik doğrulaması, deneme ve yinelemeli geliştirme sırasında kullanılır. Etkileşimli kimlik doğrulaması, kaynaklara (web hizmeti gibi) erişimi kullanıcı bazında denetlemenizi sağlar.

  • Hizmet sorumlusu: Microsoft Entra Id'de bir hizmet sorumlusu hesabı oluşturur ve kimlik doğrulaması yapmak veya belirteç almak için bu hesabı kullanırsınız. Hizmet sorumlusu, kullanıcı etkileşimi gerektirmeden hizmette kimlik doğrulaması yapmak için otomatik bir işleme ihtiyacınız olduğunda kullanılır. Örneğin, eğitim kodu her değiştiğinde modeli eğiten ve test eden sürekli tümleştirme ve dağıtım betiği.

  • Azure CLI oturumu: Kimlik doğrulaması için etkin bir Azure CLI oturumu kullanırsınız. Machine Learning için Azure CLI uzantısı ( ml uzantı veya CLI v2), Azure Machine Learning ile çalışmaya yönelik bir komut satırı aracıdır. Kimlik bilgilerini Python kodunda depolamadan veya kullanıcıdan kimlik doğrulaması istemeden yerel iş istasyonunuzda Azure CLI aracılığıyla Azure'da oturum açabilirsiniz. Benzer şekilde, azure CLI'nin kimliğini bir hizmet sorumlusu kimliğiyle doğrularken sürekli tümleştirme ve dağıtım işlem hatlarının bir parçası olarak aynı betikleri yeniden kullanabilirsiniz.

  • Yönetilen kimlik: Azure Machine Learning SDK v2'yi bir işlem örneğinde veya azure sanal makinesinde kullanırken, Azure için yönetilen kimlik kullanabilirsiniz. Bu iş akışı, kimlik bilgilerini Python kodunda depolamadan veya kullanıcıdan kimlik doğrulaması istemeden VM'nin yönetilen kimliği kullanarak çalışma alanına bağlanmasını sağlar. Azure Machine Learning işlem kümeleri, modelleri eğitirken çalışma alanına erişmek için yönetilen kimlik kullanacak şekilde de yapılandırılabilir.

Kullanılan kimlik doğrulama iş akışından bağımsız olarak, kaynaklara izin verilen erişim düzeyini (yetkilendirme) kapsamak için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanılır. Örneğin, bir yönetici veya otomasyon işlemi bir işlem örneği oluşturma erişimine sahip olabilir, ancak bunu kullanamazken, veri bilimcisi bunu kullanabilir, ancak silemez veya oluşturamayabilir. Daha fazla bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.

Microsoft Entra Koşullu Erişim, her kimlik doğrulama iş akışı için çalışma alanına erişimi daha fazla denetlemek veya kısıtlamak için kullanılabilir. Örneğin, bir yönetici yalnızca yönetilen cihazlardan çalışma alanı erişimine izin verebilir.

Önkoşullar

Microsoft Entra Kimliği

Çalışma alanınız için tüm kimlik doğrulama iş akışları Microsoft Entra ID'ye dayanır. Kullanıcıların tek tek hesapları kullanarak kimlik doğrulamasını istiyorsanız, Microsoft Entra Kimliğinizde hesapları olmalıdır. Hizmet sorumlularını kullanmak istiyorsanız, bunların Microsoft Entra Kimliğinizde mevcut olması gerekir. Yönetilen kimlikler, Microsoft Entra Id'nin de bir özelliğidir.

Microsoft Entra Id hakkında daha fazla bilgi için bkz . Microsoft Entra kimlik doğrulaması nedir?

Microsoft Entra hesaplarını oluşturduktan sonra, Azure Machine Learning'deki çalışma alanına ve diğer işlemlere erişim verme hakkında bilgi için bkz. Azure Machine Learning çalışma alanına erişimi yönetme.

Etkileşimli kimlik doğrulamayı kullanma

ŞUNLAR IÇIN GEÇERLIDIR: Python SDK'sı azure-ai-ml v2 (geçerli)

Etkileşimli kimlik doğrulaması, Python için Azure Kimlik paketini kullanır. Çoğu örnek, kimlik bilgilerinize erişmek için kullanılır DefaultAzureCredential . Belirteç gerektiğinde birden çok kimlik (EnvironmentCredential, ManagedIdentityCredential, , SharedTokenCacheCredential, VisualStudioCodeCredential, AzureCliCredential, AzurePowerShellCredential) kullanarak bir belirteç istendiğinde durdurulmasını ister. Daha fazla bilgi için bkz . DefaultAzureCredential sınıf başvurusu.

Aşağıda, kimlik doğrulaması için kullanımın DefaultAzureCredential bir örneği verilmiştir. kullanarak DefaultAzureCredential kimlik doğrulaması başarısız olursa, bunun yerine web tarayıcınızda kimlik doğrulamasının geri dönüşü kullanılır.

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()

Kimlik bilgisi nesnesi oluşturulduktan sonra, çalışma alanına bağlanmak için MLClient sınıfı kullanılır. Örneğin, aşağıdaki kod bağlantı bilgilerini yüklemek için yöntemini kullanır 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)

Hizmet sorumlusu yapılandırma

Hizmet sorumlusu (SP) kullanmak için önce SP'yi oluşturmanız gerekir. Ardından çalışma alanınıza erişim izni verin. Daha önce de belirtildiği gibi, erişimi denetlemek için Azure rol tabanlı erişim denetimi (Azure RBAC) kullanılır, bu nedenle SP'ye hangi erişimin vereceğine de karar vermeniz gerekir.

Önemli

Hizmet sorumlusu kullanırken, hizmet sorumlusuna , kullanıldığı görev için gereken en düşük erişimi verin. Örneğin, yalnızca bir web dağıtımı için erişim belirtecini okumak için kullanılıyorsa hizmet sorumlusu sahibine veya katkıda bulunana erişim izni vermezsiniz.

En az erişim vermenin nedeni, hizmet sorumlusunun kimlik doğrulaması için parola kullanması ve parolanın otomasyon betiğinin bir parçası olarak depolanabileceğidir. Parola sızdırılırsa, belirli görevler için gereken en düşük erişime sahip olmak, SP'nin kötü amaçlı kullanımını en aza indirir.

SP oluşturmanın ve çalışma alanınıza erişim vermenin en kolay yolu Azure CLI'yi kullanmaktır. Bir hizmet sorumlusu oluşturmak ve çalışma alanınıza erişim vermek için aşağıdaki adımları kullanın:

Dekont

Bu adımların tümünü gerçekleştirmek için abonelikte yönetici olmanız gerekir.

  1. Azure aboneliğinizde kimlik doğrulaması:

    az login
    

    CLI varsayılan tarayıcınızı açabiliyorsa, tarayıcıyı açar ve oturum açma sayfasını yükler. Aksi takdirde, bir tarayıcı açmanız ve komut satırındaki yönergeleri izlemeniz gerekir. Yönergeler, yetkilendirme koduna https://aka.ms/devicelogin göz atmayı ve bu kodu girmeyi içerir.

    Birden çok Azure aboneliğiniz varsa, aboneliği ayarlamak için komutunu kullanabilirsiniz az account set -s <subscription name or ID> . Daha fazla bilgi için bkz . Birden çok Azure aboneliği kullanma.

    Diğer kimlik doğrulama yöntemleri için bkz . Azure CLI ile oturum açma.

  2. Hizmet sorumlusunu oluşturun. Aşağıdaki örnekte ml-auth adlı bir SP oluşturulur:

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

    parametresi --json-auth Azure CLI sürümlerinde >= 2.51.0 kullanılabilir. Bu kullanımdan önceki sürümler kullanılır --sdk-auth.

    Çıkış, aşağıdakine benzer bir JSON olacaktır. Bu makaledeki clientIddiğer adımlar için ihtiyaç duyacağınız için , clientSecretve tenantId alanlarını not alın.

    {
        "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. Önceki adımda döndürülen değeri kullanarak hizmet sorumlusunun clientId ayrıntılarını alın:

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

    Aşağıdaki JSON komutundan elde edilen çıkışın basitleştirilmiş bir örneğidir. Bir sonraki adım için değerine ihtiyacınız olduğundan alanı not objectId alın.

    {
        "accountEnabled": "True",
        "addIns": [],
        "appDisplayName": "ml-auth",
        ...
        ...
        ...
        "objectId": "your-sp-object-id",
        "objectType": "ServicePrincipal"
    }
    
  4. Azure Machine Learning tarafından kullanılan çalışma alanına ve diğer kaynaklara erişim vermek için aşağıdaki makalelerdeki bilgileri kullanın:

    Önemli

    Sahip erişimi, hizmet sorumlusunun çalışma alanınızdaki neredeyse tüm işlemleri gerçekleştirmesine olanak tanır. Bu belgede erişim vermenin nasıl yapıldığını göstermek için kullanılır; Bir üretim ortamında Microsoft, hizmet sorumlusuna amaçladığınız rolü gerçekleştirmek için gereken en düşük erişimi vermenizi önerir. Senaryonuz için gereken erişimle özel rol oluşturma hakkında bilgi için bkz . Azure Machine Learning çalışma alanına erişimi yönetme.

Yönetilen kimliği yapılandırma

Önemli

Yönetilen kimlik yalnızca Azure Sanal Makinesinden, Azure Machine Learning işlem kümesinden veya işlem örneğinden Azure Machine Learning SDK'sı kullanıldığında desteklenir.

VM ile yönetilen kimlik

  1. VM'de Azure kaynakları için sistem tarafından atanan yönetilen kimliği etkinleştirin.

  2. Azure portalında çalışma alanınızı ve ardından Erişim Denetimi (IAM) seçeneğini belirleyin.

  3. Rol ataması ekle sayfasını açmak için Ekle, Rol Ataması Ekle'yi seçin.

  4. Yönetilen kimliği atamak istediğiniz rolü seçin. Örneğin, Okuyucu. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

İşlem kümesi ile yönetilen kimlik

Daha fazla bilgi için bkz . İşlem kümesi için yönetilen kimliği ayarlama.

İşlem örneği ile yönetilen kimlik

Daha fazla bilgi için bkz . İşlem örneği için yönetilen kimliği ayarlama.

Hizmet sorumlusu kimlik doğrulamayı kullanma

ŞUNLAR IÇIN GEÇERLIDIR: Python SDK'sı azure-ai-ml v2 (geçerli)

Hizmet sorumlusuyla kimlik doğrulaması, Python için Azure Kimlik paketini kullanır. DefaultAzureCredential sınıfı aşağıdaki ortam değişkenlerini arar ve hizmet sorumlusu olarak kimlik doğrulaması yaparken değerleri kullanır:

  • AZURE_CLIENT_ID - Hizmet sorumlusunu oluşturduğunuzda döndürülen istemci kimliği.
  • AZURE_TENANT_ID - Hizmet sorumlusunu oluşturduğunuzda döndürülen kiracı kimliği.
  • AZURE_CLIENT_SECRET - Hizmet sorumlusu için oluşturulan parola/kimlik bilgisi.

Bahşiş

Geliştirme sırasında bu ortam değişkenlerini ayarlamak için python-dotenv paketini kullanmayı göz önünde bulundurun. Python-dotenv, dosyalardan .env ortam değişkenlerini yükler. Python için standart .gitignore dosya otomatik olarak dosyaları dışlar .env , bu nedenle geliştirme sırasında hiçbir GitHub deposunda denetlenmemelidir.

Aşağıdaki örnek, python-dotenv kullanarak bir .env dosyadan ortam değişkenlerini yüklemeyi ve ardından kimlik bilgisi nesnesini oluşturmak için kullanmayı DefaultAzureCredential gösterir:

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")

Kimlik bilgisi nesnesi oluşturulduktan sonra, çalışma alanına bağlanmak için MLClient sınıfı kullanılır. Örneğin, aşağıdaki kod bağlantı bilgilerini yüklemek için yöntemini kullanır 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)

Hizmet sorumlusu, Azure Machine Learning REST API'sinde kimlik doğrulaması yapmak için de kullanılabilir. Otomatik iş akışlarında başsız kimlik doğrulaması için hizmet-hizmet çağrılarına izin veren Microsoft Entra Id istemci kimlik bilgileri verme akışını kullanırsınız.

Önemli

Kimlik bilgilerini almak için şu anda Azure Active Directory Kimlik Doğrulama Kitaplığı 'nı (ADAL) kullanıyorsanız, Microsoft Kimlik Doğrulama Kitaplığı'na (MSAL) geçmenizi öneririz. ADAL desteği 30 Haziran 2022'de sona erdi.

MSAL ile kimlik doğrulaması hakkında bilgi ve örnekler için aşağıdaki makalelere bakın:

Yönetilen kimlik kimlik doğrulamayı kullanma

ŞUNLAR IÇIN GEÇERLIDIR: Python SDK'sı azure-ai-ml v2 (geçerli)

Yönetilen kimlikle kimlik doğrulaması, Python için Azure Kimlik paketini kullanır. Yönetilen kimlikle yapılandırılmış bir VM veya işlem kümesinden çalışma alanında kimlik doğrulaması yapmak için sınıfını DefaultAzureCredential kullanın. Bu sınıf, yönetilen kimliğin kullanılıp kullanılmadığını otomatik olarak algılar ve Azure hizmetlerinde kimlik doğrulaması yapmak için yönetilen kimliği kullanır.

Aşağıdaki örnek, kimlik bilgisi nesnesini oluşturmak için sınıfını DefaultAzureCredential ve ardından çalışma alanına bağlanmak için sınıfını kullanmayı MLClient gösterir:

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)

Koşullu Erişim kullanma

Yönetici olarak, çalışma alanında oturum açmış kullanıcılar için Microsoft Entra Koşullu Erişim ilkelerini zorunlu kılabilirsiniz. Örneğin, iki öğeli kimlik doğrulaması gerektirebilir veya yalnızca yönetilen cihazlardan oturum açmaya izin vekleyebilirsiniz. Azure Machine Learning çalışma alanları için Koşullu Erişim'i özellikle kullanmak için Koşullu Erişim ilkesini Azure Machine Learning adlı uygulamaya atayın. Uygulama kimliği : 0736f41a-0425-bdb5-1563eff02385.

Sonraki adımlar