Создание управляемой частной конечной точки для Azure Data Explorer

Управляемые частные конечные точки — это необязательный метод для подключения к ресурсам Azure, которые очень защищены. Это односторонняя частная связь, которая позволяет Azure Data Explorer подключаться к другим защищенным службам. Из этой статьи вы узнаете, как создать управляемую частную конечную точку и подключить ее к источнику данных.

Замечание

Вместо использования управляемых частных конечных точек используйте управляемую идентичность для подключения к Azure Storage (за исключением потока событий Event Grid) и Azure Event Hubs. Чтобы подключиться с помощью управляемого удостоверения, настройте ресурс службы хранилища Azure или Центров событий для распознавания Azure Data Explorer как доверенной службы. Затем используйте Управляемое удостоверение, чтобы предоставить доступ, создав исключение в сетевых правилах для доверенных служб Azure.

Предпосылки

Создание управляемой частной конечной точки с помощью портала Azure

Создайте управляемую частную конечную точку с помощью портала для кластера, используемого при доступе к хранилищу.

  1. На портале Azure перейдите в кластер и выберите "Сеть".

  2. Выберите управляемые частные конечные точки и нажмите кнопку "Добавить".

    Снимок экрана: страница сети, на которой показан первый шаг при создании управляемой частной конечной точки.

  3. На панели "Новая управляемая частная конечная точка " введите сведения о ресурсе со следующими сведениями и нажмите кнопку "Далее".

    Снимок экрана: страница сети, на которой показан второй шаг при создании управляемой частной конечной точки.

    Настройки Рекомендуемое значение Описание поля
    Имя mpeToStorage Имя управляемой частной конечной точки
    Подписка Ваша подписка Выберите подписку Azure, которую вы хотите использовать для кластера.
    Тип ресурса Microsoft.Storage/storageAccounts Выберите нужный тип ресурса для источника данных.
    Имя ресурса Делиться Выберите кластер, который должен использоваться в качестве назначения для новой частной конечной точки Azure
    Целевой субресурс блоб Выберите соответствующий целевой объект для источника данных.
  4. Выберите «Создать», чтобы создать ресурс управляемой частной конечной точки.

Создание управляемой частной конечной точки с помощью REST API

Чтобы создать управляемую частную конечную точку, выполните один вызов API к поставщику ресурсов Kusto . Для следующих типов ресурсов можно создать управляемую частную конечную точку:

  • Microsoft.Storage/storageAccounts (подресурс может быть "blob" или "dfs")
  • Microsoft.EventHub/namespaces (subresource "namespace")
  • Microsoft.Devices/IoTHubs (подресурс "iotHub")
  • Microsoft.KeyVault/vaults (подресурс "vault")
  • Microsoft.Sql/servers (подресурс "sqlServer")
  • Microsoft.Kusto/clusters (подресурс "cluster")
  • Microsoft.DigitalTwins/digitalTwinsInstance (подресурс "digitaltwinsinstance")

В следующем примере вы используете ARMclient в PowerShell для создания управляемой частной конечной точки с помощью REST API.

Замечание

Для подключения к учетной записи хранения с помощью ресурса "dfs" требуется еще одна управляемая частная конечная точка к подресурсу "blob".

Предварительные требования для использования REST API

  1. Установка choco

  2. Установка ARMClient

    choco install armclient
    
  3. Вход с помощью ARMClient

    armclient login
    

Создание управляемой частной конечной точки в Центрах событий Azure

Используйте следующий вызов REST API, чтобы включить управляемую частную конечную точку в службу Центров событий:

  1. Выполните следующую команду, чтобы создать управляемую частную конечную точку в службе Центров событий:

    # Replace the <...> placeholders with the correct values
    armclient PUT /subscriptions/<subscriptionIdADX>/resourceGroups/<resourceGroupNameADX>/providers/Microsoft.Kusto/clusters/<clusterName>/managedPrivateEndpoints/<newMpeName>?api-version=2022-02-01 @"
    {
        'properties': {
            'privateLinkResourceId':'/subscriptions/<subscriptionIdEventHub>/resourceGroups/<resourceGroupNameEventHub>/providers/Microsoft.EventHub/namespaces/<EventHubNamespace>',
            'groupId':'namespace',
            'requestMessage':'Please Approve.'
        }
    }
    "@
    
  2. Проверьте ответ.

    {
      "id": "/subscriptions/<subscriptionIdADX>/resourceGroups/<resourceGroupNameADX>/providers/Microsoft.Kusto/Clusters/<clusterName>/ManagedPrivateEndpoints/<newMpeName>",
      "name": "<clusterName>/<newMpeName>",
      "type": "Microsoft.Kusto/Clusters/ManagedPrivateEndpoints",
      "location": "DummyLocation",
      "properties": {
        "privateLinkResourceId": "/subscriptions/<subscriptionIdEventHub>/resourceGroups/<resourceGroupNameEventHub>/providers/Microsoft.EventHub/namespaces/<EventHubNamespace>",
        "groupId": "namespace",
        "requestMessage": "Please Approve.",
        "provisioningState": "Creating"
      }
    }
    

Создание управляемой приватной конечной точки для учетной записи хранения Azure

Используйте следующий вызов REST API, чтобы включить управляемую частную конечную точку для BLOB-хранилища Azure.

  1. Выполните следующую команду, чтобы создать управляемую частную конечную точку в Центрах событий:

    #replace the <...> placeholders with the correct values
    armclient PUT /subscriptions/<subscriptionIdADX>/resourceGroups/<resourceGroupNameADX>/providers/Microsoft.Kusto/clusters/<clusterName>/managedPrivateEndpoints/<newMpeName>?api-version=2022-02-01 @"
    {
        'properties': {
            'privateLinkResourceId':'/subscriptions/<subscriptionIdStorage>/resourceGroups/<resourceGroupNameStorage>/providers/Microsoft.Storage/storageAccounts/<storageAccountName>',
            'groupId':'blob',
            'requestMessage':'Please Approve.'
        }
    }
    "@
    
  2. Проверьте ответ.

    {
      "id": "/subscriptions/<subscriptionIdADX>/resourceGroups/<resourceGroupNameADX>/providers/Microsoft.Kusto/Clusters/<clusterName>/ManagedPrivateEndpoints/<newMpeName>",
      "name": "<clusterName>/<newMpeName>",
      "type": "Microsoft.Kusto/Clusters/ManagedPrivateEndpoints",
      "location": "DummyLocation",
      "properties": {
        "privateLinkResourceId": "/subscriptions/<subscriptionIdStorage>/resourceGroups/<resourceGroupNameStorage>/providers/Microsoft.Storage/storageAccounts/<storageAccountName>",
        "groupId": "blob",
        "requestMessage": "Please Approve.",
        "provisioningState": "Creating"
      }
    }
    

Как проверить ход выполнения

Чтобы проверить ход миграции управляемой частной конечной точки, выполните следующую команду:

  1. Выполните следующую команду:

    #replace the <...> placeholders with the correct values
    armclient GET /subscriptions/<subscriptionIdADX>/resourceGroups/<resourceGroupNameADX>/providers/Microsoft.Kusto/clusters/<clusterName>/managedPrivateEndpoints/<newMpeName>?api-version=2022-02-01
    
  2. Проверьте ответ.

    {
      "id": "/subscriptions/<subscriptionIdADX>/resourceGroups/<resourceGroupNameADX>/providers/Microsoft.Kusto/Clusters/<clusterName>/ManagedPrivateEndpoints/<newMpeName>",
      "name": "<clusterName>/<newMpeName>",
      "type": "Microsoft.Kusto/Clusters/ManagedPrivateEndpoints",
      "location": "DummyLocation",
      "properties": {
        "privateLinkResourceId": "/subscriptions/02de0e00-8c52-405c-9088-1342de78293d/resourceGroups/<resourceGroupNameADX>/providers/Microsoft.<service>/<...>/<name>",
        "groupId": "<groupId>",
        "requestMessage": "Please Approve.",
        "provisioningState": "Succeeded"
      },
      "systemData": {
        "createdBy": "<UserName>",
        "createdByType": "User",
        "createdAt": "2022-02-05T08:29:54.2912851Z",
        "lastModifiedBy": "chrisqpublic@contoso.com",
        "lastModifiedByType": "User",
        "lastModifiedAt": "2022-02-05T08:29:54.2912851Z"
      }
    }
    

Утвердите управляемую частную конечную точку

Независимо от метода, используемого для создания управляемой частной конечной точки, необходимо утвердить его создание в целевом ресурсе. Чтобы утвердить управляемую частную конечную точку в службе Центров событий:

  1. На портале Azure перейдите в службу Центров событий и выберите "Сеть".

  2. Выберите подключения к частной конечной точке, выберите созданную управляемую частную конечную точку и нажмите кнопку "Утвердить".

    Снимок экрана страницы сетевых настроек, показывающий утверждение управляемой частной конечной точки для службы Центров событий.

  3. В столбце состояния подключения убедитесь, что управляемая частная конечная точка утверждена.

    Снимок экрана: страница сетевых настроек, на которой показана утвержденная управляемая частная конечная точка для службы Event Hubs.

Теперь кластер может подключиться к ресурсу с помощью подключения к управляемой частной конечной точке.

Создание нескольких управляемых частных конечных точек

Вы можете создать несколько управляемых частных конечных точек с помощью шаблонов ARM и Terraform. Следуйте следующим примерам, чтобы убедиться, что управляемая частная конечная точка в пространстве имен Центров событий создается перед конечной точкой для аккаунта хранения.

В следующем примере используется шаблон ARM для создания двух управляемых частных конечных точек в кластере Azure Data Explorer. Первая конечная точка подключается к пространству имен Центров событий. Вторая конечная точка подключается к учетной записи хранилища при наличии зависимости, обеспечивающей, что конечная точка для Центров событий создается сначала.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "cluster_name": {
            "defaultValue": "<ADX cluster name>",
            "type": "String"
        },
        "eventhub_resource_id": {
            "defaultValue": "<Eventhub resource id>",
            "type": "String"
        },
        "storage_resource_id": {
            "defaultValue": "<Storage resource id>",
            "type": "String"
        },
        "managed_pe_eventhub_name": {
            "defaultValue": "<name of the managed private endpoint to Event Hub>",
            "type": "String"
        },
        "managed_pe_storage_name": {
            "defaultValue": "<name of the managed private endpoint to Storage>",
            "type": "String"
        }
    },
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Kusto/Clusters",
            "apiVersion": "2023-08-15",
            "name": "[parameters('cluster_name')]",
            "location": "<region of the cluster>",
            "sku": {...},
            "zones": {...}
            "properties": {...}
        },
        {
            "type": "Microsoft.Kusto/Clusters/ManagedPrivateEndpoints",
            "apiVersion": "2023-08-15",
            "name": "[concat(parameters('cluster_name'), '/', parameters('managed_pe_eventhub_name'))]",
            "dependsOn": [
                "[resourceId('Microsoft.Kusto/Clusters', parameters('cluster_name'))]"
            ],
            "properties": {
                "privateLinkResourceId": "[parameters('eventhub_resource_id')]",
                "groupId": "namespace",
                "requestMessage": "Please approve"
            }
        },
        {
            "type": "Microsoft.Kusto/Clusters/ManagedPrivateEndpoints",
            "apiVersion": "2023-08-15",
            "name": "[concat(parameters('cluster_name'), '/', parameters('managed_pe_storage_name'))]",
            "dependsOn": [
                "[resourceId('Microsoft.Kusto/Clusters', parameters('cluster_name'))]",
                "[resourceId('Microsoft.Kusto/Clusters/ManagedPrivateEndpoints', parameters('cluster_name'), parameters('managed_pe_eventhub_name'))]"
            ],
            "properties": {
                "privateLinkResourceId": "[parameters('storage_resource_id')]",
                "groupId": "blob",
                "requestMessage": "Please approve"
            }
        }
    ]
}

Автоматическое утверждение

Если запрашивающее удостоверение имеет разрешение Microsoft.<провайдер>/<ResourceType>/privateEndpointConnectionsApproval/action на целевой ресурс управляемой частной конечной точки, вы можете автоматически утвердить управляемую частную конечную точку.