Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo mostra-lhe como usar a CLI do Azure para obter, definir e atualizar as listas de controlo de acesso (ACLs) de diretórios e ficheiros.
Os novos itens filhos herdam automaticamente as ACLs. Mas também pode adicionar, atualizar e remover ACLs de forma recursiva em itens subordinados existentes, sem ter de efetuar essas alterações individualmente para cada item subordinado.
Exemplos de referência | | Dar feedback
Pré-requisitos
Uma subscrição do Azure. Para obter mais informações, consulte Obter avaliação gratuita do Azure.
Uma conta de armazenamento com namespace hierárquico habilitado. Para instruções, consulte Criar uma conta de armazenamento que tenha um namespace hierárquico.
Versão da CLI
2.14.0do Azure ou superior.Uma das seguintes permissões de segurança:
Uma entidade de segurança do Microsoft Entra ID aprovisionada à qual foi atribuída a função Proprietário de Dados de Blobs de Armazenamento, com âmbito no contentor de destino, na conta de armazenamento, no grupo de recursos pai ou na subscrição.
Usuário proprietário do contêiner ou diretório de destino ao qual você planeja aplicar as configurações da ACL. Para definir ACLs recursivamente, este utilizador inclui todos os itens filhos no contentor ou diretório de destino.
Verifique se você tem a versão correta da CLI do Azure instalada
Abra o Azure Cloud Shell ou, se instalou o CLI do Azure localmente, abra uma aplicação de consola de comandos como o PowerShell do Windows.
Verifique se a versão da CLI do Azure que você instalou é
2.14.0ou superior usando o comando a seguir.az --versionSe a sua versão do CLI do Azure for inferior a
2.14.0, instale uma versão posterior. Para obter mais informações, consulte Instalar a CLI do Azure.
Conecte-se à conta
Se você estiver usando a CLI do Azure localmente, execute o comando logon.
az loginSe a CLI conseguir abrir o seu navegador predefinido, abre o navegador e carrega uma página de início de sessão no Azure.
Caso contrário, abra uma página do navegador no endereço https://aka.ms/devicelogin e introduza o código de autorização exibido no seu terminal. Em seguida, inicie sessão com as credenciais da sua conta no browser.
Para saber mais sobre diferentes métodos de autenticação, consulte Autorizar o acesso aos dados de blob ou de fila com a CLI do Azure.
Se a sua identidade estiver associada a mais do que uma subscrição e não for solicitado a selecionar a subscrição, defina a sua subscrição ativa para a subscrição da conta de armazenamento em que pretende operar. Neste exemplo, substitua o valor do espaço reservado
<subscription-id>pela ID da sua assinatura.az account set --subscription <subscription-id>
Obter ACLs
Obtenha a ACL de um diretório ao usar o comando az storage fs access show.
Este exemplo obtém a ACL de um diretório e, em seguida, imprime a ACL no console.
az storage fs access show -p my-directory -f my-container --account-name mystorageaccount --auth-mode login
Obtenha as permissões de acesso de um arquivo usando o comando az storage fs access show.
Este exemplo obtém a ACL de um arquivo e, em seguida, imprime a ACL no console.
az storage fs access show -p my-directory/upload.txt -f my-container --account-name mystorageaccount --auth-mode login
A imagem a seguir mostra a saída após a obtenção da ACL de um diretório.
Neste exemplo, o usuário proprietário tem permissões de leitura, gravação e execução. O grupo proprietário tem apenas permissões de leitura e execução. Para obter mais informações sobre listas de controle de acesso, consulte Controle de acesso no Armazenamento do Azure Data Lake.
Definir ACLs
Ao definir uma ACL, você substitui a ACL inteira, incluindo todas as suas entradas. Se desejar alterar o nível de permissão de uma entidade de segurança ou adicionar uma nova entidade de segurança à ACL sem afetar outras entradas existentes, atualize a ACL. Para atualizar uma ACL em vez de substituí-la, consulte a seção Atualizar ACLs deste artigo.
Se você optar por definir a ACL, deverá adicionar uma entrada para o usuário proprietário, uma entrada para o grupo proprietário e uma entrada para todos os outros usuários. Para saber mais sobre o usuário proprietário, o grupo proprietário e todos os outros usuários, consulte Usuários e identidades.
Esta seção mostra como:
- Definir uma ACL
- Definir ACLs recursivamente
Definir uma ACL
Use o comando az storage fs access set para definir a ACL de um diretório.
Este exemplo define a ACL em um diretório para o usuário proprietário, grupo proprietário ou outros usuários e, em seguida, imprime a ACL no console.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory -f my-container --account-name mystorageaccount --auth-mode login
Este exemplo define a ACL padrão em um diretório para o usuário proprietário, grupo proprietário ou outros usuários e, em seguida, imprime a ACL no console.
az storage fs access set --acl "default:user::rw-,group::rw-,other::-wx" -p my-directory -f my-container --account-name mystorageaccount --auth-mode login
Usa o comando az storage fs access set para definir a ACL de um ficheiro.
Este exemplo define a ACL em um arquivo para o usuário proprietário, grupo proprietário ou outros usuários e, em seguida, imprime a ACL no console.
az storage fs access set --acl "user::rw-,group::rw-,other::-wx" -p my-directory/upload.txt -f my-container --account-name mystorageaccount --auth-mode login
Nota
Para definir a ACL para um grupo ou utilizador específico, use os respetivos IDs de objetos. Por exemplo, para definir a ACL de um grupo, use group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Para definir a ACL de um utilizador, use user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
A imagem a seguir mostra a saída depois de definir a ACL de um arquivo.
Neste exemplo, o usuário proprietário e o grupo proprietário têm apenas permissões de leitura e gravação. Todos os outros usuários têm permissões de gravação e execução. Para obter mais informações sobre listas de controle de acesso, consulte Controle de acesso no Armazenamento do Azure Data Lake.
Definir ACLs recursivamente
Configure ACLs de forma recursiva usando o comando az storage fs access set-recursive.
Este exemplo define a ACL de um diretório chamado my-parent-directory. Estas entradas dão permissões ao utilizador proprietário para ler, escrever e executar, concedem ao grupo proprietário apenas permissões de leitura e execução, e não dão acesso a todos os outros. A última entrada ACL neste exemplo fornece a um usuário específico com o ID de objeto "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" permissões de leitura e execução.
az storage fs access set-recursive --acl "user::rwx,group::r-x,other::---,user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Nota
Para definir uma entrada ACL predefinida , adicione o prefixo default: a cada entrada. Por exemplo, default:user::rwx ou default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.
Atualizar ACL
Ao atualizar uma ACL, você modifica a ACL em vez de substituí-la. Por exemplo, você pode adicionar uma nova entidade de segurança à ACL sem afetar outras entidades de segurança listadas na ACL. Para substituir a ACL em vez de atualizá-la, consulte a seção Definir ACLs deste artigo.
Para atualizar uma ACL, crie um novo objeto ACL com a entrada ACL que você deseja atualizar e use esse objeto na operação de atualização da ACL. Não obtenhas o ACL existente, apenas fornece entradas ACL para atualizar.
Esta seção mostra como:
- Atualizar uma ACL
- Atualizar ACLs recursivamente
Atualizar uma ACL
Atualize a ACL de um arquivo usando o comando az storage fs access update-recursive . O CLI do Azure fornece apenas o update-recursive comando para atualizações. Quando direcionas um único ficheiro, o comando atualiza apenas a ACL desse ficheiro.
Este exemplo atualiza uma entrada ACL com permissão de gravação.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/myfile.txt -f my-container --account-name mystorageaccount --auth-mode login
Para atualizar a ACL de um grupo ou usuário específico, use suas respetivas IDs de objeto. Por exemplo, group:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ou user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Nota
A CLI do Azure não suporta a atualização da ACL de um único diretório sem atualizar a ACL dos itens subordinados. Para atualizar a ACL de um diretório sem modificar as ACLs de todos os itens filho nesse diretório, use qualquer uma das outras ferramentas e SDKs suportados. Consulte Como definir ACLs.
Atualizar ACLs recursivamente
Atualize recursivamente as ACLs usando o comando az storage fs access update-recursive.
Este exemplo atualiza uma entrada ACL com permissão de gravação.
az storage fs access update-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:rwx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Nota
Para atualizar uma entrada ACL predefinida , adicione o prefixo default: a cada entrada. Por exemplo, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:r-x.
Remover entradas da ACL recursivamente
Você pode remover uma ou mais entradas da ACL recursivamente. Para remover uma entrada ACL, cria um novo objeto ACL para a entrada que queres remover e depois usa esse objeto na operação remover ACL. Não obtenha a ACL existente; basta fornecer as entradas da ACL a remover.
Remova as entradas da ACL utilizando o comando az storage fs access remove-recursive.
Este exemplo remove uma entrada ACL do diretório raiz do contêiner.
az storage fs access remove-recursive --acl "user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Nota
Para remover uma entrada padrão de ACL, adicione o prefixo default: a cada entrada. Por exemplo, default:user:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx.
Recupere-se de falhas
Você pode encontrar erros de tempo de execução ou permissão ao modificar ACLs recursivamente. Para erros de tempo de execução, reinicie o processo desde o início. Erros de permissão podem ocorrer se o principal de segurança não tiver permissão suficiente para modificar a ACL de um diretório ou ficheiro na hierarquia de diretórios que está a modificar. Resolva o problema de permissão e, em seguida, opte por retomar o processo a partir do ponto de falha usando um token de continuação ou reiniciar o processo desde o início. Você não precisa usar o token de continuação se preferir reiniciar desde o início. Você pode reaplicar entradas de ACL sem qualquer impacto negativo.
Se ocorrer uma falha, devolve um token de continuação definindo o --continue-on-failure parâmetro para false. Depois de resolver os erros, você pode retomar o processo a partir do ponto de falha executando o comando novamente e, em seguida, definindo o --continuation parâmetro para o token de continuação.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure false --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Para garantir que o processo seja concluído ininterruptamente, defina o --continue-on-failure parâmetro como true.
az storage fs access set-recursive --acl "user::rw-,group::r-x,other::---" --continue-on-failure true --continuation xxxxxxx -p my-parent-directory/ -f my-container --account-name mystorageaccount --auth-mode login
Melhores práticas
Esta seção fornece algumas diretrizes de práticas recomendadas para definir ACLs recursivamente.
Manipulando erros de tempo de execução
Um erro de tempo de execução pode ocorrer por vários motivos (por exemplo: uma interrupção ou um problema de conectividade do cliente). Se você encontrar um erro de tempo de execução, reinicie o processo de ACL recursivo. As ACLs podem ser reaplicadas aos itens sem causar um impacto negativo.
Lidando com erros de permissão (403)
Se encontrar uma exceção de controlo de acesso ao executar um processo de ACL recursivo, o seu principal de segurança do AD pode não ter permissões suficientes para aplicar uma ACL a um ou mais itens filhos na hierarquia de diretórios. Quando ocorre um erro de permissão, o processo para e um token de continuação é fornecido. Corrija o problema de permissão e use o token de continuação para processar o conjunto de dados restante. Os diretórios e arquivos que já foram processados com sucesso não precisarão ser processados novamente. Você também pode optar por reiniciar o processo ACL recursivo. As ACLs podem ser reaplicadas aos itens sem causar um impacto negativo.
Credenciais
Recomendamos que se provisione uma entidade de segurança do Microsoft Entra à qual tenha sido atribuída a função Storage Blob Data Owner no escopo da conta ou do contêiner de armazenamento de destino.
Desempenho
Para reduzir a latência, recomendamos que você execute o processo de ACL recursiva em uma máquina virtual (VM) do Azure localizada na mesma região da sua conta de armazenamento.
Limites do ACL
O número máximo de ACLs que você pode aplicar a um diretório ou arquivo é de 32 ACLs de acesso e 32 ACLs padrão. Para obter mais informações, veja Controlo de acesso no Azure Data Lake Storage Gen2.