Configure uma ligação indexadora para o Azure SQL Managed Instance usando uma identidade gerida

Note

O Pesquisa de IA do Azure está disponível através do portal Azure, APIs REST e SDKs do Azure. Também sustenta o Foundry IQ, a camada de conhecimento gerida que transforma conteúdos empresariais em bases de conhecimento reutilizáveis e conscientes de permissões para agentes no portal Microsoft Foundry.

Este artigo descreve como configurar a ligação do indexador do Pesquisa de IA do Azure para SQL Managed Instance usando uma identidade gerida em vez de fornecer credenciais na cadeia de conexão.

Pode usar uma identidade gerida atribuída pelo sistema ou uma identidade gerida atribuída pelo utilizador. As identidades geridas são logins Microsoft Entra e requerem atribuições de funções no Azure para aceder a dados no SQL Managed Instance.

Antes de aprender mais sobre esta funcionalidade, deve compreender o que é um indexador e como configurar um indexador para a sua fonte de dados. Para mais informações, consulte Indexadores no Pesquisa de IA do Azure e indexar dados a partir do Base de Dados SQL do Azure.

Pré-requisitos

Atribuir permissões para ler a base de dados

Siga estes passos para atribuir ao sistema de pesquisa permissão de identidade gerida para ler a base de dados SQL Managed Database.

  1. Ligue-se à sua SQL Managed Instance através do SQL Server Management Studio (SSMS) utilizando um dos seguintes métodos:

  2. Autentique usando a sua conta Microsoft Entra.

    A mostrar uma captura de ecrã do diálogo Ligar ao Servidor.

  3. No painel esquerdo, localiza a base de dados SQL que estás a usar como fonte de dados para indexação e clica com o botão direito. Selecione Nova Consulta.

    A mostrar captura de ecrã de uma nova consulta SQL.

  4. Na janela T-SQL, copie os seguintes comandos e inclua os colchetes em torno do nome do seu serviço de pesquisa. Selecione Executar.

    CREATE USER [insert your search service name here or user-assigned managed identity name] FROM EXTERNAL PROVIDER;
    EXEC sp_addrolemember 'db_datareader', [insert your search service name here or user-assigned managed identity name];
    

    A mostrar uma captura de ecrã de como executar uma consulta SQL.

Se mais tarde alterar a identidade do sistema de serviço de pesquisa após atribuir permissões, deve remover a pertença à função e remover o utilizador na base de dados SQL, depois repita a atribuição de permissões. Para remover a associação ao papel e o utilizador, execute os seguintes comandos:

sp_droprolemember 'db_datareader', [insert your search service name or user-assigned managed identity name];

DROP USER IF EXISTS [insert your search service name or user-assigned managed identity name];

Adicionar uma atribuição de funções

Neste passo, dá permissão ao seu serviço Pesquisa de IA do Azure para ler dados da sua SQL Managed Instance.

  1. No portal do Azure, aceda à sua página SQL Managed Instance.

  2. Selecionar controlo de acesso (IAM).

  3. Selecione Adicionar>Adicionar atribuição de função.

    A mostrar captura de ecrã da página Controlo de Acesso.

  4. Selecione o papel de Leitor .

  5. Deixe Atribuir acesso a como utilizador, grupo ou entidade de serviço Microsoft Entra.

  6. Se estiveres a usar uma identidade gerida atribuída pelo sistema, procura o teu serviço de pesquisa e seleciona-o. Se estiver a usar uma identidade gerida atribuída pelo utilizador, procure o nome da identidade gerida atribuída pelo utilizador e selecione-a. Selecione Guardar.

    Aqui está um exemplo para SQL Managed Instance usando uma identidade gerida atribuída pelo sistema:

    A mostrar captura de ecrã da atribuição da função de membro.

Criar a fonte de dados

Crie a fonte de dados e forneça uma identidade gerida atribuída ao sistema.

Identidade gerida atribuída pelo sistema

A API REST, o portal Azure e o SDK .NET suportam identidade gerida atribuída ao sistema.

Quando se liga usando uma identidade gerida atribuída pelo sistema, a única alteração na definição da fonte de dados é o formato da propriedade "credenciais". Você fornece um nome de Catálogo Inicial ou Base de Dados e um ResourceId que não tem chave de conta nem palavra-passe. O ResourceId deve incluir o ID de subscrição de SQL Managed Instance, o grupo de recursos de SQL Managed instance e o nome da base de dados SQL.

Aqui está um exemplo de como criar uma fonte de dados para indexar dados de um SQL Managed Instance usando a API REST Create Data Source e uma cadeia de ligação de identidade gerida. O formato da string de conexão de identidade gerida é o mesmo para a API REST, o SDK .NET e o portal do Azure.

POST https://[service name].search.windows.net/datasources?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-mi-datasource",
    "type" : "azuresql",
    "credentials" : { 
        "connectionString" : "Database=[SQL database name];ResourceId=/subscriptions/[subscription ID]/resourcegroups/[resource group name]/providers/Microsoft.Sql/managedInstances/[SQL Managed Instance name];Connection Timeout=100;"
    },
    "container" : { 
        "name" : "my-table" 
    }
} 

Crie o índice

O índice especifica os campos num documento, atributos e outros construtos que moldam a experiência de pesquisa.

Aqui está uma chamada de API REST para Criar Índice com um campo pesquisávelbooktitle:

POST https://[service name].search.windows.net/indexes?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "my-target-index",
    "fields": [
        { "name": "id", "type": "Edm.String", "key": true, "searchable": false },
        { "name": "booktitle", "type": "Edm.String", "searchable": true, "filterable": false, "sortable": false, "facetable": false }
    ]
}

Criar o indexador

Um indexador liga uma fonte de dados a um índice de pesquisa alvo e fornece um calendário para automatizar a atualização dos dados. Depois de criar o índice e a fonte de dados, crie o indexador.

Aqui está uma chamada à API REST Create Indexer com uma definição de indexador SQL do Azure. O indexador executa quando você submete o pedido.

POST https://[service name].search.windows.net/indexers?api-version=2026-04-01
Content-Type: application/json
api-key: [admin key]

{
    "name" : "sql-mi-indexer",
    "dataSourceName" : "sql-mi-datasource",
    "targetIndexName" : "my-target-index"
}

Resolução de problemas

Se aparecer um erro quando o indexador tenta ligar-se à fonte de dados que diz que o cliente não pode aceder ao servidor, veja os erros comuns do indexador.

Também pode descartar problemas no firewall tentando a ligação com e sem restrições.

Ver também