Enfileirar os blogs para ingestão usando a autenticação de identidade gerenciada
Ao enfileirar blobs para ingestão das próprias contas de armazenamento, você pode usar identidades gerenciadas como uma alternativa aos tokens SAS (assinatura de acesso compartilhado) e métodos de autenticação de Chaves Compartilhadas. As identidades gerenciadas são uma forma mais segura de ingerir dados, pois elas não exigem que você compartilhe tokens SAS do cliente ou chaves compartilhadas com o serviço. Em vez disso, uma identidade gerenciada é atribuída ao cluster e recebe permissões de leitura para a conta de armazenamento usada para ingerir dados. Você pode revogar essas permissões a qualquer momento.
Observação
- Esse método de autenticação só se aplica aos blobs do Azure e aos arquivos do Azure Data Lake que residem em contas de armazenamento de propriedade do cliente. Ele não se aplica a arquivos locais carregados usando o SDK do Kusto.
- Há suporte apenas para ingestão na fila. Não há suporte para ingestão embutida em Linguagem de Consulta Kusto nem ingestão direta usando APIs do SDK.
Atribuir uma identidade gerenciada ao cluster
Siga a visão geral de identidades gerenciadas para adicionar ao cluster uma identidade gerenciada atribuída pelo usuário ou sistema. Se o cluster já tiver a identidade gerenciada desejada atribuída a ele, copie a ID do objeto usando as seguintes etapas:
Entre no portal do Azure usando uma conta associada à assinatura do Azure que contém seu cluster.
Navegue até o cluster e selecione Identidade.
Selecione o tipo de identidade apropriado, atribuída pelo sistema ou pelo usuário, e copie a ID do objeto da identidade necessária.
Conceder permissões à identidade gerenciada
No portal do Azure, navegue até a conta de armazenamento que contém os dados que você deseja ingerir.
Selecione Controle de Acesso e escolha + Adicionar>Adicionar Atribuição de Função.
Conceda à identidade gerenciada Storage Blob Data Reader ou Storage Blob Data Contributor se você pretende usar a opção de origem DeleteSourceOnSuccess, permissões para a conta de armazenamento.
Observação
A concessão de permissões de Proprietário ou Colaborador não é suficiente e produzirá uma falha na ingestão.
Importante
Em caso de problemas de rede, o Armazenamento do Microsoft Azure pode retornar um erro Download Forbidden
.
Esse erro pode ocorrer se você usar um link privado para acessar sua conta de armazenamento.
Nesses casos, se as permissões estiverem corretas, verifique a conectividade com sua conta de armazenamento.
Definir a política de identidade gerenciada no Azure Data Explorer
Para usar a identidade gerenciada para ingerir dados em seu cluster, permita a opção de uso NativeIngestion
para a identidade gerenciada selecionada. Ingestão nativa refere-se à capacidade de usar um SDK para ingestão de uma fonte externa. Para obter mais informações sobre os SDKs disponíveis, veja Bibliotecas de cliente.
A política da Identidade Gerenciada de uso pode ser definida no nível do cluster ou do banco de dados do cluster de destino.
Para aplicar a política no nível do banco de dados, execute o seguinte comando:
.alter-merge database <database name> policy managed_identity "[ { 'ObjectId' : '<managed_identity_id>', 'AllowedUsages' : 'NativeIngestion' }]"
Para aplicar a política no nível do cluster, execute o seguinte comando:
.alter-merge cluster policy managed_identity "[ { 'ObjectId' : '<managed_identity_id>', 'AllowedUsages' : 'NativeIngestion' }]"
Substitua <managed_identity_id>
pelo ID do objeto da identidade gerenciada necessária.
Observação
Você deve ter a permissão All Database Admin
no cluster para editar a Política de Identidade Gerenciada.
Blobs de fila para ingestão com identidade gerenciada usando o SDK do Kusto
Ao ingerir dados usando um SDK do Kusto, gere seu URI de blob usando a autenticação de identidade gerenciada acrescentando ;managed_identity={objectId}
ao URI de blob não autorizado. Se você ingerir dados usando a identidade gerenciada atribuída pelo sistema do seu cluster, poderá acrescentar ;managed_identity=system
ao URI do blob.
Importante
Você deve usar um cliente de ingestão na fila. Não há suporte para o uso de identidades gerenciadas com ingestão direta nem ingestão embutida em Linguagem de Consulta Kusto.
Veja a seguir exemplos de URIs de blob para identidades gerenciadas atribuídas pelo sistema e pelo usuário.
- Atribuída pelo sistema:
https://demosa.blob.core.windows.net/test/export.csv;managed_identity=system
- Atribuída pelo usuário:
https://demosa.blob.core.windows.net/test/export.csv;managed_identity=6a5820b9-fdf6-4cc4-81b9-b416b444fd6d
Importante
- Ao usar identidades gerenciadas para ingerir dados com o SDK do C#, você precisa fornecer um tamanho de blob em
StorageSourceOptions
. Se o tamanho não estiver definido, o SDK tentará preencher o tamanho do blob acessando a conta de armazenamento, o que resultará em falha. - O parâmetro de tamanho deve ser o tamanho dos dados brutos (não compactados), e não o tamanho do blob.
- Caso não saiba o tamanho no momento da ingestão, especifique o valor zero (0). O serviço tentará descobrir o tamanho usando a identidade gerenciada para autenticação.