Compartilhar via


Criar um ponto de extremidade privado gerenciado para o Azure Data Explorer

Os pontos de extremidade privados gerenciados são um método opcional para se conectar aos recursos do Azure que são altamente protegidos. São conexões privadas unidirecionais que permitem que o Azure Data Explorer se conecte a outros serviços protegidos. Neste artigo, você aprenderá a criar um ponto de extremidade privado gerenciado e conectá-lo à sua fonte de dados.

Observação

É recomendável usar uma identidade gerenciada para se conectar ao Armazenamento do Azure (exceto ao fluxo da Grade de Eventos) e aos Hubs de Eventos do Azure, em vez de pontos de extremidade privados gerenciados. Para se conectar usando uma identidade gerenciada, configure o recurso de Armazenamento do Azure ou Hubs de Eventos para reconhecer o Azure Data Explorer como um serviço confiável. Em seguida, use a Identidade Gerenciada para conceder acesso criando uma exceção de regra de rede para serviços confiáveis do Azure.

Pré-requisitos

Criar um ponto de extremidade privado gerenciado usando o portal do Azure

Você pode criar um ponto de extremidade privado gerenciado usando o portal do seu cluster a ser usado ao acessar seu armazenamento.

  1. No portal do Azure, navegue até seu cluster e selecione Rede.

  2. Selecione Pontos de extremidade privados gerenciados e, em seguida, Adicionar.

    Captura de tela da página de rede, mostrando a primeira etapa na criação de um ponto de extremidade privado gerenciado.

  3. No painel Novo ponto de extremidade privado gerenciado, preencha os detalhes do recurso com as informações a seguir e selecione Avançar.

    Captura de tela da página de rede, mostrando a segunda etapa na criação de um ponto de extremidade privado gerenciado.

    Configuração Valor sugerido Descrição do campo
    Nome mpeToStorage O nome do ponto de extremidade privado gerenciado
    Assinatura Sua assinatura Selecione a assinatura do Azure que você deseja usar para seu cluster
    Tipo de recurso Microsoft.Storage/storageAccounts Selecione o tipo de recursos relevante que você deseja para sua fonte de dados.
    Nome do recurso Compartilhar Escolha o cluster que deve ser usado como destino para o novo Ponto de Extremidade Privado do Azure
    Sub-recurso de destino BLOB Selecione o destino relevante para sua fonte de dados.
  4. Selecione Criar para criar o recurso de ponto de extremidade privado gerenciado.

Criar um ponto de extremidade privado gerenciado usando a API REST

A criação de um ponto de extremidade privado gerenciado requer uma única chamada à API para o provedor de recursos Kusto. Você pode estabelecer um ponto de extremidade privado gerenciado para os seguintes tipos de recursos:

  • Microsoft.Storage/storageAccounts (o sub-recurso pode ser "blob" ou "dfs")
  • Microsoft.EventHub/namespaces (sub-recurso "namespace")
  • Microsoft.Devices/IoTHubs (sub-recurso "iotHub")
  • Microsoft.KeyVault/vaults (sub-recurso "vault")
  • Microsoft.Sql/servers (sub-recurso "sqlServer")
  • Microsoft.Kusto/clusters (sub-recurso "cluster")
  • Microsoft.DigitalTwins/digitalTwinsInstance (sub-recurso "digitaltwinsinstance")

No exemplo a seguir, você usará o ARMclient no PowerShell para criar um ponto de extremidade privado gerenciado usando a API REST.

Observação

Conectar-se a uma conta de armazenamento de um recurso "dfs" requer um ponto de extremidade privado gerenciado adicional para o sub-recurso "blob".

Pré-requisitos para usar a API REST

  1. Instalar o choco

  2. Instalar o ARMClient

    choco install armclient
    
  3. Fazer logon com o ARMClient

    armclient login
    

Criar um ponto de extremidade privado gerenciado para os Hubs de Eventos do Azure

Use a seguinte chamada à API REST para habilitar o ponto de extremidade privado gerenciado para um serviço dos Hubs de Eventos:

  1. Execute o seguinte comando para criar um ponto de extremidade privado gerenciado para um serviço dos Hubs de Eventos:

    # 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. Verifique a resposta.

    {
      "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"
      }
    }
    

Criar um ponto de extremidade privado gerenciado para uma conta do Armazenamento do Azure

Use a seguinte chamada à API REST para habilitar o ponto de extremidade privado gerenciado para um blob do Armazenamento do Azure:

  1. Execute o seguinte comando para criar um ponto de extremidade privado gerenciado nos Hubs de Eventos:

    #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. Verifique a resposta.

    {
      "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"
      }
    }
    

Como verificar o andamento

Para verificar o andamento da migração de ponto de extremidade privado gerenciado, use o seguinte comando:

  1. Execute o comando a seguir:

    #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. Verifique a resposta.

    {
      "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"
      }
    }
    

Aprovar o ponto de extremidade privado gerenciado

Seja qual for o método usado para criar o ponto de extremidade privado gerenciado, você deve aprovar sua criação no recurso de destino. Para aprovar um ponto de extremidade privado gerenciado para um serviço de Hubs de Eventos:

  1. No portal do Azure, navegue até seu serviço dos Hubs de Eventos e selecione Rede.

  2. Selecione Conexões de ponto de extremidade privado, selecione o ponto de extremidade privado gerenciado que você criou e selecione Aprovar.

    Captura de tela da página de rede, mostrando a aprovação do ponto de extremidade privado gerenciado para o serviço Hubs de Eventos.

  3. Na coluna Estado de conexão, verifique se o ponto de extremidade privado gerenciado foi aprovado.

    Captura de tela da página de rede, mostrando o ponto de extremidade privado gerenciado aprovado para o serviço Hubs de Eventos.

Agora, o cluster pode se conectar ao recurso usando a conexão de ponto de extremidade privado gerenciado.

Criar vários pontos de extremidade privados gerenciados

Você pode criar vários pontos de extremidade privados gerenciados usando modelos do ARM e o Terraform. Os exemplos a seguir garantem que o ponto de extremidade privado gerenciado para o namespace dos Hubs de Eventos seja criado antes do da conta de armazenamento.

O exemplo a seguir usa um modelo do ARM para criar dois pontos de extremidade privados gerenciados em um cluster do Azure Data Explorer. O primeiro ponto de extremidade se conecta a um namespace dos Hubs de Eventos. O segundo ponto de extremidade se conecta a uma conta de armazenamento, com uma dependência que garante que o ponto de extremidade dos Hubs de Eventos seja criado primeiro.

{
    "$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"
            }
        }
    ]
}

Aprovação automática

Você pode aprovar automaticamente um ponto de extremidade privado gerenciado se a identidade solicitante tiver a < no recurso de destino do ponto de extremidade> privado gerenciado.