403 Erro de autorização negado do Access quando o bit pegajoso está habilitado no ADLS Gen2
Este artigo ajuda você a entender o bit pegajoso e fornece informações sobre como marcar essa configuração ao configurá-la no ADLS (Azure Data Lake Storage) Gen2 e obter problemas.
Qual é a parte pegajosa no ADLS Gen2?
Os usuários do ADLS Gen2 geralmente precisam gerenciar permissões para usuários diferentes e uma maneira de fazer isso é usando uma ACL (lista de controle de acesso). ACL é um sistema de controle de acesso semelhante a POSIX com uma configuração específica chamada bit pegajoso que pode causar falhas de autorização. Para obter mais informações sobre o modo de controle de permissão e o bit pegajoso, consulte AcLs (listas de controle de acesso) em Azure Data Lake Storage Gen2.
O bit pegajoso é um recurso avançado que não é necessário na configuração ACL da conta de armazenamento do ADLS Gen2. Em vez disso, você pode usar o recurso de máscara para limitar as permissões máximas para usuários nomeados, grupos nomeados e o grupo proprietário. Isso funciona de forma semelhante ao bit pegajoso e é facilmente configurado no portal do Azure.
403 Erro de autorização negado do Access
Considere o seguinte cenário:
- Uma conta de armazenamento do ADLS Gen2 tem um contêiner chamado contêiner e um caminho de pasta chamado pasta/pasta filho.
- Você usa ACL como um método de autorização.
- Na configuração ACL da conta de armazenamento do ADLS Gen2, você está configurado com a permissão Executar (X) no diretório raiz e na pasta e com a permissão Gravar e Executar (WX) na pasta filho.
- O bit pegajoso está habilitado na pasta filho.
- Você tenta criar ou carregar um novo arquivo, por exemplo, test.txt, no caminho da pasta da Conta de Armazenamento do ADLS Gen2 contêiner/pasta/pasta filho/.
Nesse cenário, você obtém um erro de autorização negado pelo Access 403.
Esse erro ocorre por dois motivos:
- Você não tem permissões suficientes para acessar o caminho da pasta.
- Você tem permissões suficientes, mas habilitar o bit pegajoso faz com que você não seja o proprietário desse caminho de pasta.
Identificar se o bit pegajoso causa um erro negado pelo Access 403
Verifique a configuração de ACL da pasta e das pastas pai e compare-a com os cenários comuns relacionados às permissões ACL. Se as permissões forem suficientes, o erro 403 poderá ser causado pelo bit pegajoso.
Verificar a configuração de bit pegajoso usando a CLI do Azure
Há várias maneiras de marcar essa configuração, como uma chamada de API REST, comando do PowerShell e CLI do Azure. Recomendamos a opção CLI do Azure porque ela não exige que nenhum software extra seja instalado e o comando é fácil de entender.
Para verificar a configuração de bit pegajoso usando a CLI do Azure, siga estas etapas:
Entre no portal do Azure com sua conta. Verifique se essa conta tem a atribuição de função Proprietário de Dados de Blob de Armazenamento na conta de armazenamento do ADLS Gen2.
Selecione Cloud Shell no portal do Azure.
Use o seguinte comando para obter a ACL e a configuração de bit pegajoso do diretório contêiner/pasta :
az storage fs access show -p folder -f container --account-name account --auth-mode login
Para marcar ACL e a configuração de bit pegajoso do diretório raiz, que é o ACL de nível de contêiner e a configuração de bit pegajoso, use o seguinte comando:
az storage fs access show -p / -f container --account-name account --auth-mode login
Aqui está uma saída de exemplo:
No corpo JSON de resposta, concentre-se em
permissions
. Normalmente, ele contém 9 ou 10 bits com um símbolo "+" extra. Para obter mais informações sobre essas cartas, consulte Usuários e identidades.O exemplo anterior indica que todas as permissões de usuário estão habilitadas e o bit pegajoso está habilitado. Para obter mais informações sobre como ler essa notação de permissão, consulte Notação de permissões tradicionais do Unix.
A nona letra tem quatro valores possíveis: "-", "x", "t" e "T". Se o valor dessa letra for "t" ou "T", significa que o bit pegajoso está habilitado. O "t" é "x" com o bit pegajoso habilitado e "T" é "-" com o bit pegajoso habilitado.
"rwxrwxrwt" pode ser explicado pelo seguinte:
- as permissões r,w e x estão habilitadas para o Proprietário.
- as permissões r,w e x estão habilitadas para o grupo Owning.
- As permissões r,w e x estão habilitadas para outros usuários e o bit pegajoso está habilitado.
Para entender melhor, aqui está outro exemplo para "rwxr-xr-T":
- as permissões r,w e x estão habilitadas para o Proprietário.
- As permissões r e x estão habilitadas para o grupo Owning.
- Somente a permissão r está habilitada para outros usuários e o bit pegajoso está habilitado.
De acordo com formulários curtos para permissões, a permissão de formulário curto é calculada para cada grupo de três letras ("r" como 4, "w" como 2 e "x"como 1). Portanto, "rw-rwx-x" será igual a 4+2+0, 4+2+1, 0+0+1, 671. Com base nessa regra de cálculo, você só precisa adicionar a quarta letra no início. Se o bit pegajoso estiver habilitado, defina-o como 1. Se o bit pegajoso estiver desabilitado, defina-o como 0.
Aqui estão alguns exemplos:
- rwxrwxrwt => 1777
- rwxr-xr-T => 1754
- rw-rwx-x => 0671
Desabilitar/Habilitar a configuração de bit pegajoso
Para desabilitar/habilitar a configuração de bit pegajoso, defina permissões para valores esperados.
A conta do Azure usada para modificar essa configuração deve ter a função Proprietário de Dados de Blob de Armazenamento na conta de armazenamento do ADLS Gen2 de destino. Há muitas maneiras possíveis de modificar a configuração de bit pegajoso. Aqui estão os SDKs com suporte:
SDK | Versão com suporte | Mais informações |
---|---|---|
API do REST | Versões da API 2019-12-12 e posteriores | Path |
Módulo do Az PowerShell | 5.6.0 e versões posteriores | Usar o PowerShell para gerenciar ACLs no Azure Data Lake Storage Gen2 |
CLI do Azure | 2.38.0 e versões posteriores | Usar a CLI do Azure para gerenciar ACLs em Azure Data Lake Storage Gen2 |
SDK DO .NET | 12.14.0 e versões posteriores | Use o .NET para gerenciar ACLs no Azure Data Lake Storage Gen2 |
Java SDK | 12.11.0 e versões posteriores | Usar Java para gerenciar ACLs no Azure Data Lake Storage Gen2 |
Python SDK | 12.8.0 e versões posteriores | Usar o Python para gerenciar ACLs no Azure Data Lake Storage Gen2 |
JavaScript SDK | 12.11.0-beta.1 e versões posteriores | Usar o SDK do JavaScript no Node.js para gerenciar ACLs no Azure Data Lake Storage Gen2 |
HDFS CLI | 3.3.3 e versões posteriores | Usando a CLI do HDFS com Data Lake Storage Gen2 e Apache Hadoop 3.3.3 – Guia de Permissões do HDFS |
Aqui está um exemplo de desabilitar/habilitar a configuração de bit pegajoso com a CLI do Azure.
Entre no portal do Azure com sua conta que tem a atribuição de função Proprietário de Dados do Blob de Armazenamento na conta de armazenamento do ADLS Gen2 de destino.
Selecione Cloud Shell no portal do Azure.
Para definir a ACL e a configuração de bit pegajoso do diretório contêiner/pasta para as permissões "rwxrwxrwt" e habilitar o bit pegajoso, use o seguinte comando:
az storage fs access set --permissions rwxrwxrwt -p folder -f container --account-name account --auth-mode login
Para modificar a configuração do diretório raiz, que é o ACL de nível de contêiner e a configuração de bit pegajoso, use o seguinte comando:
az storage fs access set --permissions rwxrwxrwt -p / -f container --account-name account --auth-mode login
O
{permission notation}
no comando anterior pode aceitar notações de forma longa e curta. Isso significa que o seguinte comando também é qualificado:az storage fs access set --permissions 1776 -p folder -f container --account-name account --auth-mode login
Aqui está uma saída de exemplo:
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.