gerenciar locais externos
Esta página descreve como listar, view, atualizar, conceder permissões, ativar eventos de arquivo e excluir locais externos.
A Databricks recomenda controlar o acesso aos arquivos usando volumes. Consulte O que são volumes do Unity Catalog?
Descreva um local externo
Para ver as propriedades de um local externo, inclusive as permissões e o acesso workspace, o senhor pode usar o Catalog Explorer ou um comando SQL.
- Catalog Explorer
- SQL
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Clique no nome de um local externo para acessar view suas propriedades.
Execute o seguinte comando em um Notebook ou no editor Databricks SQL. Substitua <location-name>
pelo nome do local externo.
DESCRIBE EXTERNAL LOCATION <location-name>;
Mostrar subsídios em um local externo
view Para acessar as concessões em um local externo, é possível utilizar o Catalog Explorer ou um comando SQL.
- Catalog Explorer
- SQL
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Clique no nome de um local externo.
- Clique em Permissões .
Para mostrar as concessões em um local externo, use um comando como o seguinte. Opcionalmente, você pode filtrar os resultados para mostrar somente as concessões para o principal especificado.
SHOW GRANTS [<principal>] ON EXTERNAL LOCATION <location-name>;
Substitua os valores temporários:
<location-name>
: O nome do local externo que autoriza a leitura e a gravação no bucket em sua nuvem tenant.<principal>
: O endereço email de um usuário de nível accountou o nome de um grupo de nível account. Se um grupo ou nome de usuário contiver um espaço ou símbolo@
, use acentos (
Conceder permissões em um local externo
Esta seção descreve como conceder e revogar permissões em um local externo usando o Catalog Explorer e SQL comando em uma consulta do Notebook ou SQL. Para obter informações sobre como usar o Databricks CLI ou Terraform, consulte a documentaçãoDatabricks Terraform e What is the Databricks CLI?
Permissões necessárias : o privilégio CREATE EXTERNAL LOCATION
na metastore e na credencial de armazenamento referenciada no local externo ou o privilégio MANAGE
no local externo. Os administradores do metastore têm CREATE EXTERNAL LOCATION
no metastore em default.
Para conceder permissão para usar um local externo:
- Catalog Explorer
- SQL
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Clique no nome de um local externo para abrir suas propriedades.
- Clique em Permissões .
- Para conceder permissão a usuários ou grupos, selecione cada identidade e clique em Conceder .
- Para revogar permissões de usuários ou grupos, selecione cada identidade e clique em Revogar .
Execute o seguinte comando SQL em um editor de consultas do Notebook ou SQL. Esse exemplo concede a capacidade de criar uma tabela externa que faça referência ao local externo:
GRANT CREATE EXTERNAL TABLE ON EXTERNAL LOCATION <location-name> TO <principal>;
Substitua os valores temporários:
<location-name>
: O nome do local externo que autoriza a leitura e a gravação no bucket em sua nuvem tenant.<principal>
: O endereço email de um usuário de nível accountou o nome de um grupo de nível account.
Atribuir um local externo a um espaço de trabalho específico
Em default, um local externo é acessível a partir de todo o espaço de trabalho no metastore. Isso significa que, se um usuário tiver recebido um privilégio (como READ FILES
) nesse local externo, ele poderá exercer esse privilégio em qualquer workspace anexado ao metastore. Se o senhor usa o espaço de trabalho para isolar o acesso aos dados do usuário, talvez queira permitir o acesso a um local externo somente a partir de um espaço de trabalho específico. Esse recurso é conhecido como workspace binding ou isolamento de local externo.
Os casos de uso típicos para vincular um local externo a um espaço de trabalho específico incluem:
- Garantir que o engenheiro de dados que tem o privilégio
CREATE EXTERNAL TABLE
em um local externo que contém dados de produção possa criar tabelas externas nesse local somente em uma produção workspace. - Garantir que o engenheiro de dados que tem o privilégio
READ FILES
em um local externo que contém dados confidenciais só possa usar um espaço de trabalho específico para acessar esses dados.
Para obter mais informações sobre como restringir outros tipos de acesso a dados pelo site workspace, consulte Limitar o acesso do catálogo a um espaço de trabalho específico.
Os vínculos do espaço de trabalho são referenciados no momento em que os privilégios em relação ao local externo são exercidos. Por exemplo, se um usuário criar uma tabela externa emitindo a instrução CREATE TABLE myCat.mySch.myTable LOCATION 'gs://mybucket/<path>'
a partir do site myWorkspace
workspace, as seguintes verificações de vinculação workspace serão realizadas, além das verificações regulares de privilégio do usuário:
- A localização externa que cobre
'gs://mybucket/<path>'
está vinculada amyWorkspace
? - O catálogo
myCat
está vinculado amyWorkspace
com o nível de acessoRead & Write
?
Se a localização externa for subseqüentemente desvinculada de myWorkspace
, a tabela externa continuará funcionando.
Esse recurso também permite que o senhor preencha um catálogo a partir de um site central workspace e o disponibilize para outros espaços de trabalho usando associações de catálogos, sem precisar disponibilizar o local externo nesses outros espaços de trabalho.
Vincular um local externo a um ou mais espaços de trabalho
Para atribuir um local externo a um espaço de trabalho específico, o senhor pode usar o Catalog Explorer ou o site Databricks CLI.
Permissões necessárias : administrador do Metastore, proprietário do local externo ou MANAGE
no local externo.
Os administradores do metastore podem ver todos os locais externos em um metastore usando o Catalog Explorer, e os proprietários de locais externos podem ver todos os locais externos que possuem em um metastore, independentemente de o local externo estar atribuído ao workspace atual. Os locais externos que não estão atribuídos ao workspace aparecem em cinza.
- Catalog Explorer
- CLI
-
Efetue login em um workspace vinculado ao metastore.
-
Na barra lateral, clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
-
Selecione o local externo e acesse o espaço de trabalho tab.
-
Na guia Workspaces , desmarque a caixa de seleção Todos os workspaces têm acesso .
Se o local externo já estiver vinculado a um ou mais espaços de trabalho, essa caixa de seleção já estará desmarcada.
-
Clique em Atribuir a workspaces e digite ou localize os workspaces que deseja atribuir.
Para revogar o acesso, vá para a tab Workspaces , selecione o workspace e clique em Revogar . Para permitir o acesso de todos os workspaces, marque a caixa de seleção Todos os workspaces têm acesso .
Há dois grupos de Databricks CLI grupos de comando e dois passos necessários para atribuir uma localização externa a um workspace.
Nos exemplos a seguir, substitua <profile-name>
pelo nome do perfil de configuração de autenticação do Databricks. Ele deve incluir o valor de um access token pessoal, além do nome da instância workspace e o ID workspace do workspace onde o senhor gerou o access token pessoal. Consulte Autenticação pessoal access token (obsoleta).
-
Use o comando
external-locations
do grupoupdate
para definir o comandoisolation mode
do local externo paraISOLATED
:Bashdatabricks external-locations update <my-location> \
--isolation-mode ISOLATED \
--profile <profile-name>O padrão
isolation-mode
éOPEN
para todos os workspaces anexados ao metastore. -
Use o comando
workspace-bindings
do grupo de comandoupdate-bindings
para atribuir o espaço de trabalho ao local externo:Bashdatabricks workspace-bindings update-bindings external-location <my-location> \
--json '{
"add": [{"workspace_id": <workspace-id>}...],
"remove": [{"workspace_id": <workspace-id>}...]
}' --profile <profile-name>Use as propriedades
"add"
e"remove"
para adicionar ou remover vinculações de workspace.
A vinculação somente para leitura (BINDING_TYPE_READ_ONLY
) não está disponível para locais externos. Portanto, não há motivo para definir binding_type
para a vinculação de locais externos.
Para listar todas as atribuições de workspace para um local externo, use o comando workspace-bindings
do grupo get-bindings
:
databricks workspace-bindings get-bindings external-location <my-location> \
--profile <profile-name>
Consulte também Bindings de espaço de trabalho na referência REST API .
Desvincular um local externo de um workspace
As instruções para revogar o acesso workspace a um local externo usando o Catalog Explorer ou o grupo de comando workspace-bindings
CLI estão incluídas em Vincular um local externo a um ou mais espaços de trabalho.
Alterar o proprietário de um local externo
O criador de um local externo é seu proprietário inicial. Para alterar o proprietário para um usuário ou grupo de nível accountdiferente, é possível utilizar o Catalog Explorer ou um comando SQL.
Permissões necessárias : proprietário do local externo ou usuário com o privilégio MANAGE
.
- Catalog Explorer
- SQL
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Clique no nome de um local externo.
- Clique
ao lado de Proprietário .
- Digite para pesquisar um diretor e selecioná-lo.
- Clique em Salvar .
Execute o seguinte comando em um notebook ou no editor Databricks SQL. Substitua os valores temporários:
<location-name>
: nome da credencial.<principal>
: O endereço email de um usuário de nível accountou o nome de um grupo de nível account. Se um grupo ou nome de usuário contiver um espaço ou símbolo@
, use marcações invertidas ao redor dele (não apóstrofos). Por exemplo, equipe financeira .
ALTER EXTERNAL LOCATION <location-name> OWNER TO <principal>
Marcar um local externo como somente para leitura
Se quiser que os usuários tenham acesso somente para leitura a um local externo, você pode usar o Catalog Explorer para marcar o local externo como somente para leitura.
Tornando locais externos somente para leitura:
- Impede que os usuários gravem em arquivos nesses locais externos, independentemente de quaisquer permissões de gravação concedidas pelo serviço account subjacente à credencial de armazenamento e independentemente das permissões Unity Catalog concedidas nesse local externo.
- Impede que os usuários criem tabelas ou volumes gerenciáveis nesses locais externos.
- Bloqueia a criação de catálogos usando locais externos somente para leitura.
- Permite que o sistema valide adequadamente a localização externa no momento da criação.
Você pode marcar locais externos como somente para leitura ao criá-los.
Você também pode usar o Catalog Explorer para alterar o status somente para leitura após criar um local externo:
- Na barra lateral, clique em
Catálogo .
- Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
- Selecione o local externo, clique no
menu ao lado do botão Testar conexão e selecione Editar .
- Na caixa de diálogo de edição, clique em Opções avançadas e selecione a opção Limitar para uso somente para leitura .
- Clique em Atualizar .
Configurar um algoritmo de criptografia em um local externo (somente AWS S3)
AWS Oferece suporte à criptografia no lado do servidor (SSE) com Amazon S3 gerenciar chave (SSE-S3) ou AWS KMS chave (SSE-KMS) para proteger os dados em S3. Se o seu bucket S3 exigir criptografia SSE, o senhor poderá configurar um algoritmo de criptografia no local externo para permitir que tabelas e volumes externos no Unity Catalog acessem os dados no seu bucket S3. O SSE não é compatível com tabelas externas compartilhadas usando o Delta Sharing. Para obter mais informações, consulte Configurar criptografia para S3 com KMS.
-
Na barra lateral, clique em
Catálogo .
-
Na parte superior do painel Catálogo , clique no ícone de
engrenagem e selecione Locais externos .
-
Selecione o local externo. O local externo deve usar um IAM role para uma credencial de armazenamento.
-
Clique no
menu kebab ao lado do botão Testar conexão e selecione Editar.
-
Na caixa de diálogo de edição, clique em Opções avançadas .
-
Em Encryption Algorithm (Algoritmo de criptografia ), selecione SSE-SE ou SSE-KMS , dependendo de sua criptografia key.
Para SSE-KMS , em Encryption KMS key , cole o ARN do KMS key referenciado pelos clientes ao acessar o local S3.
-
Clique em Atualizar .
(Recomendado) Habilitar eventos de arquivo para um local externo
Se você quiser ingerir notificações de alteração enviadas pelo provedor de nuvem, habilitar eventos de arquivo para o local externo tem as seguintes vantagens:
- Facilita a configuração de notificações de arquivos para o Auto Loader. Especificamente, ele permite a descoberta de arquivos incrementais com desempenho semelhante à notificação no Auto Loader, definindo
cloudFiles.useManagedFileEvents
comotrue
. Consulte Configurar a transmissão Auto Loader no modo de notificação de arquivo. - Melhora a eficiência e a capacidade dos acionadores de chegada de arquivos para o trabalho. Consulte Trigger Job quando novos arquivos chegarem.
Antes de começar
Se o senhor quiser que o Databricks configure a inscrição Pub/Sub ou as filas SQS em seu nome, o local externo deverá fazer referência a uma credencial de armazenamento que forneça as permissões adequadas para isso. Consulte a próxima etapa para obter instruções.
Se o senhor quiser criar sua própria inscrição Pub/Sub, a identidade representada pela credencial de armazenamento deverá ter a seguinte permissão nessas inscrições Pub/Sub:
pubsub.subscriptions.consume
Se você quiser criar suas próprias filas SQS, a identidade representada pela credencial de armazenamento deve ter as seguintes permissões nessas filas SQS:
sqs:ReceiveMessage
sqs:DeleteMessage
sqs:PurgeQueue
Etapa 1: Confirme se o Databricks tem acesso aos eventos de arquivo no GCS ou no AWS S3
Antes de ativar os eventos de arquivo para o objeto securizável de local externo, o senhor deve garantir que o seu GCS ou AWS S3 account esteja configurado para dar a Databricks acesso aos eventos de arquivo que ele emite. Se quiser que o Databricks configure eventos de arquivo no GCS ou no AWS S3 para o senhor, também é necessário garantir que o Databricks tenha o acesso adequado.
Atribuir esse acesso é uma etapa recomendada quando você configura as credenciais de armazenamento.
Para baldes GCS
Para verificar se o Databricks pode configurar e assinar as notificações de eventos do seu bucket:
-
Obtenha o endereço do serviço account email .
-
Na barra lateral, clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
-
Selecione o local externo.
-
Na Visão geral tab, clique no nome da credencial .
-
Na credencial de armazenamento tabOverview, copie o account endereço de e-mail do serviço.
Você usará isso na próxima etapa.
-
-
Faça login em seu site GCP account.
-
Acesse IAM & Admin > Roles (Funções ).
-
Localize o serviço account cujo endereço email o senhor copiou na etapa 1.
-
Confirme se foi atribuída uma função personalizada que inclui as seguintes configurações:
pubsub.subscriptions.consume
pubsub.subscriptions.create
pubsub.subscriptions.delete
pubsub.subscriptions.get
pubsub.subscriptions.list
pubsub.subscriptions.update
pubsub.topics.attachSubscription
pubsub.topics.create
pubsub.topics.delete
pubsub.topics.get
pubsub.topics.list
pubsub.topics.update
storage.buckets.update -
Encontre o agente de serviço account email seguindo Obter o agente de serviço do Cloud Storage.
-
No console do Google Cloud, navegue até IAM & Admin > IAM > Grant Access (Conceder acesso ).
-
Confirme se o Cloud Storage serviço Agent tem a função Pub/Sub Publisher atribuída.
-
Se o serviço account não tiver uma função com a configuração mencionada ou se o serviço de armazenamento em nuvem Agent não tiver a função Pub/Sub Publisher , siga as instruções em Criar uma credencial de armazenamento para se conectar a Google Cloud Storage.
Para buckets S3
Para verificar se o Databricks pode configurar e assinar as notificações de eventos do seu bucket:
-
Obtenha o site IAM role.
-
Na barra lateral, clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
-
Selecione o local externo.
-
Na Visão geral tab, clique no nome da credencial .
-
Na credencial de armazenamento Overview tab, copie o IAM role (ARN ).
Você usará isso na próxima etapa.
-
-
Faça login em seu site AWS account.
-
Vá para o IAM e procure a função que o senhor copiou na etapa 1.
-
Em Permissions policies (Políticas de permissões ), localize a política IAM ou as políticas associadas ao IAM role e abra-a.
-
Abra a política ou políticas e confirme se há uma que inclua as seguintes propriedades.
Essa política permite que o site Databricks account atualize a configuração de notificação de eventos do seu bucket, crie um tópico de SNS, crie uma fila de SQS e assine a fila de SQS no tópico de SNS.
Substitua
<BUCKET>
pelo nome do seu bucket S3.JSON{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ManagedFileEventsSetupStatement",
"Effect": "Allow",
"Action": [
"s3:GetBucketNotification",
"s3:PutBucketNotification",
"sns:ListSubscriptionsByTopic",
"sns:GetTopicAttributes",
"sns:SetTopicAttributes",
"sns:CreateTopic",
"sns:TagResource",
"sns:Publish",
"sns:Subscribe",
"sqs:CreateQueue",
"sqs:DeleteMessage",
"sqs:ReceiveMessage",
"sqs:SendMessage",
"sqs:GetQueueUrl",
"sqs:GetQueueAttributes",
"sqs:SetQueueAttributes",
"sqs:TagQueue",
"sqs:ChangeMessageVisibility",
"sqs:PurgeQueue"
],
"Resource": ["arn:aws:s3:::<BUCKET>", "arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsListStatement",
"Effect": "Allow",
"Action": ["sqs:ListQueues", "sqs:ListQueueTags", "sns:ListTopics"],
"Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
},
{
"Sid": "ManagedFileEventsTeardownStatement",
"Effect": "Allow",
"Action": ["sns:Unsubscribe", "sns:DeleteTopic", "sqs:DeleteQueue"],
"Resource": ["arn:aws:sqs:*:*:csms-*", "arn:aws:sns:*:*:csms-*"]
}
]
}Consulte também a Etapa 1: Criar um IAM role.
-
Se essa política estiver faltando, adicione-a ao site IAM role.
Etapa 2: Habilitar eventos de arquivo para o local externo usando o Catalog Explorer
Para ativar eventos de arquivo:
-
Na barra lateral, clique em
Catálogo .
-
Na página de acesso rápido , clique no botão External data > para acessar o site External Locations tab.
-
Selecione o local externo.
-
Clique no
menu kebab ao lado do botão Testar conexão e selecione Editar.
-
Na caixa de diálogo de edição, clique em Opções avançadas .
-
Selecione Habilitar eventos de arquivo .
-
Selecione o tipo de evento Arquivo :
Automático : (Recomendado) selecione esta opção se quiser que o Databricks configure a inscrição e os eventos para o senhor.
Fornecido: Selecione essa opção se o senhor já tiver configurado uma fila do Google Cloud Pub/Sub inscrição ou SQS.
-
Se o senhor selecionou o tipo de evento Arquivo fornecido , digite o nome da inscrição Pub/Sub existente ou o URL da fila de armazenamento.
-
Inscrição Pub/Sub:
projects/<project-id>/subscriptions/<subscription-name>
-
Fila do AWS SQS:
https://sqs.<region>.amazonaws.com/<account-ID>/<queue-name>
-
-
Clique em Atualizar .
-
Aguarde alguns segundos e clique em Testar conexão na página principal de edição de localização externa para confirmar se os eventos do arquivo foram habilitados com êxito.
Limitações de eventos de arquivo
Os eventos de arquivo em locais externos têm as seguintes limitações:
-
A taxa de transferência de eventos é limitada a 2000 arquivos ingeridos por segundo.
-
O senhor não pode marcar recurso de nuvem usando a opção
resourceTags
. Em vez disso, marque o recurso usando o console na nuvem depois que o serviço Auto Loader criar a fila e o recurso de inscrição. -
O senhor não pode configurar eventos de arquivo para o local de armazenamento raiz do metastore do Unity Catalog se nenhum local externo estiver definido para esse local de armazenamento.
O senhor não pode configurar eventos de arquivo em locais de armazenamento que não tenham um objeto de local externo definido no Unity Catalog. Algumas implementações do Unity Catalog incluem um local de armazenamento raiz do metastore que não está associado a um local externo. Para determinar se esse é o caso do local de armazenamento raiz do seu metastore:
-
Como administrador da conta, faça login no console da conta.
-
Clique em
Catálogo .
-
Clique no nome da metastore.
-
Acesse Configuration tab.
-
Se houver um valor de caminho de bucket do GCS , então a raiz do metastore não tem um objeto de localização externa definido para ele.
Para atualizar o armazenamento raiz do metastore para usar um local externo, clique no botão Remover . Um local externo será criado para você. Para obter detalhes, consulte Remover armazenamento em nível de metástore.
-
Modificar um local externo
O proprietário de um local externo ou um usuário com o privilégio MANAGE
pode renomear, alterar o URI e alterar a credencial de armazenamento do local externo.
Para renomear um local externo, faça o seguinte:
Execute o seguinte comando em um notebook ou no editor Databricks SQL. Substitua os valores temporários:
<location-name>
: O nome do local.<new-location-name>
: Um novo nome para o local.
ALTER EXTERNAL LOCATION <location-name> RENAME TO <new-location-name>;
Para alterar o URI para o qual um local externo aponta em seu locatário de nuvem, faça o seguinte:
Execute o seguinte comando em um notebook ou no editor Databricks SQL. Substitua os valores temporários:
<location-name>
: O nome do local externo.<url>
: o novo URL de armazenamento ao qual o local deve autorizar o acesso em seu locatário de nuvem.
ALTER EXTERNAL LOCATION location_name SET URL '<url>' [FORCE];
A opção FORCE
altera o URL mesmo se as tabelas externas dependerem do local externo.
Para alterar a credencial de armazenamento usada por um local externo, faça o seguinte:
Execute o seguinte comando em um notebook ou no editor Databricks SQL. Substitua os valores temporários:
<location-name>
: O nome do local externo.<credential-name>
: O nome da credencial de armazenamento que concede acesso à URL do local em sua nuvem tenant.
ALTER EXTERNAL LOCATION <location-name> SET STORAGE CREDENTIAL <credential-name>;
Excluir um local externo
Para excluir (descartar) um local externo, você deve ser seu proprietário ou ter o privilégio MANAGE
no local externo. Para excluir um local externo, faça o seguinte:
Execute o seguinte comando em um Notebook ou no editor Databricks SQL. Os itens entre colchetes são opcionais. Substitua <location-name>
pelo nome do local externo.
DROP EXTERNAL LOCATION [IF EXISTS] <location-name>;