Conexão a outros recursos do Azure usando uma identidade gerenciada

Você pode configurar um serviço do Azure AI Search para se conectar com outros recursos do Azure usando uma identidade gerenciada atribuída pelo sistema ou pelo usuário e uma atribuição de função do Azure. Identidades gerenciadas e atribuições de função eliminam a necessidade de passar segredos e credenciais em um código ou cadeia de conexão.

Pré-requisitos

  • Um serviço de pesquisa na Camada básica ou superior.

  • Um recurso do Azure que aceita solicitações de entrada de um logon do Microsoft Entra que tem uma atribuição de função válida.

Cenários com suporte

O Azure AI Search pode usar uma identidade gerenciada atribuída pelo sistema ou pelo usuário em conexões de saída com recursos do Azure. Uma identidade gerenciada pelo sistema é indicada quando uma cadeia de conexão é a ID do recurso exclusiva de um serviço ou aplicativo com reconhecimento do Azure AD. Uma identidade gerenciada atribuída pelo usuário é especificada por meio de uma propriedade "identidade".

Um serviço de pesquisa usa o Armazenamento do Microsoft Azure como uma fonte de dados do indexador e como um coletor de dados para sessões de depuração, cache de enriquecimento e armazenamento de conhecimento. Para recursos de pesquisa que gravam novamente no armazenamento, a identidade gerenciada precisa de uma atribuição de função de colaborador, conforme descrito na seção "Atribuir uma função ".

Cenário Identidade gerenciada pelo sistema Identidade gerenciada atribuída pelo usuário (versão prévia)
Conexões entre o indexador e fontes de dados com suporte do Azure1,3 Sim Yes
Azure Key Vault para chaves gerenciadas pelo cliente Sim Yes
Sessões de depuração (hospedadas no Armazenamento do Azure)1 Sim Não
Cache de enriquecimento (hospedado no Armazenamento do Azure)1,2 Sim Yes
Repositório de conhecimento (hospedado no Armazenamento do Azure)1 Sim Yes
Habilidades personalizadas (hospedadas no Azure Functions ou equivalente) Sim Yes
Habilidade de incorporação do Azure OpenAI Sim Yes
Vetorizador Azure OpenAI Sim Yes

1 Para conectividade entre a pesquisa e o armazenamento, sua configuração de segurança de rede impõe restrições sobre qual tipo de identidade gerenciada você pode usar. Somente uma identidade gerenciada pelo sistema pode ser usada para uma conexão da mesma região com o armazenamento por meio da regra de instância de recurso ou exceção de serviço confiável. Consulte Acesso a uma conta de armazenamento protegida pela rede para obter detalhes.

2 Um método para especificar um cache de enriquecimento está no assistente de Importação de dados. Atualmente, o assistente não aceita uma cadeia de conexão de identidade gerenciada para cache de enriquecimento. No entanto, após a conclusão do assistente, você pode atualizar a cadeia de conexão na definição JSON do indexador para especificar uma identidade gerenciada atribuída pelo sistema ou pelo usuário e executar novamente o indexador.

3 Observe que desabilitar chaves na conta de armazenamento do Azure não tem suporte no momento para a Tabela do Azure usada como fonte de dados. Embora a identidade gerenciada seja usada para não fornecer as chaves de armazenamento explicitamente, o serviço de pesquisa de IA ainda usa as chaves para essa implementação.

Criar uma identidade gerenciada do sistema

Quando uma identidade gerenciada atribuída pelo sistema é habilitada, o Azure cria uma identidade para o serviço de pesquisa que pode ser usada para autenticar outros serviços do Azure no mesmo locatário e assinatura. Use essa identidade em atribuições de RBAC (controle de acesso baseado em função do Azure) que permitem o acesso aos dados durante a indexação.

Uma identidade gerenciada atribuída pelo sistema é exclusiva para seu serviço de pesquisa e associada ao serviço durante seu tempo de vida.

  1. Entre no portal do Azure e localize o serviço de pesquisa.

  2. Em Configurações, selecione Identidade.

  3. Na guia Atribuído pelo sistema, em Status, selecione Ativado.

  4. Selecione Salvar.

    Captura de tela da página de Identidade no portal do Azure.

    Depois de salvar, você verá um identificador de objeto que foi atribuído ao serviço de pesquisa.

    Captura de tela de um identificador de objeto de identidade do sistema.

Crie uma identidade gerenciada atribuída pelo usuário (versão prévia)

A identidade gerenciada atribuída pelo usuário é um recurso no Azure. Ela é útil se você precisa de mais granularidade nas atribuições de função, pois você pode criar identidades separadas para diferentes aplicativos e cenários.

Importante

Esse recurso está em versão prévia pública nos termos de uso complementares. Atualmente, não há suporte para identidades gerenciadas atribuídas pelo usuário para conexões com uma conta de armazenamento protegida pela rede. Atualmente, a solicitação de pesquisa requer um endereço IP público.

  1. Entre no Portal do Azure

  2. Selecione + Criar um recurso.

  3. Na barra de pesquisa "Serviços de pesquisa e marketplace", pesquise "Identidade Gerenciada Atribuída pelo Usuário" e selecione Criar.

    Captura de tela do bloco de identidade gerenciada atribuída pelo usuário no Azure Marketplace.

  4. Selecione assinatura, grupo de recursos e região. Dê um nome descritivo à identidade.

  5. Selecione Criar e aguarde até que o recurso conclua a implantação.

    Nas várias etapas seguintes, você atribuirá a identidade gerenciada atribuída pelo usuário ao serviço de pesquisa.

  6. Na página do serviço de pesquisa, em Configurações, selecione Identidade.

  7. Na guia Usuário atribuído, selecione Adicionar.

  8. Escolha a assinatura e, em seguida, selecione o recurso gerenciado atribuído pelo usuário que você criou na etapa anterior.

Permitir acesso ao firewall

Se o recurso do Azure estiver protegido por um firewall, verifique se há uma regra de entrada que admite solicitações de seu serviço de pesquisa.

Atribuir uma função

Uma identidade gerenciada deve ser emparelhada com uma função do Azure que determina as permissões no recurso do Azure.

  • As permissões de leitor de dados são necessárias para conexões de dados do indexador e para acessar uma chave gerenciada pelo cliente no Azure Key Vault.

  • Permissões de colaborador (gravação) são necessárias para recursos de enriquecimento de IA que usam o Armazenamento do Azure para hospedar dados da sessão de depuração, cache de enriquecimento e armazenamento de conteúdo de longo prazo em um repositório de conhecimento.

As etapas a seguir são para o Armazenamento do Azure. Se o recurso for Azure Cosmos DB ou SQL do Azure, as etapas serão semelhantes.

  1. Entre no portal do Azure e localize seu recurso do Azure ao qual o serviço de pesquisa deve ter acesso.

  2. No Armazenamento do Azure, selecione Controle de acesso (AIM) no painel de navegação esquerdo.

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

  4. Na página Função, selecione as funções necessárias para o serviço de pesquisa:

    Tarefa Atribuição de função
    Indexação de blobs usando um indexador Leitor de dados de blob de armazenamento
    Indexação do ADLS Gen2 usando um indexador Leitor de dados de blob de armazenamento
    Indexação de tabela usando um indexador Adicionar Acesso a Dados e Leitor
    Indexação de arquivo usando um indexador Adicionar Acesso a Dados e Leitor
    Gravar um repositório de conhecimento Adicione DataContributor do Blob de Armazenamento para projeções de objeto e arquivo, e Acesso a Dados e Leitor para projeções de tabela.
    Gravar um cache de enriquecimento Adicionar Colaborador de dados de blob de armazenamento
    Salvar o estado da sessão de depuração Adicionar Colaborador de dados de blob de armazenamento
    Incorporação de dados (vetorização) usando modelos de incorporação do Azure OpenAI Adicionar Usuário OpenAI dos Serviços Cognitivos
  5. Na página Membros, selecione Identidade Gerenciada.

  6. Selecionar membros. Na página Selecionar identidade gerenciada, escolha sua assinatura e, em seguida, filtre por tipo de serviço e selecione o serviço. Somente os serviços que têm uma identidade gerenciada estarão disponíveis para seleção.

    Captura de tela do painel de seleção da identidade gerenciada no assistente de atribuição de função.

  7. Selecione Examinar + atribuir.

Exemplos de cadeia de conexão

Após uma identidade gerenciada ser definida para o serviço de pesquisa e receber uma atribuição de função, as conexões de saída podem ser modificadas para usar a ID de recurso exclusiva do outro recurso do Azure. Aqui estão alguns exemplos de cadeias de conexão para vários cenários.

Fonte de dados do blob (sistema):

Uma fonte de dados do indexador inclui uma propriedade "credenciais" que determina como a conexão é feita com a fonte de dados. O exemplo a seguir mostra uma cadeia de conexão especificando a ID de recurso exclusiva de uma conta de armazenamento. O Microsoft Entra ID autenticará a solicitação usando a identidade gerenciada pelo sistema do serviço de pesquisa. Observe que a cadeia de conexão não inclui um contêiner. Em uma definição de fonte de dados, um nome de contêiner é especificado na propriedade "contêiner" (não mostrada), não na cadeia de conexão.

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    }

Fonte de dados do blob (usuário):

Uma solicitação de pesquisa para o Armazenamento do Azure também pode ser feita sob uma identidade gerenciada atribuída pelo usuário, atualmente em versão prévia. A identidade de usuário do serviço de pesquisa é especificada na propriedade "identity". Você pode usar o portal ou a versão prévia da API REST 2021-04-30-Preview para definir a identidade.

"credentials": {
    "connectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
    },
  . . .
"identity": {
    "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
    "userAssignedIdentity": "/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{user-assigned-managed-identity-name}"
  }

Repositório de conhecimento:

Uma definição de repositório de conhecimento inclui uma cadeia de conexão para o Armazenamento do Azure. No Armazenamento do Azure, uma loja de conhecimento criará projeções como blobs e tabelas. A cadeia de conexão é a ID de recurso exclusiva de sua conta de armazenamento. Observe que a cadeia de caracteres não inclui contêineres ou tabelas no caminho. Elas são definidas na projeção inserida, não na cadeia de conexão.

"knowledgeStore": {
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/storage-account-name};"
}

Cache de enriquecimento:

Um indexador cria, usa e lembra o contêiner usado para os aprimoramentos em cache. Não é necessário incluir o contêiner na cadeia de conexão do cache. Você pode encontrar a ID de objeto na página Identidade do serviço de pesquisa no portal.

"cache": {
  "enableReprocessing": true,
  "storageConnectionString": "ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name};"
}

Sessão de depuração:

Uma sessão de depuração é executada no portal e usa uma cadeia de conexão quando você inicia a sessão. Você pode colar uma cadeia de conexão semelhante ao exemplo a seguir.

"ResourceId=/subscriptions/{subscription-ID}/resourceGroups/{resource-group-name}/providers/Microsoft.Storage/storageAccounts/{storage-account-name}/{container-name};",

Habilidade personalizada:

Uma habilidade personalizada tem como destino o ponto de extremidade de uma função do Azure ou um aplicativo que hospeda código personalizado. O ponto de extremidade é especificado na definição de habilidade personalizada. A presença de "authResourceId" instrui o serviço de pesquisa a se conectar usando uma identidade gerenciada, passando a ID do aplicativo da função ou do aplicativo de destino na propriedade.

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "A custom skill that can identify positions of different phrases in the source text",
  "uri": "https://contoso.count-things.com",
  "authResourceId": "<Azure-AD-registered-application-ID>",
  "batchSize": 4,
  "context": "/document",
  "inputs": [ ... ],
  "outputs": [ ...]
}

Habilidade de incorporação do Azure OpenAI e Vetorizador do Azure OpenAI:

Uma habilidade de incorporação e vetorizador do Azure OpenAI na Pesquisa de IA direcionam o ponto de extremidade de um serviço do Azure OpenAI que hospeda um modelo de incorporação. O ponto de extremidade é especificado na definição de habilidade de incorporação do Azure OpenAI e/ou na definição do vetorizador Azure OpenAI. A identidade gerenciada pelo sistema é usada se configurada e se a "apikey" e "authIdentity" estiverem vazias. A propriedade "authIdentity" é usada apenas para identidade gerenciada atribuída pelo usuário.

{
  "@odata.type": "#Microsoft.Skills.Text.AzureOpenAIEmbeddingSkill",
  "description": "Connects a deployed embedding model.",
  "resourceUri": "https://url.openai.azure.com/",
  "deploymentId": "text-embedding-ada-002",
  "inputs": [
    {
      "name": "text",
      "source": "/document/content"
    }
  ],
  "outputs": [
    {
      "name": "embedding"
    }
  ]
}
 "vectorizers": [
    {
      "name": "my_azure_open_ai_vectorizer",
      "kind": "azureOpenAI",
      "azureOpenAIParameters": {
        "resourceUri": "https://url.openai.azure.com",
        "deploymentId": "text-embedding-ada-002"
      }
    }
  ]

Confira também