Crie uma credencial de armazenamento para conectar ao Google Cloud Storage

Este artigo descreve como criar uma credencial de armazenamento no Unity Catalog para conectar ao Google Cloud Storage.

Para gerenciar o acesso ao armazenamento de cloud subjacente que contém tabelas e volumes, o Unity Catalog utiliza os seguintes tipos de objeto:

  • As credenciais de armazenamento encapsulam uma credencial de nuvem de longo prazo que oferece acesso ao armazenamento na nuvem.

  • Os locais externos contêm uma referência a uma credencial de armazenamento e um caminho de armazenamento na nuvem.

Para obter mais informações, consulte gerenciar o acesso ao armazenamento cloud usando Unity Catalog.

O Unity Catalog oferece suporte a duas opções de armazenamento em nuvem para o Databricks on Google Cloud: os buckets do Google Cloud Storage (GCS) e os buckets do Cloudflare R2. O Cloudflare R2 destina-se principalmente a casos de uso do Delta Sharing em que o senhor deseja evitar taxas de saída de dados. O GCS é apropriado para a maioria dos outros casos de uso. Este artigo se concentra na criação de credenciais de armazenamento para o GCS. Para o Cloudflare R2, consulte Criar uma credencial de armazenamento para conectar ao Cloudflare R2.

Para criar uma credencial de armazenamento para acesso a um bucket do GCS, você concede ao Unity Catalog a capacidade de ler e gravar no bucket atribuindo um IAM role nesse bucket a uma conta de serviço do Google Cloud gerada pelo Databricks.

Requisitos

No Databricks:

  • Um workspace do Databricks ativado para o Unity Catalog.

  • CREATE STORAGE CREDENTIAL privilégio no metastore do Unity Catalog anexado ao workspace. Os administradores de contas e administradores do metastore têm esse privilégio por padrão.

Na sua conta do Google Cloud:

  • Um bucket do GCS na mesma região dos workspaces dos quais você deseja acessar os dados.

  • Permissão para modificar a política de acesso para esse bucket.

Gere uma conta de serviço do Google Cloud usando o Catalog Explorer

  1. Faça login em seu workspace do Databricks habilitado para o Unity Catalog como um usuário que tenha a permissão CREATE STORAGE CREDENTIAL no metastore.

    As funções de administrador do metastore e administrador da account incluem essa permissão.

  2. Na barra lateral, clique em Ícone de catálogo Catálogo.

  3. Na página Quick access (Acesso rápido ), clique no botão External data (Dados externos) >, acesse Credentials (Credenciais ) tab e selecione Create credential (Criar credencial).

  4. Selecione um tipo de credencial da conta do serviçoGCP .

  5. Digite um nome de credencial de armazenamento e um comentário opcional.

  6. (Opcional) Se quiser que os usuários tenham acesso somente leitura aos locais externos que usam essa credencial de armazenamento, selecione Somente leitura. Para obter mais informações, consulte Marcar uma credencial de armazenamento como somente leitura.

  7. Clique em Criar.

    O Databricks cria a credencial de armazenamento e gera uma conta de serviço do Google Cloud.

  8. Na caixa de diálogo Credencial de armazenamento criada, anote a ID da conta de serviço, que está na forma de um endereço de e-mail, e clique em Concluído.

  9. (Opcional) Vincule a credencial de armazenamento a workspaces específicos.

    Por padrão, qualquer usuário com privilégios pode usar a credencial de armazenamento em qualquer workspace conectado ao metastore. Se você quiser permitir o acesso apenas de workspaces específicos, vá para a aba Workspaces e atribua os workspaces. Consulte (Opcional) Atribuir uma credencial de armazenamento a workspaces específicos.

Configurar permissões para a conta de serviço

  1. Acesse o console do Google Cloud e abra o bucket do GCS ao qual você deseja acessar a partir do seu workspace do Databricks.

    O bucket deve estar na mesma região que seu workspace do Databricks.

  2. Na guia Permissão, clique em + Conceder acesso e atribua à conta de serviço as seguintes funções:

    • Leitor de bucket de armazenamento legado

    • Administrador de objetos de armazenamento

    Use o endereço de e-mail da conta de serviço como identificador principal.

Configurar permissões para eventos de arquivo

Observação

Esse passo é opcional, mas altamente recomendado. Se o senhor não conceder acesso ao Databricks para configurar eventos de arquivo em seu nome, deverá configurar os eventos de arquivo manualmente para cada local. Caso contrário, o senhor terá acesso limitado a recursos críticos que o site Databricks poderá liberar no futuro.

Os passos abaixo permitem que o Databricks configure uma notificação completa pipeline para publicar mensagens de notificação de eventos de seus buckets GCS para o Google Cloud Pub/Sub. Eles pressupõem que o senhor tenha um projeto GCP com um bucket GCS e tenha ativado a API Pub/Sub.

  1. Crie um IAM role personalizado para eventos de arquivo.

    1. No console de nuvem do Google para o projeto que contém seu bucket GCS, navegue até IAM & Admin > Roles.

    2. Se o senhor já tiver um IAM role personalizado, selecione-o e clique em Edit Role (Editar função). Caso contrário, crie uma nova função clicando em + Criar função na página Funções.

    3. Na tela Create Role (Criar função ) ou Edit Role (Editar função ), adicione as seguintes permissões ao seu IAM role personalizado e salve as alterações. Para obter instruções detalhadas, consulte a documentação do GCP.

      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
      
  2. Conceda acesso à função.

    1. Navegue até o IAM & Admin > IAM.

    2. Clique em Conceder acesso.

    3. Digite seu serviço account como o principal.

    4. Selecione seu site personalizado IAM role.

    5. Clique em Salvar.

  3. Conceder permissões ao Cloud Storage Service Agent

    1. Encontre o agente de serviço account email seguindo estes passos na documentação do Google Cloud.

    2. No console de nuvem do Google, navegue até IAM & Admin > IAM > Grant Access (Conceder acesso).

    3. Digite o agente de serviço account email e atribua a função Pub/Sub Publisher*.

Agora você pode criar um local externo que faça referência a essa credencial de armazenamento.

(Opcional) Atribuir uma credencial de armazenamento a workspaces específicos

Prévia

Este recurso está em visualização pública.

Por padrão, uma credencial de armazenamento pode ser acessada de todos os workspaces na metastore. Isso significa que, se um usuário tiver recebido um privilégio (como CREATE EXTERNAL LOCATION) nessa credencial de armazenamento, ele poderá exercer esse privilégio em qualquer workspace vinculado ao metastore. Se você usar workspaces para isolar o acesso aos dados do usuário, talvez queira permitir o acesso a uma credencial de armazenamento somente de workspaces específicos. Esse recurso é conhecido como vinculação de workspace ou isolamento de credenciais de armazenamento.

Um caso de uso típico para vincular uma credencial de armazenamento a workspaces específicos é o cenário em que um administrador de cloud configura uma credencial de armazenamento usando uma credencial de conta de cloud de produção, e você deve garantir que os usuários do Databricks usem essa credencial para criar locais externos somente no workspace de produção.

Para obter mais informações sobre a vinculação de workspace, consulte (Opcional) Atribuir um local externo a workspaces específicos e Limitar o acesso ao catálogo a workspaces específicos.

Observação

As vinculações de workspace são referenciadas quando os privilégios sobre as credenciais de armazenamento são exercidos. Por exemplo, se um usuário criar uma localização externa usando uma credencial de armazenamento, a vinculação de workspace na credencial de armazenamento é verificada apenas quando a localização externa é criada. Depois que a localização externa é criada, ela funcionará independentemente das vinculações de workspace configuradas na credencial de armazenamento.

Vincule uma credencial de armazenamento a um ou mais workspaces

Para atribuir uma credencial de armazenamento a espaços de trabalho específicos, você pode usar o Catalog Explorer ou a CLI da Databricks.

Permissões necessárias: administrador do Metastore ou proprietário das credenciais de armazenamento.

Observação

Os administradores do metastore podem ver todas as credenciais de armazenamento em um metastore usando o Catalog Explorer, e os proprietários de credenciais de armazenamento podem ver todas as credenciais que possuem em um metastore, independentemente de a credencial estar atribuída ao workspace atual. As credenciais de armazenamento que não estão atribuídas ao workspace aparecem esmaecidas.

  1. Efetue login em um workspace vinculado ao metastore.

  2. Na barra lateral, clique em Ícone de catálogo Catálogo.

  3. Na página de acesso rápido, clique no botão External data > e vá para Credentials tab.

  4. Selecione a credencial de armazenamento e vá para a guia Workspaces.

  5. Na guia Workspaces, desmarque a caixa de seleção Todos os workspaces têm acesso.

    Se sua credencial de armazenamento já estiver vinculada a um ou mais workspaces, essa caixa de seleção já estará desmarcada.

  6. 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.

Existem dois grupos de comando da CLI do Databricks e duas etapas necessárias para atribuir uma credencial de armazenamento a um workspace.

Nos exemplos a seguir, substitua <profile-name> pelo nome do seu 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 do workspace e da ID do workspace em que você gerou o access token pessoal. Consulte Autenticação de token de acesso pessoal do Databricks.

  1. Use o comando update do grupo de comando storage-credentials para definir as credenciais de armazenamento isolation mode para ISOLATED:

    databricks storage-credentials update <my-storage-credential> \
    --isolation-mode ISOLATED \
    --profile <profile-name>
    

    O padrão isolation-mode é OPEN para todos os workspaces anexados ao metastore.

  2. Use o comando update-bindings do grupo de comandos workspace-bindings para atribuir os espaços de trabalho à credencial de armazenamento:

    databricks workspace-bindings update-bindings storage-credential <my-storage-credential> \
    --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.

    Observação

    A vinculação somente para leitura (BINDING_TYPE_READ_ONLY) não está disponível para credenciais de armazenamento. Portanto, não há razão para definir binding_type para a vinculação de credenciais de armazenamento.

Para listar todas as atribuições de workspace para uma credencial de armazenamento, use o comando get-bindings do grupo de comando workspace-bindings:

databricks workspace-bindings get-bindings storage-credential <my-storage-credential> \
--profile <profile-name>

Desassociar uma credencial de armazenamento de um workspace

As instruções para revogar o acesso ao workspace a uma credencial de armazenamento usando o Catalog Explorer ou o grupo de comandos workspace-bindings de CLI estão incluídas em Vincular uma credencial de armazenamento a um ou mais workspaces.

Próximos passos

Você pode visualizar, atualizar, excluir e conceder permissão a outros usuários para usar credenciais de armazenamento. Consulte Gerenciar credenciais de armazenamento.

Você pode definir locais externos usando credenciais de armazenamento. Veja Criar uma external location para conectar o armazenamento em cloud ao Databricks.