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. É possível usar as opções do Linux para controlar o acesso ao NFS e o gerenciamento de identidade e acesso (IAM, na sigla em inglês) para controlar o acesso às operações da instância, como criar, editar, ver e excluir instâncias.
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-redes não RFC 1918, será necessário conceder explicitamente o acesso à instância do Filestore usando o controle de acesso baseado em IP.
- 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 CLI 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 para essa
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 só têm acesso de
leitura por padrão. Os usuários raiz do cliente podem alterar permissões e proprietários.
Como configurar o acesso em um compartilhamento de arquivos
Ao ativar um compartilhamento de arquivos, use
as opções de ativação e
as configurações de /etc/fstab
para determinar se o
compartilhamento de arquivos é gravável e se os arquivos podem ser executados nele. Depois de ativar o compartilhamento de arquivos,
use os comandos padrão do Linux, como chmod
e
setfacl
para definir permissões de arquivo e compartilhamento de arquivos. Somente as camadas básicas são compatíveis com setfacl
.
Como definir permissões consistentes
É altamente recomendável definir permissões consistentes para cada usuário em todos os clientes que se conectam à mesma instância do Filestore para evitar o escalonamento de privilégios. Se um compartilhamento de arquivos for ativado em mais de um cliente, e um usuário tiver privilégios de 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 de raiz. - Em seguida, o usuário faz upload do arquivo executável para o compartilhamento de arquivos.
- O usuário executa o arquivo enviado como raiz em qualquer cliente em que ele tenha pelo menos a 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, 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 do arquivo POSIX.
Como usar papéis do Filestore
Para conceder permissões do Filestore aos usuários, use os papéis Editor do Filestore (roles/file.editor) e Leitor 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.instances.revert | Reverta as instâncias do Filestore no projeto para um estado de snapshot. | ✓ | |
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. | ✓ | ✓ |
file.snapshots.create | Criar um snapshot do Filestore. | ✓ | |
file.snapshots.update | Atualizar um snapshot do Filestore. | ✓ | |
file.snapshots.delete | Excluir um snapshot do Filestore. | ✓ | |
file.snapshots.get | Receber detalhes sobre um snapshot específico do Filestore. | ✓ | ✓ |
file.snapshots.list | Listar o snapshot 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 aos usuários, use esses papéis junto com os 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.instances.revert | Reverta as instâncias do Filestore no projeto para um estado de snapshot. | ✓ | ✓ | |
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. | ✓ | ✓ | ✓ |
file.snapshots.create | Criar um snapshot do Filestore. | ✓ | ✓ | |
file.snapshots.update | Atualizar um snapshot do Filestore. | ✓ | ✓ | |
file.snapshots.delete | Excluir um snapshot do Filestore. | ✓ | ✓ | |
file.snapshots.get | Receber detalhes sobre um snapshot específico do Filestore. | ✓ | ✓ | ✓ |
file.snapshots.list | Listar o snapshot 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 as permissões especificadas 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.