Controle de acesso

Nesta página, descrevemos como controlar o acesso a instâncias do Filestore.

O Filestore não é compatível com Kerberos para proteger o acesso a instâncias do Filestore. Use as opções Linux e Gerenciamento de identidade e acesso (IAM, na sigla em inglês) descritas nesta página.

Configurações de exportação de compartilhamento de arquivos

Um compartilhamento de arquivos do Filestore é atribuído às seguintes configurações padrão de /etc/exports:

  • A lista de clientes, que identifica os clientes com permissão para se conectar ao compartilhamento de arquivos, é composta de todos os endereços IP internos na rede VPC selecionada para a instância do Filestore. Os endereços IP internos podem ser qualquer intervalo listado em Intervalos de sub-rede. No entanto, se você tiver clientes em intervalos de sub-rede não RFC 1918, precisará conceder explicitamente acesso à instância do Filestore por meio de baseados em IP controle de acesso.
  • A opção rw é usada. Portanto, o compartilhamento de arquivos é leitura/gravação.
  • A opção de mapeamento de ID do usuário no_root_squash é usada. Portanto, espera-se que todos os usuários e grupos, incluindo o usuário raiz, sejam os mesmos na instância do Filestore e no cliente.
  • Todas as outras opções usam os padrões /etc/exports.

Controle de acesso baseado em IP

É possível alterar essas configurações de exportação criando regras de controle de acesso usando o Console do Cloud ou especificando um arquivo de configuração json durante a criação da instância usando a ferramenta gcloud. Para detalhes, consulte Como configurar o controle de acesso baseado em IP.

Também é possível adicionar novas regras de controle de acesso ou modificar as existentes depois que uma instância é criada. Para detalhes, consulte Como editar instâncias.

Permissões de compartilhamento de arquivos

Quando você cria uma instância do Filestore, o compartilhamento de arquivos dessa instância tem permissões de arquivo POSIX padrão de rwxr-xr-x. Essas permissões significam que, em uma instância do Filestore, somente usuários raiz em clientes conectados têm acesso de leitura/gravação ao compartilhamento de arquivos. Outros usuários têm acesso somente leitura por padrão. Os usuários raiz do cliente podem alterar as permissões e os proprietários.

Como configurar o acesso em um compartilhamento de arquivos

Ao ativar um compartilhamento de arquivos, é possível usar as opções de ativação e as configurações de /etc/fstab para determinar se o compartilhamento de arquivos é gravável e se arquivos podem ser executados nele. Depois de ativar o compartilhamento de arquivos, use comandos padrão do Linux, como chmod e setfacl, para definir permissões de compartilhamento de arquivos e arquivos ,

Como definir permissões consistentes

Para evitar o escalonamento de privilégios, recomendamos que você defina permissões consistentes para cada usuário em todos os clientes que se conectarem à mesma instância do Filestore. Se um compartilhamento de arquivos for ativado em mais de um cliente e um usuário tiver privilégios raiz em um cliente, mas não nos outros, o seguinte cenário de escalonamento de privilégios será possível:

  • Um usuário define o atributo setuid em um arquivo executável do cliente em que o usuário tem acesso raiz.
  • Em seguida, o usuário faz o upload do arquivo executável para o compartilhamento de arquivos.
  • O usuário executa o arquivo enviado como raiz em qualquer cliente em que tenha pelo menos permissão de leitura.

Esse cenário é possível porque o bit setuid permite que o usuário execute um arquivo usando as permissões do proprietário do arquivo, que, neste caso, é raiz.

Permissões e papéis do IAM

Conceda acesso às operações do Filestore concedendo papéis de gerenciamento de identidade e acesso (IAM) aos usuários.

As permissões do IAM controlam apenas o acesso às operações do Filestore, como a criação de uma instância do Filestore. Para controlar o acesso a operações no compartilhamento de arquivos, como leitura ou execução, use as permissões de arquivo POSIX.

Como usar papéis do Filestore

Para conceder permissões do Filestore a usuários, use os papéis de Editor de arquivos (roles/file.editor) e Visualizador do Filestore (roles/file.viewer). Se preferir, você também pode usar papéis básicos para essa finalidade.

Use a tabela a seguir para ver as permissões do Filestore associadas aos papéis do Filestore.

Permissão Ação Editor do Filestore Leitor do Filestore
file.locations.get Receba informações sobre um local compatível com este serviço.
file.locations.list Listar informações sobre os locais compatíveis com este serviço.
file.instances.create Criar uma instância do Filestore.
file.instances.update Atualizar uma instância do Filestore.
file.instances.delete Excluir uma instância do Filestore.
file.instances.get Receber detalhes sobre uma instância específica do Filestore.
file.instances.list Listar as instâncias do Filestore no projeto.
file.operations.get Receber o status de uma operação de instância do Filestore.
file.operations.list Listar operações de instância do Filestore.
file.operations.cancel Cancelar uma operação de instância do Filestore.
file.operations.delete Excluir uma operação de instância do Filestore.
file.backups.create Criar um backup do Filestore.
file.backups.update Atualizar um backup do Filestore.
file.backups.delete Excluir um backup do Filestore.
file.backups.get Receber detalhes sobre um backup específico do Filestore.
file.backups.list Listar os backups do Filestore no projeto.

Como usar papéis básicos

As permissões do Filestore também estão associadas aos papéis básicos do IAM de proprietário, editor e visualizador. Para conceder permissões do Filestore a usuários, é possível usar esses papéis além dos papéis do Filestore.

Use a tabela a seguir para ver as permissões do Filestore associadas a papéis básicos.

Permissão Ação Proprietário do projeto. Editor do projeto Visualizador do projeto
file.locations.get Receba informações sobre um local compatível com este serviço.
file.locations.list Listar informações sobre os locais compatíveis com este serviço.
file.instances.create Criar uma instância do Filestore.
file.instances.update Atualizar uma instância do Filestore.
file.instances.delete Excluir uma instância do Filestore.
file.instances.get Receber detalhes sobre uma instância específica do Filestore.
file.instances.list Listar as instâncias do Filestore no projeto.
file.operations.get Receber o status de uma operação de instância do Filestore.
file.operations.list Listar operações de instância do Filestore.
file.operations.cancel Cancelar uma operação de instância do Filestore.
file.operations.delete Excluir uma operação de instância do Filestore.
file.backups.create Criar um backup do Filestore.
file.backups.update Atualizar um backup do Filestore.
file.backups.delete Excluir um backup do Filestore.
file.backups.get Receber detalhes sobre um backup específico do Filestore.
file.backups.list Listar os backups do Filestore no projeto.

Papéis personalizados

Se os papéis predefinidos do IAM não atenderem às suas necessidades, defina um papel personalizado com permissões que você especifique usando os papéis personalizados do IAM. Ao criar papéis personalizados para o Filestore, inclua resourcemanager.projects.get e resourcemanager.projects.list para que o papel tenha permissão para consultar recursos do projeto.