Używanie tożsamości zarządzanej do uwierzytelniania zadania usługi Azure Stream Analytics w usłudze Azure Blob Storage

Uwierzytelnianie tożsamości zarządzanej dla danych wyjściowych usługi Azure Blob Storage zapewnia usłudze Stream Analytics bezpośredni dostęp do konta magazynu zamiast używania parametry połączenia. Oprócz ulepszonych zabezpieczeń ta funkcja umożliwia również zapisywanie danych na koncie magazynu w sieci wirtualnej na platformie Azure.

W tym artykule pokazano, jak włączyć tożsamość zarządzaną dla danych wyjściowych obiektów blob zadania usługi Stream Analytics za pośrednictwem witryny Azure Portal i wdrożenia usługi Azure Resource Manager.

Tworzenie zadania usługi Stream Analytics przy użyciu witryny Azure Portal

Najpierw utworzysz tożsamość zarządzaną dla zadania usługi Azure Stream Analytics. 

  1. W witrynie Azure Portal otwórz zadanie usługi Azure Stream Analytics. 

  2. W menu nawigacji po lewej stronie wybierz pozycję Tożsamość zarządzana znajdującą się w obszarze Konfiguruj. Następnie zaznacz pole wyboru obok pozycji Użyj tożsamości zarządzanej przypisanej przez system i wybierz pozycję Zapisz.

    System assigned managed identity

  3. Jednostka usługi dla tożsamości zadania usługi Stream Analytics jest tworzona w identyfikatorze Entra firmy Microsoft. Cykl życia nowo utworzonej tożsamości jest zarządzany przez platformę Azure. Po usunięciu zadania usługi Stream Analytics skojarzona tożsamość (czyli jednostka usługi) jest automatycznie usuwana przez platformę Azure. 

    Podczas zapisywania konfiguracji identyfikator obiektu (OID) jednostki usługi jest wyświetlany jako identyfikator podmiotu zabezpieczeń, jak pokazano poniżej:

    Principal ID

    Jednostka usługi ma taką samą nazwę jak zadanie usługi Stream Analytics. Jeśli na przykład nazwa zadania to MyASAJob, nazwa jednostki usługi to również MyASAJob. 

Wdrożenie usługi Azure Resource Manager

Korzystanie z usługi Azure Resource Manager umożliwia pełne zautomatyzowanie wdrażania zadania usługi Stream Analytics. Szablony usługi Resource Manager można wdrożyć przy użyciu programu Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. W poniższych przykładach użyto interfejsu wiersza polecenia platformy Azure.

  1. Zasób Microsoft.StreamAnalytics/streamingjobs można utworzyć przy użyciu tożsamości zarządzanej, uwzględniając następującą właściwość w sekcji zasobów szablonu usługi Resource Manager:

    "Identity": {
      "Type": "SystemAssigned",
    },
    

    Ta właściwość informuje usługę Azure Resource Manager o utworzeniu tożsamości zadania usługi Stream Analytics i zarządzaniu nią. Poniżej przedstawiono przykładowy szablon usługi Resource Manager, który wdraża zadanie usługi Stream Analytics z włączoną tożsamością zarządzaną i ujściem danych wyjściowych obiektu blob używającym tożsamości zarządzanej:

    {
        "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "resources": [
            {
                "apiVersion": "2017-04-01-preview",
                "name": "MyStreamingJob",
                "location": "[resourceGroup().location]",
                "type": "Microsoft.StreamAnalytics/StreamingJobs",
                "identity": {
                    "type": "systemAssigned"
                },
                "properties": {
                    "sku": {
                        "name": "standard"
                    },
                    "outputs":[
                        {
                            "name":"output",
                            "properties":{
                                "serialization": {
                                    "type": "JSON",
                                    "properties": {
                                        "encoding": "UTF8"
                                    }
                                },
                                "datasource":{
                                    "type":"Microsoft.Storage/Blob",
                                    "properties":{
                                        "storageAccounts": [
                                            { "accountName": "MyStorageAccount" }
                                        ],
                                        "container": "test",
                                        "pathPattern": "segment1/{date}/segment2/{time}",
                                        "dateFormat": "yyyy/MM/dd",
                                        "timeFormat": "HH",
                                        "authenticationMode": "Msi"
                                    }
                                }
                            }
                        }
                    ]
                }
            }
        ]
    }
    

    Powyższe zadanie można wdrożyć w grupie zasobów ExampleGroup przy użyciu poniższego polecenia interfejsu wiersza polecenia platformy Azure:

    az deployment group create --resource-group ExampleGroup -template-file StreamingJob.json
    
  2. Po utworzeniu zadania możesz użyć usługi Azure Resource Manager, aby pobrać pełną definicję zadania.

    az resource show --ids /subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/StreamingJobs/{RESOURCE_NAME}
    

    Powyższe polecenie zwróci odpowiedź podobną do poniższej:

    {
        "id": "/subscriptions/{SUBSCRIPTION_ID}/resourceGroups/{RESOURCE_GROUP}/providers/Microsoft.StreamAnalytics/streamingjobs/{RESOURCE_NAME}",
        "identity": {
            "principalId": "{PRINCIPAL_ID}",
            "tenantId": "{TENANT_ID}",
            "type": "SystemAssigned",
            "userAssignedIdentities": null
        },
        "kind": null,
        "location": "West US",
        "managedBy": null,
        "name": "{RESOURCE_NAME}",
        "plan": null,
        "properties": {
            "compatibilityLevel": "1.0",
            "createdDate": "2019-07-12T03:11:30.39Z",
            "dataLocale": "en-US",
            "eventsLateArrivalMaxDelayInSeconds": 5,
            "jobId": "{JOB_ID}",
            "jobState": "Created",
            "jobStorageAccount": null,
            "jobType": "Cloud",
            "outputErrorPolicy": "Stop",
            "package": null,
            "provisioningState": "Succeeded",
            "sku": {
                "name": "Standard"
            }
        },
        "resourceGroup": "{RESOURCE_GROUP}",
        "sku": null,
        "tags": null,
        "type": "Microsoft.StreamAnalytics/streamingjobs"
    }
    

    Zanotuj identyfikator principalId z definicji zadania, która identyfikuje tożsamość zarządzaną zadania w ramach identyfikatora Entra firmy Microsoft i zostanie użyta w następnym kroku, aby przyznać zadaniu usługi Stream Analytics dostęp do konta magazynu.

  3. Po utworzeniu zadania zobacz sekcję Nadaj zadaniu usługi Stream Analytics dostęp do konta magazynu w tym artykule.

Nadawanie zadaniu usługi Stream Analytics dostępu do konta magazynu

Istnieją dwa poziomy dostępu, które można wybrać, aby przyznać zadanie usługi Stream Analytics:

  1. Dostęp na poziomie kontenera: ta opcja zapewnia dostęp do określonego istniejącego kontenera.
  2. Dostęp na poziomie konta: ta opcja zapewnia ogólne dostęp do konta magazynu, w tym możliwość tworzenia nowych kontenerów.

Jeśli nie potrzebujesz zadania do tworzenia kontenerów w Twoim imieniu, należy wybrać pozycję Dostęp na poziomie kontenera, ponieważ ta opcja przyzna zadaniu minimalny wymagany poziom dostępu. Obie opcje zostały wyjaśnione poniżej dla witryny Azure Portal i wiersza polecenia.

Uwaga

Ze względu na globalne opóźnienie replikacji lub buforowania może wystąpić opóźnienie, gdy uprawnienia zostaną odwołane lub przyznane. Zmiany powinny zostać odzwierciedlone w ciągu 8 minut.

Udzielanie dostępu za pośrednictwem witryny Azure Portal

Dostęp na poziomie kontenera

  1. Przejdź do okienka konfiguracji kontenera na koncie magazynu.

  2. Wybierz pozycję Kontrola dostępu (IAM) .

  3. Wybierz pozycję 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 Współautor danych w usłudze Blob Storage
    Przypisz dostęp do Użytkownik, grupa lub jednostka usługi
    Członkowie <Nazwa zadania usługi Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

Dostęp na poziomie konta

  1. Przejdź do swojego konta magazynu.

  2. Wybierz pozycję Kontrola dostępu (IAM) .

  3. Wybierz pozycję 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 Współautor danych w usłudze Blob Storage
    Przypisz dostęp do Użytkownik, grupa lub jednostka usługi
    Członkowie <Nazwa zadania usługi Stream Analytics>

    Screenshot that shows Add role assignment page in Azure portal.

Udzielanie dostępu za pośrednictwem wiersza polecenia

Dostęp na poziomie kontenera

Aby udzielić dostępu do określonego kontenera, uruchom następujące polecenie przy użyciu interfejsu wiersza polecenia platformy Azure:

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>/blobServices/default/containers/<container-name>

Dostęp na poziomie konta

Aby udzielić dostępu do całego konta, uruchom następujące polecenie przy użyciu interfejsu wiersza polecenia platformy Azure:

az role assignment create --role "Storage Blob Data Contributor" --assignee <principal-id> --scope /subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>

Tworzenie danych wejściowych lub wyjściowych obiektu blob

Po skonfigurowaniu tożsamości zarządzanej możesz dodać zasób obiektu blob jako dane wejściowe lub wyjściowe do zadania usługi Stream Analytics.

  1. W oknie właściwości wyjściowych ujścia danych wyjściowych usługi Azure Blob Storage wybierz listę rozwijaną Tryb uwierzytelniania i wybierz pozycję Tożsamość zarządzana. Aby uzyskać informacje dotyczące innych właściwości wyjściowych, zobacz Omówienie danych wyjściowych z usługi Azure Stream Analytics. Po zakończeniu kliknij pozycję Zapisz.

    Configure Azure Blob storage output

Włączanie dostępu do sieci wirtualnej

Podczas konfigurowania zapór i sieci wirtualnych konta magazynu można opcjonalnie zezwolić na ruch sieciowy z innych zaufanych usługi firmy Microsoft. Gdy usługa Stream Analytics uwierzytelnia się przy użyciu tożsamości zarządzanej, zapewnia dowód na to, że żądanie pochodzi z zaufanej usługi. Poniżej przedstawiono instrukcje dotyczące włączania tego wyjątku dostępu do sieci wirtualnej.

  1. Przejdź do okienka "Zapory i sieci wirtualne" w okienku konfiguracji konta magazynu.
  2. Upewnij się, że opcja "Zezwalaj na dostęp do tego konta magazynu" jest włączona opcja Zezwalaj na dostęp do zaufanego usługi firmy Microsoft.
  3. Jeśli ją włączono, kliknij przycisk Zapisz.

Enable VNET access

Usuwanie tożsamości zarządzanej

Tożsamość zarządzana utworzona dla zadania usługi Stream Analytics jest usuwana tylko wtedy, gdy zadanie zostanie usunięte. Nie ma możliwości usunięcia tożsamości zarządzanej bez usuwania zadania. Jeśli nie chcesz już używać tożsamości zarządzanej, możesz zmienić metodę uwierzytelniania danych wyjściowych. Tożsamość zarządzana będzie nadal istnieć do momentu usunięcia zadania i zostanie użyta, jeśli zdecydujesz się ponownie użyć uwierzytelniania tożsamości zarządzanej.

Ograniczenia

Poniżej przedstawiono bieżące ograniczenia tej funkcji:

  1. Klasyczne konta usługi Azure Storage.

  2. Konta platformy Azure bez identyfikatora Entra Firmy Microsoft.

  3. Dostęp z wieloma dzierżawami nie jest obsługiwany. Jednostka usługi utworzona dla danego zadania usługi Stream Analytics musi znajdować się w tej samej dzierżawie usługi Microsoft Entra, w której utworzono zadanie, i nie może być używana z zasobem, który znajduje się w innej dzierżawie usługi Microsoft Entra.

Następne kroki