Conectar-se ao Armazenamento do Azure usando uma identidade gerenciada (Azure AI Search)

Este artigo explica como configurar uma conexão de serviço de pesquisa para uma conta de Armazenamento do Azure usando uma identidade gerenciada em vez de fornecer credenciais na cadeia de conexão.

Você pode usar uma identidade gerenciada atribuída ao sistema ou uma identidade gerenciada atribuída pelo usuário. As identidades gerenciadas são logons do Microsoft Entra e exigem atribuições de função para acessar o Armazenamento do Azure.

Pré-requisitos

  • Azure AI Search, camada Básica ou superior, com uma identidade gerenciada.

Nota

Se o armazenamento estiver protegido pela rede e na mesma região do serviço de pesquisa, você deverá usar uma identidade gerenciada atribuída ao sistema e uma das seguintes opções de rede: conectar-se como um serviço confiável ou conectar-se usando a regra de instância de recurso.

Criar uma atribuição de função no Armazenamento do Azure

  1. Entre no portal do Azure e encontre sua conta de armazenamento.

  2. Selecione Controlo de acesso (IAM) .

  3. Selecione Adicionar e, em seguida, selecione Atribuição de função.

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

    Task Atribuição de função
    Indexação de Blob usando um indexador Adicionar leitor de dados de Blob de armazenamento
    Indexação ADLS Gen2 usando um indexador Adicionar leitor de dados de Blob de armazenamento
    Indexação de tabelas usando um indexador Adicionar leitor e acesso a dados
    Indexação de arquivos usando um indexador Adicionar leitor e acesso a dados
    Gravar em um repositório de conhecimento Adicione o Blob de Armazenamento DataContributor para projeções de objetos e arquivos e o Reader e o Data Access para projeções de tabela.
    Gravar em um cache de enriquecimento Adicionar Contribuidor de Dados de Blob de Armazenamento
    Salvar estado da sessão de depuração Adicionar Contribuidor de Dados de Blob de Armazenamento
  5. Selecione Seguinte.

  6. Selecione Identidade gerenciada e, em seguida, selecione Membros.

  7. Filtre por identidades gerenciadas atribuídas pelo sistema ou identidades gerenciadas atribuídas pelo usuário. Deverá ver a identidade gerida que criou anteriormente para o seu serviço de pesquisa. Se você não tiver uma, consulte Configurar a pesquisa para usar uma identidade gerenciada. Se você já configurou um, mas ele não está disponível, dê-lhe alguns minutos.

  8. Selecione a identidade e salve a atribuição de função.

Especificar uma identidade gerenciada em uma cadeia de conexão

Depois de ter uma atribuição de função, você pode configurar uma conexão com o Armazenamento do Azure que opera sob essa função.

Os indexadores usam um objeto de fonte de dados para conexões com uma fonte de dados externa. Esta seção explica como especificar uma identidade gerenciada atribuída pelo sistema ou uma identidade gerenciada atribuída pelo usuário em uma cadeia de conexão de fonte de dados. Você pode encontrar mais exemplos de cadeia de conexão no artigo de identidade gerenciada.

Gorjeta

Você pode criar uma conexão de fonte de dados com o Armazenamento do Azure no portal do Azure, especificando uma identidade gerenciada atribuída pelo sistema ou pelo usuário e, em seguida, exibir a definição JSON para ver como a cadeia de conexão é formulada.

Identidade gerida atribuída pelo sistema

Você deve ter uma identidade gerenciada atribuída ao sistema já configurada e ela deve ter uma atribuição de função no Armazenamento do Azure.

Para conexões feitas usando uma identidade gerenciada atribuída ao sistema, a única alteração na definição da fonte de dados é o formato da credentials propriedade.

Forneça um ResourceId que não tenha chave de conta ou senha. O ResourceId deve incluir o ID de assinatura da conta de armazenamento, o grupo de recursos da conta de armazenamento e o nome da conta de armazenamento.

POST https://[service name].search.windows.net/datasources?api-version=2024-07-01

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    }
}   

Identidade gerida atribuída pelo utilizador

Você deve ter uma identidade gerenciada atribuída pelo usuário já configurada e associada ao seu serviço de pesquisa, e a identidade deve ter uma atribuição de função no Armazenamento do Azure.

As conexões feitas por meio de identidades gerenciadas atribuídas pelo usuário usam as mesmas credenciais de uma identidade gerenciada atribuída pelo sistema, além de uma propriedade de identidade extra que contém a coleção de identidades gerenciadas atribuídas pelo usuário. Apenas uma identidade gerenciada atribuída pelo usuário deve ser fornecida ao criar a fonte de dados. Defina userAssignedIdentity como a identidade gerenciada atribuída pelo usuário.

Forneça um ResourceId que não tenha chave de conta ou senha. O ResourceId deve incluir o ID de assinatura da conta de armazenamento, o grupo de recursos da conta de armazenamento e o nome da conta de armazenamento.

Forneça um identity usando a sintaxe mostrada no exemplo a seguir.

POST https://[service name].search.windows.net/datasources?api-version=2024-07-01

{
    "name" : "blob-datasource",
    "type" : "azureblob",
    "credentials" : { 
        "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" 
    },
    "container" : { 
        "name" : "my-container", "query" : "<optional-virtual-directory-name>" 
    },
    "identity" : { 
        "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
        "userAssignedIdentity" : "/subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MY-DEMO-USER-MANAGED-IDENTITY" 
    }
}   

As informações de conexão e as permissões no serviço remoto são validadas em tempo de execução durante a execução do indexador. Se o indexador for bem-sucedido, a sintaxe da conexão e as atribuições de função serão válidas. Para obter mais informações, consulte Executar ou redefinir indexadores, habilidades ou documentos.

Acesso a dados protegidos pela rede em contas de armazenamento

As contas de armazenamento do Azure podem ser ainda mais protegidas usando firewalls e redes virtuais. Se você quiser indexar conteúdo de uma conta de armazenamento protegida usando um firewall ou rede virtual, consulte Fazer conexões de indexador com o Armazenamento do Azure como um serviço confiável.

Consulte também