Usando o seguinte código PySpark, consegui montar com sucesso uma conta de armazenamento Azure OneLake. No entanto, quando tento ler e exibir o caminho, display(dbutils.fs.ls('/mnt/lake'))
recebo o seguinte erro:
Falha na operação: "Proibido", 403, GET, https://onelake.dfs.fabric.microsoft.com/DataEngineeringWKSP?upn=false&resource=filesystem&maxResults=5000&directory=my_lakehouse.Lakehouse&timeout=90&recursive=false , Proibido, "O usuário não está autorizado a executar a operação atual para o espaço de trabalho 'xxxxxx-ad19-489b-944e-82d6fc013b87', artefato 'xxxxx-3c39-44b8-8982-ddecef9e829c'."
Recebo um erro semelhante quando tento ler arquivos na conta onelake:
Falha na operação: "Proibido", 403, HEAD, https://onelake.dfs.fabric.microsoft.com/DataEngineeringWKSP/sqlite_lakehouse.Lakehouse/Files/expdata.csv?upn=false&action=getStatus&timeout=90
O código que usei para montar a conta de armazenamento onelake é o seguinte:
url = "abfss://[email protected]/sqlite_lakehouse.Lakehouse"
mount_folder = "/mnt/lake"
# OAuth configuration settings for OneLake
configs = {
"fs.azure.account.auth.type.onelake.dfs.fabric.microsoft.com": "OAuth",
"fs.azure.account.oauth.provider.type.onelake.dfs.fabric.microsoft.com": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id.onelake.dfs.fabric.microsoft.com": "xxxxxx-a061-4899-994b-81253d864bc8",
"fs.azure.account.oauth2.client.secret.onelake.dfs.fabric.microsoft.com": "xxxxxx~1Q.B-Ey12zs066D_G3.E6bslnE_LqY-aFs",
"fs.azure.account.oauth2.client.endpoint.onelake.dfs.fabric.microsoft.com": "https://login.microsoftonline.com/xxxxxxxxxxxxxf12fc6/oauth2/token"
}
mounted_list = dbutils.fs.mounts()
mounted_exist = False
for item in mounted_list:
if mount_folder in item.mountPoint:
mounted_exist = True
break
if not mounted_exist:
dbutils.fs.mount(source=url, mount_point=mount_folder, extra_configs=configs)
Acredito que preciso adicionar permissões no espaço de trabalho do Azure Fabric, mas estou com dificuldades para localizar exatamente onde adicionar as permissões
Significa que sua identidade de usuário atual não tem permissão para acessar o espaço de trabalho OneLake ou o artefato Lakehouse especificado.
Como você mencionou, você deseja fornecer a permissão ao principal do serviço. Siga os passos abaixo:
Primeiro no portal do administrador
Em seguida, para conceder acesso a uma entidade de serviço. Agora que o recurso está habilitado, você pode conceder acesso a uma entidade de serviço ou identidade gerenciada ao seu Workspace do Fabric. Para isso, navegue até a entidade de trabalho desejada e selecione Gerenciar acesso .
Em seguida, clique em + Adicionar pessoas ou grupos e digite o nome da sua entidade de serviço ou identidade gerenciada. Quando aparecer nas sugestões, selecione-a e clique em Adicionar .
Funções disponíveis:
Admin : Concede controle total sobre o Workspace, incluindo direitos de exclusão. Geralmente não é recomendado para entidades de serviço devido ao seu alto nível de acesso.
Membro : Fornece acesso quase total, excluindo a capacidade de modificar as configurações do espaço de trabalho ou gerenciar permissões de acesso.
Colaborador (recomendado) : Permite a maioria das ações, como gerenciar conteúdo, mas não pode modificar o acesso de membros nem compartilhar itens. Esta função oferece os privilégios mínimos necessários para acessar o OneLake via API.
Visualizador : Oferece acesso somente leitura para visualizar itens do espaço de trabalho, executar consultas SQL e executar pipelines. Observe que esta função não permite acesso à API do OneLake.
Usando o comando abaixo do Azure CLI
Este comando gerará uma nova entidade de serviço chamada Fabricator e exibirá os seguintes detalhes:
O appId representa o ID do cliente e a senha corresponde ao segredo do cliente. Essas credenciais são usadas para autenticação no OneLake por meio do SDK Python.
Você precisará instalar o pacote:
Com os pacotes necessários instalados, você pode usar o seguinte trecho de código para autenticar e se conectar ao OneLake.
de azure.identity importar ClientSecretCredential de azure.storage.filedatalake importar FileSystemClient
Referência: Obrigado @Sam Debruyn pelo excelente artigo sobre como usar a autenticação principal do serviço para acessar o OneLake deltalake 0.25.5 do Microsoft Fabric