En esta página se describe cómo controlar el acceso a las instancias de Filestore.
Filestore no admite Kerberos para asegurar el acceso a las instancias de Filestore. Puedes usar las opciones de Linux para controlar el acceso NFS y la administración de identidades y accesos (IAM) a fin de controlar el acceso a las operaciones de instancias, como crear, editar, ver y borrar instancias.
Configuración de exportación de recurso compartido de archivos
A un archivo compartido de Filestore se le asigna la siguiente configuración predeterminada de /etc/exports
:
- La lista de clientes, que identifica a los clientes a los que se les permite conectarse a los archivos compartidos, se compone de todas las direcciones IP internas en la red VPC que seleccionaste para la instancia de Filestore. Las direcciones IP internas pueden ser cualquier rango enumerado en los rangos de subredes. Sin embargo, si tienes clientes en rangos de subredes que no son RFC 1918, debes otorgarles acceso de forma explícita a la instancia de Filestore mediante el control de acceso basado en IP.
- Se usa la opción
rw
, por lo que los archivos compartidos son de lectura y escritura. - Se utiliza la opción
no_root_squash
de asignación de ID del usuario, por lo que se espera que todos los usuarios y grupos, incluido el usuario raíz, sean los mismos tanto en la instancia de Filestore como en el cliente. - Todas las demás opciones usan los valores predeterminados de
/etc/exports
.
Control de acceso basado en IP
Puedes cambiar esta configuración de exportación si creas reglas de control de acceso con Cloud Console o si especificas un archivo de configuración json durante la creación de la instancia mediante la CLI de gcloud
. Para obtener más información, consulta Configurar el control de acceso basado en IP.
También puedes agregar nuevas reglas de control de acceso o modificar las existentes después de crear una instancia. Para obtener más detalles, consulta Edita instancias.
Permisos para recursos compartidos de archivo
Cuando creas una instancia de Filestore, el archivo compartido para esa instancia tiene permisos de archivo POSIX predeterminados de rwxr-xr-x
. Con estos permisos, en una instancia de Filestore, solo los usuarios raíz de clientes conectados tienen acceso de lectura/escritura a los archivos compartidos. Otros usuarios solo tienen acceso de lectura de forma predeterminada. Los usuarios raíz del cliente pueden cambiar los permisos y los propietarios.
Configura el acceso de un recurso compartido de archivo
Cuando activas un recurso compartido, puedes usar las opciones de activación y la configuración de /etc/fstab
para determinar si el recurso compartido de archivos puede escribirse y si se pueden ejecutar archivos en él. Después de activar los archivos compartidos, puedes usar comandos estándar de Linux, como chmod
, y setfacl
para establecer los permisos de archivos y archivos compartidos. Solo los niveles básicos admiten setfacl
.
Establece permisos coherentes
Te recomendamos que establezcas permisos coherentes para cada usuario en todos los clientes que se conecten a la misma instancia de Filestore a fin de evitar la elevación de privilegios. Si un archivo compartido está activado en más de un cliente y un usuario tiene privilegios de raíz en un cliente, pero no en el otro, entonces es posible hacer la siguiente situación de elevación de privilegios:
- Un usuario establece el atributo
setuid
en un archivo ejecutable desde el cliente en el que el usuario tiene acceso raíz. - Luego, el usuario sube el archivo ejecutable al archivo compartido.
- El usuario ejecuta el archivo subido como raíz en cualquier cliente en el que el usuario tenga al menos permiso de lectura.
Esta situación es posible porque el bit setuid
permite que el usuario ejecute un archivo con los permisos del propietario del archivo, que en este caso es raíz.
Permisos y funciones de IAM
Para otorgar acceso a las operaciones de Filestore, asigna funciones de administración de identidades y accesos (IAM) a los usuarios.
Los permisos de IAM solo controlan el acceso a las operaciones de Filestore, como crear una instancia de Filestore. Para controlar el acceso a las operaciones en el archivo compartido, como leer o ejecutar, usa los permisos de archivo POSIX.
Usa funciones de Filestore
Si deseas otorgar permisos a Filestore a los usuarios, usa las funciones Editor de Filestore (roles/file.editor) y Visualizador de Filestore (roles/file.viewer). Si lo prefieres, también puedes usar las funciones básicas para este fin.
Use la siguiente tabla para ver los permisos de Filestore asociados con las funciones de Filestore.
Permiso | Acción | Editor de Filestore | Visualizador de Filestore |
file.locations.get | Obtener información sobre una ubicación específica admitida por este servicio | ✓ | ✓ |
file.locations.list | Mostrar una lista con información sobre las ubicaciones compatibles con este servicio | ✓ | ✓ |
file.instances.create | Crear una instancia de Filestore. | ✓ | |
file.instances.update | Actualizar una instancia de Filestore. | ✓ | |
file.instances.delete | Eliminar una instancia de Filestore. | ✓ | |
file.instances.get | Obtener detalles sobre una instancia específica de Filestore. | ✓ | ✓ |
file.instances.list | Enumerar las instancias de Filestore en el proyecto. | ✓ | ✓ |
file.instances.revert | Revierte las instancias de Filestore en el proyecto a un estado de instantánea. | ✓ | |
file.operations.get | Obtener el estado de una operación de instancia de Filestore. | ✓ | ✓ |
file.operations.list | Mostrar una lista de operaciones de instancia de Filestore. | ✓ | ✓ |
file.operations.cancel | Cancelar una operación de instancia de Filestore. | ✓ | |
file.operations.delete | Eliminar una operación de instancia de Filestore. | ✓ | |
file.backups.create | Crea una copia de seguridad de Filestore. | ✓ | |
file.backups.update | Actualiza una copia de seguridad de Filestore | ✓ | |
file.backups.delete | Borra una copia de seguridad de Filestore | ✓ | |
file.backups.get | Obtener detalles sobre una instancia específica de Filestore. | ✓ | ✓ |
file.backups.list | Enumerar las instancias de Filestore en el proyecto. | ✓ | ✓ |
file.snapshots.create | Crear una instantánea de Filestore | ✓ | |
file.instantáneas.update | Actualizar una instantánea de Filestore | ✓ | |
file.instantáneas.delete | Borra una instantánea de Filestore. | ✓ | |
file.snapshots.get | Obtener detalles sobre una instancia específica de Filestore. | ✓ | ✓ |
file.snapshots.list | Enumerar la instantánea de Filestore en el proyecto. | ✓ | ✓ |
Usa las funciones básicas
Los permisos de Filestore también están asociados con las funciones básicas de IAM de propietario, editor y visualizador. Para otorgar permisos de Filestore a los usuarios, puedes usar estas funciones además de las funciones de Filestore.
Use la siguiente tabla para ver los permisos de Filestore asociados con las funciones de Filestore.
Permiso | Acción | Propietario del proyecto | Editor de proyecto | Lector del proyecto |
file.locations.get | Obtener información sobre una ubicación específica admitida por este servicio | ✓ | ✓ | ✓ |
file.locations.list | Mostrar una lista con información sobre las ubicaciones compatibles con este servicio | ✓ | ✓ | ✓ |
file.instances.create | Crear una instancia de Filestore. | ✓ | ✓ | |
file.instances.update | Actualizar una instancia de Filestore. | ✓ | ✓ | |
file.instances.delete | Eliminar una instancia de Filestore. | ✓ | ✓ | |
file.instances.get | Obtener detalles sobre una instancia específica de Filestore. | ✓ | ✓ | ✓ |
file.instances.list | Enumerar las instancias de Filestore en el proyecto. | ✓ | ✓ | ✓ |
file.instances.revert | Revierte las instancias de Filestore en el proyecto a un estado de instantánea. | ✓ | ✓ | |
file.operations.get | Obtener el estado de una operación de instancia de Filestore. | ✓ | ✓ | ✓ |
file.operations.list | Mostrar una lista de operaciones de instancia de Filestore. | ✓ | ✓ | ✓ |
file.operations.cancel | Cancelar una operación de instancia de Filestore. | ✓ | ✓ | |
file.operations.delete | Eliminar una operación de instancia de Filestore. | ✓ | ✓ | |
file.backups.create | Crea una copia de seguridad de Filestore. | ✓ | ✓ | |
file.backups.update | Actualiza una copia de seguridad de Filestore | ✓ | ✓ | |
file.backups.delete | Borra una copia de seguridad de Filestore | ✓ | ✓ | |
file.backups.get | Obtener detalles sobre una instancia específica de Filestore. | ✓ | ✓ | ✓ |
file.backups.list | Enumerar las instancias de Filestore en el proyecto. | ✓ | ✓ | ✓ |
file.snapshots.create | Crear una instantánea de Filestore | ✓ | ✓ | |
file.instantáneas.update | Actualizar una instantánea de Filestore | ✓ | ✓ | |
file.instantáneas.delete | Borra una instantánea de Filestore. | ✓ | ✓ | |
file.snapshots.get | Obtener detalles sobre una instancia específica de Filestore. | ✓ | ✓ | ✓ |
file.snapshots.list | Enumerar la instantánea de Filestore en el proyecto. | ✓ | ✓ | ✓ |
Funciones personalizadas
Si las funciones predefinidas de IAM no cumplen con tus necesidades, puedes definir una función personalizada con los permisos que especifiques mediante las funciones personalizadas de IAM.
Cuando cree funciones personalizadas para Filestore, asegúrese de incluir tanto resourcemanager.projects.get
como resourcemanager.projects.list
para que la función tenga permiso para consultar los recursos del proyecto.