Conectar-se ao Armazenamento do Microsoft Azure usando uma identidade gerenciada (Pesquisa de IA do Azure)

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

Você pode usar a identidade gerenciada atribuída pelo sistema ou a 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 Microsoft Azure.

Pré-requisitos

Observação

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

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

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

  2. Selecione IAM (Controle de acesso) .

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

  4. Na lista de funções de função de trabalho, selecione as funções necessárias para o seu 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
  5. Selecione Avançar.

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

  7. Filtrar por identidades gerenciadas atribuídas pelo sistema ou identidades gerenciadas atribuídas pelo usuário. Você deve ver a identidade gerenciada que você criou anteriormente para seu serviço de pesquisa. Se você não tiver uma, consulte Configurar a busca para usar uma identidade gerenciada. Se você já configurou uma, mas ela não está disponível, aguarde alguns minutos.

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

Especificar uma identidade gerenciada em uma cadeia de conexão

De posse de uma atribuição de função, você poderá configurar uma conexão com o Armazenamento 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 cadeias de conexão no artigo sobre identidade gerenciada.

Dica

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

Identidade gerenciada atribuída pelo sistema

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

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

Forneça uma ResourceId que não tenha nenhuma chave de conta ou senha. A ResourceId deve incluir a ID da 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 gerenciada atribuída pelo usuário

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 Microsoft 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. Somente uma identidade gerenciada atribuída pelo usuário deve ser fornecida ao criar a fonte de dados. Definir userAssignedIdentity como a identidade gerenciada atribuída pelo usuário.

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

Forneça uma 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 da conexão e as permissões no serviço remoto são validadas no tempo de execução durante a execução do indexador. Se o indexador for bem-sucedido, a sintaxe de 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.

Acessar dados protegidos por rede em contas de armazenamento

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

Confira também