Autenticar tabelas externas com identidades gerenciadas
Uma tabela externa é uma entidade de esquema que faz referência a dados armazenados fora do banco de dados do Azure Data Explorer. As tabelas externas podem ser definidas para fazer referência a dados no Armazenamento do Azure ou no SQL Server e dar suporte a vários métodos de autenticação.
Neste artigo, você aprenderá a criar uma tabela externa que se autentica com uma identidade gerenciada.
Pré-requisitos
- Um cluster e um banco de dados do Azure Data Explorer. Criar um cluster e um banco de dados.
- Permissões de administrador de banco de dados no banco de dados do Azure Data Explorer.
1 – Configurar uma identidade gerenciada para uso com tabelas externas
Há dois tipos de identidades gerenciadas:
Atribuído pelo sistema: uma identidade atribuída pelo sistema é conectada ao cluster e é removida quando o cluster é removido. Apenas uma identidade atribuída pelo sistema é permitida por cluster.
Atribuído pelo usuário: uma identidade gerenciada atribuída pelo usuário é um recurso autônomo do Azure. Várias identidades atribuídas pelo usuário podem ser atribuídas ao cluster.
Selecione uma das guias a seguir para configurar o tipo de identidade gerenciada preferencial.
Siga as etapas para Adicionar uma identidade atribuída pelo usuário ao cluster e salve a ID do objeto (principal) para uso posterior.
Execute o comando .alter-merge policy managed_identity . Esse comando define uma política de identidade gerenciada no cluster que permite que a identidade gerenciada seja usada com tabelas externas. Substitua
<objectId>
pela ID do objeto (principal)..alter-merge cluster policy managed_identity ```[ { "ObjectId": "<objectId>", "AllowedUsages": "ExternalTable" } ]```
Observação
Para definir a política em um banco de dados específico, use
database <DatabaseName>
em vez decluster
.
2 – Conceder permissões de recursos externos à identidade gerenciada
A identidade gerenciada deve ter permissões para o recurso externo para ser autenticada com êxito.
Selecione a guia para o tipo relevante de recurso externo e atribua as permissões necessárias.
A tabela a seguir mostra as permissões necessárias por recurso externo. Para importar ou consultar dados do recurso externo, conceda permissões de leitura à identidade gerenciada. Para exportar dados para o recurso externo, conceda permissões de gravação à identidade gerenciada.
Armazenamento de dados externo | Permissões de leitura | Permissões de gravação | Conceder as permissões |
---|---|---|---|
Armazenamento do Blobs do Azure | Leitor de Dados do Blob de Armazenamento | Colaborador de dados de blob de armazenamento | Atribuir uma função do Azure |
Data Lake Storage Gen2 | Leitor de Dados do Blob de Armazenamento | Colaborador de dados de blob de armazenamento | Atribuir uma função do Azure |
Data Lake Storage Gen1 | Leitor | Colaborador | Atribuir uma função do Azure |
3 - Crie uma tabela externa
Há dois tipos de tabelas externas que dão suporte à autenticação com identidades gerenciadas: tabelas externas do Armazenamento do Azure e tabelas externas do SQL Server.
Selecione uma das guias a seguir para configurar uma tabela externa do Armazenamento do Azure ou do SQL Server.
Para criar uma tabela externa do Armazenamento do Azure, execute as seguintes etapas:
Crie uma cadeia de conexão com base nos modelos de cadeia de conexão de armazenamento. Essa cadeia de caracteres indica o recurso a ser acessado e suas informações de autenticação. Especifique o método de autenticação de identidade gerenciada.
Execute a tabela externa .create ou .alter para criar a tabela. Use a cadeia de conexão da etapa anterior como o argumento storageConnectionString .
Exemplo
O comando a seguir cria MyExternalTable
que se refere a dados formatados em CSV no mycontainer
Armazenamento de mystorageaccount
Blobs do Azure. A tabela tem duas colunas, uma para um inteiro x
e outra para uma cadeia de caracteres s
. A cadeia de conexão termina com ;managed_identity=system
, o que indica o uso de uma identidade gerenciada atribuída pelo sistema para autenticação para acessar o armazenamento de dados.
.create external table MyExternalTable (x:int, s:string) kind=storage dataformat=csv
(
h@'https://mystorageaccount.blob.core.windows.net/mycontainer;managed_identity=system'
)
Observação
Para autenticar com uma identidade gerenciada atribuída pelo usuário, substitua system
pela ID do objeto de identidade gerenciada.