Se a visibilidade das subpastas não for um problema, você pode considerar adicionar uma permissão como "Usuários autenticados / Listar conteúdo da pasta / somente esta pasta" às pastas pai. Essa permissão não herdará pastas filhas, e a enumeração baseada em acesso não permitirá que os usuários "vejam" subpastas às quais não tenham acesso, mas acabaria com a necessidade de aplicar permissões às pastas pai.
Exemplo:
[ folder ] Clients
|
| -- [ folder ] Client A
|
| -- [ folder ] Client B
| |
... | -- [ folder ] Project A
|
| -- [ folder ] Project B
...
Assumindo uma permissão herdável na raiz de "Administradores / Controle total" e "SISTEMA / Controle total", adicione a permissão "Usuários autenticados / Listar conteúdo da pasta / Somente esta pasta" (definida na caixa de diálogo "Avançado" na caixa de diálogo "Segurança" das propriedades da pasta) para a raiz. Se a enumeração baseada em acesso estiver ativada, isso fará com que as pastas do cliente às quais o usuário recebeu acesso fiquem visíveis ao listar o diretório raiz. Você não precisa usar "Usuários autenticados", obviamente. Você poderia algo muito mais criativo.
Supondo que você faça a mesma coisa em cada pasta de cliente discreta, os usuários autenticados poderão enumerar toda a lista de clientes, mas apenas os projetos em cada cliente aos quais eles têm acesso.
Digamos que você queira restringir a visibilidade das pastas. Este é um ótimo aplicativo para aninhamento de grupos do Active Directory. No exemplo abaixo, deixarei de fora usando grupos locais de domínio. Tecnicamente, a melhor prática da Microsoft é usar um aninhamento de grupos globais em grupos locais de domínio aos quais a permissão é aplicada. Se você planeja permanecer em um único ambiente de domínio (e não confia em florestas externas), não precisa seguir essa prática necessariamente. Para facilitar a explicação, vou usar apenas grupos de segurança glocal.
Crie um novo grupo de segurança global para cada projeto para cada função que estará presente:
- Cliente B, Projeto B - Revisores - Permitido ler o conteúdo do Projeto B do Cliente B
- Cliente B, Projeto B - Colaboradores - Permitido modificar o conteúdo do Projeto B do Cliente B
Aplique a permissão em cada pasta do projeto conforme descrito pelos nomes dos grupos. O grupo "Revisores" receberia a permissão "Ler" e o grupo "Colaboradores" receberia a permissão "Modificar",
Crie um novo grupo de segurança global para cada cliente:
- Participantes do projeto do cliente B
Coloque os dois grupos Cliente B, Projeto B ... na lista de associações do grupo Participantes do projeto B . Na pasta do cliente nomeado, conceda ao grupo Participantes do Projeto B a permissão "Listar Conteúdo da Pasta / Somente Esta Pasta".
Crie um novo grupo de segurança global para todos os participantes do projeto:
- Todos os participantes do projeto do cliente
Coloque os Participantes do Projeto B do Cliente e quaisquer outros grupos de clientes na lista de associações do grupo Todos os Participantes do Projeto . Na pasta raiz, conceda ao grupo Todos os participantes do projeto do cliente a permissão "Listar conteúdo da pasta / somente esta pasta".
Quando um usuário entra em um projeto, adicione-o ao grupo apropriado para o projeto ao qual ele está ingressando. Devido ao aninhamento do grupo e às permissões aplicadas, o usuário terá automaticamente acesso para enumerar a pasta raiz e a (s) pasta (s) do cliente fornecida (s) para o (s) projeto (s) com o qual está envolvido.