Trabajar con opciones de exportación NFS

En este tema se describen las funciones básicas de las opciones de exportación NFS y cómo controlar el acceso del cliente al sistema de archivos.

Visión general

Las opciones de exportación NFS le proporcionan un mayor control de acceso granular mediante el uso de reglas de la lista de seguridad para limitar el acceso de la VCN. Puede utilizar las opciones de exportación NFS para especificar los niveles de acceso por direcciones IP o bloques de CIDR que se conectan a sistemas de archivos mediante exportaciones en un destino de montaje. El acceso se puede restringir para que el sistema de archivos de cada cliente sea inaccesible e invisible, lo que proporciona mejores controles de seguridad en entornos multiinquilino.

Mediante los controles de acceso a las opciones de exportación NFS, puede limitar la capacidad de los clientes de conectarse al sistema de archivos y ver o escribir datos. Por ejemplo, si desea permitir a los clientes utilicen pero no actualicen recursos en el sistema de archivos, puede definir el acceso en Solo lectura. También puede reducir el acceso raíz del cliente a los sistemas de archivos y asignar los ID de usuario (UID) y los ID de grupo (GID) especificados a un UID/GID anónimo de su elección. Para obtener más información sobre cómo funcionan las opciones de exportación NFS con otras capas de seguridad, consulte Acerca de la seguridad.

Consejo

Vea un vídeo sobre el trabajo con opciones de exportación NFS en File Storage.

Política de IAM necesaria

Para utilizar Oracle Cloud Infrastructure, un administrador debe otorgarle acceso de seguridad en una política . Este acceso está requerido tanto si está utilizando la consola como la API de REST con un SDK, una CLI u otra herramienta. Si recibe un mensaje que indica que no tiene permiso o no está autorizado, verifique con su administrador qué tipo de acceso tiene y en qué compartimento  debe trabajar.

Para administradores: la política Permitir que los usuarios creen, gestionen y supriman sistemas de archivos permite a los usuarios gestionar opciones de exportación NFS.

Si no está familiarizado con las políticas, consulte Introducción a las políticas y Políticas comunes.

Exportaciones

Las exportaciones controlan el acceso de los clientes NFS a los sistemas de archivos al conectarse a un destino de montaje. Los sistemas de archivos se exportan (están disponibles) mediante destinos de montaje. Cada destino de montaje mantiene un conjunto de exportación que contiene una o varias exportaciones. Un sistema de archivos se puede exportar a través de uno o más destinos de montaje. Un sistema de archivos debe tener al menos una exportación en un destino de montaje para que las instancias monten el sistema de archivos. La información utilizada por una exportación incluye el OCID del sistema de archivos, el OCID del destino de montaje, el OCID del conjunto de exportación, la ruta de acceso de exportación y las opciones de exportación del cliente. Por lo general, se crea una exportación en un destino de montaje cuando se crea el sistema de archivos. A partir de ese momento, puede crear exportaciones adicionales para un sistema de archivos en cualquier destino de montaje que resida en el mismo dominio de disponibilidadque el sistema de archivos.

Consulte Para crear una exportación para un sistema de archivos para obtener más información.

Opciones de exportación NFS

Las opciones de exportación NFS son un conjunto de parámetros dentro de la exportación que especifican el nivel de acceso otorgado a los clientes NFS cuando se conectan a un destino de montaje. Una entrada de opciones de exportación NFS en una exportación define el acceso para una única dirección IP o rango de bloques de CIDR. Puede tener hasta 100 opciones por exportación.

Cada dirección IP de cliente o bloque de CIDR independiente que desee definir para el acceso necesita una entrada de opciones de exportación independiente en la exportación. Por ejemplo, si desea definir opciones para direcciones IP del cliente NFS 10.0.0.6, 10.0.08 y 10.0.0.10, debe crear tres entradas separadas, una para cada dirección IP.

El servicio File Storage tiene en cuenta el orden de cada entrada de opciones de exportación para la exportación. Durante una solicitud de NFS de un cliente, el servicio File Storage aplica el primer conjunto de opciones que coincide con la dirección IP de origen del cliente. Solo se aplica el primer conjunto; el resto se ignora.

Por ejemplo, considere las siguientes dos entradas de opciones de exportación especificando el acceso a una exportación:

Entrada 1: origen: 10.0.0.0/16, acceso: Solo lectura

Entrada 2: origen: 10.0.0.8, acceso: Lectura/Escritura

En este caso, los clientes que se conectan a la exportación desde la dirección IP 10.0.0.8 tienen acceso Solo lectura. La dirección IP de origen de la solicitud está incluida en el bloque de CIDR especificado en la primera entrada y el servicio File Storage aplica las opciones en la primera coincidencia.

Importante

Los sistemas de archivos se pueden asociar con una o más exportaciones, incluidas en uno o más destinos de montaje. Si la dirección IP de origen del cliente no coincide con ninguna entrada de la lista para una sola exportación, esa exportación no será visible para el cliente. Sin embargo, es posible acceder al sistema de archivos mediante otras exportaciones en los mismos destinos de montaje o en otros. Para denegar completamente el acceso de cliente a un sistema de archivos, asegúrese de que la dirección IP de origen del cliente o el bloque de CIDR no estén incluidos en ninguna exportación para ningún destino de montaje asociado con el sistema de archivos.

Se pueden configurar las siguientes opciones para controlar el acceso de exportación:

  • Origen: dirección IP o bloque de CIDR de un cliente NFS de conexión.
  • Requerir puerto de origen con privilegios (true/false): este valor determina si los clientes NFS especificados en el origen son necesarios para conectarse desde un puerto de origen con privilegios. Los puertos con privilegios son cualquier puerto, incluido 1-1023. En sistemas similares a Unix, solo el usuario raíz puede abrir puertos con privilegios. Al definir este valor en true, se impide las solicitudes de puertos sin privilegios. El valor por defecto para este valor varía según la forma de creación de la exportación. Al crear una exportación sin una matriz ClientOption explícita, se define el atributo requirePrivilegedSourcePort de la opción de cliente en false. Cuando crea una matriz ClientOption de forma explícita, requirePrivilegedSourcePort utiliza el valor predeterminado true.

    Por ejemplo, la creación de una exportación en la consola mediante las selecciones por defecto establece requirePrivilegedSourcePort en false. Al crear una exportación en la API junto con una matriz ClientOption, requirePrivilegedSourcePort se establece en true.

Importante

Si la opción Requerir puerto de origen con privilegios está definida en true, debe seguir estos pasos de configuración adicionales: 

  1. Al montar el sistema de archivos desde un sistema similar a Unix, incluya la opción resvport en el comando de montaje durante el montaje. Por ejemplo: 

    sudo mount -o resvport 10.x.x.x:/fs-export-path /mnt/yourmountpoint

    Para obtener más información, consulte Montaje de sistemas de archivos desde instancias de tipo Unix.

  2. Al montar el sistema de archivos desde un sistema Windows, asegúrese de que el valor de la clave de registro UseReserverdPorts esté definido en 1.

    Para obtener más información, consulte Montaje de sistemas de archivos desde instancias de Windows.

  • Acceso (Solo lectura, Lectura/escritura): esta configuración especifica el acceso de cliente NFS de origen. Si no se especifica, el valor por defecto es Lectura/escritura.
  • Squash de identidad: (Todo, Raíz, Ninguno): este valor determina si los clientes de origen que acceden al sistema de archivos tienen su ID de usuario (UID) e ID de grupo (GID) reasignados a anonymousUid y anonymousGid. Si selecciona Todo, todos los usuarios y grupos se reasignan. Si selecciona Raíz, solo se reasigna la combinación de UID/GID de usuario raíz 0/0. Si se selecciona Ninguno, no se reasigna ningún usuario. Si no se especifica, el valor por defecto es Ninguno.
  • anonymousUid: este valor se utiliza junto con la opción Squash de identidad. Al volver a asignar usuarios, puede utilizar este valor para cambiar el anonymousUid por defecto de 65534 a cualquier ID de usuario que elija.
  • anonymousGid: este valor se utiliza junto con la opción Squash de identidad. Al volver a asignar grupos, puede utilizar este valor para cambiar el anonymousGid por defecto de 65534 a cualquier ID de grupo que elija.

Escenarios típicos de control de acceso

Al crear un sistema de archivos y la exportación, las opciones de exportación NFS para ese sistema de archivos se establecen en los siguientes valores predeterminados, lo que permite el acceso completo para todas las conexiones de origen de cliente NFS. Estos valores predeterminados se deben cambiar si desea restringir el acceso:

  • Origen: 0.0.0.0/0 (Todos)
  • Requerir puerto de origen con privilegios: False
  • Acceso: Solo lectura
  • Squash de identidad: Ninguno

Escenario A: control de acceso basado en host

Proporcione un entorno alojado gestionado para dos clientes. Los clientes comparten un destino de montaje, pero cada uno tiene su propio sistema de archivos y no pueden acceder a los datos del otro. Por ejemplo:

  • El cliente A, que está asignado al bloque de CIDR 10.0.0.0/24, requiere acceso de lectura/escritura al sistema de archivos A, pero no al sistema de archivos B.
  • El cliente B, que está asignado al bloque de CIDR 10.1.1.0/24, necesita acceso de lectura/escritura al sistema de archivos B, pero no al sistema de archivos A.
  • El cliente C, que está asignado al bloque de CIDR 10.2.2.0/24, no tiene ningún tipo de acceso al sistema de archivos A ni al sistema de archivos B.
  • Los sistemas de archivos A y B están asociados a un único destino de montaje, MT1. Cada sistema de archivos tiene una exportación incluida en el conjunto de exportación de MT1.

Dado que el cliente A y el cliente B acceden al destino de montaje desde diferentes bloques de CIDR, puede definir las opciones del cliente de ambas exportaciones del sistema de archivos para permitir el acceso solo a un único bloque de CIDR. Se deniega el acceso al cliente C al no incluir su dirección IP o bloque de CIDR en las opciones de exportación NFS para cualquier exportación de cualquier sistema de archivos.

Ejemplo de la consola

Defina las opciones de exportación del sistema de archivos A para permitir el acceso de lectura/escritura solo al cliente A, que está asignado al bloque de CIDR 10.0.0.0/24. El cliente B y el cliente C no están incluidos en este bloque de CIDR y no pueden acceder al sistema de archivos.

En esta imagen se muestra la configuración de las opciones de exportación del sistema de archivos A.

Defina las opciones de exportación del sistema de archivos B para permitir el acceso de lectura/escritura solo al cliente B, que está asignado al bloque de CIDR 10.1.1.0/24. El cliente A y el cliente C no están incluidos en este bloque de CIDR y no pueden acceder al sistema de archivos.

En esta imagen muestra la configuración de las opciones de exportación para el sistema de archivos B.

Ejemplo de la CLI

Configure las opciones de exportación del sistema de archivos A para permitir el acceso de lectura/escritura al cliente A, que está asignado al bloque de CIDR 10.0.0.0/24. El cliente B y el cliente C no están incluidos en este bloque de CIDR y no pueden acceder al sistema de archivos.

oci fs export update --export-id <File_system_A_export_ID> --export-options '[{"source":"10.0.0.0/24","require-privileged-source-port":"true","access":"READ_WRITE","identity-squash":"NONE","anonymous-uid":"65534","anonymous-gid":"65534"}]'

Configure las opciones de exportación del sistema de archivos B para permitir el acceso de lectura/escritura solo al cliente B, que está asignado al bloque de CIDR 10.1.1.0/24. El cliente A y el cliente C no están incluidos en este bloque de CIDR y no pueden acceder al sistema de archivos.

oci fs export update --export-id <File_system_B_export_ID> --export-options '[{"source":"10.1.1.0/24 ","require-privileged-source-port":"true","access":"READ_WRITE","identity-squash":"NONE","anonymous-uid":"65534","anonymous-gid":"65534"}]'
Ejemplo de la API

Configure las opciones de exportación del sistema de archivos A para permitir el acceso de lectura/escritura al cliente A, que está asignado al bloque de CIDR 10.0.0.0/24. El cliente B y el cliente C no están incluidos en este bloque de CIDR y no pueden acceder al sistema de archivos.

PUT/<Current_API_Version>/exports/<File_System_A_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "10.0.0.0/24",
          "requirePrivilegedSourcePort": true,
          "access": "READ_WRITE",
          "identitySquash": "NONE",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}

Configure las opciones de exportación del sistema de archivos B para permitir el acceso de lectura/escritura solo al cliente B, que está asignado al bloque de CIDR 10.1.1.0/24. El cliente A y el cliente C no están incluidos en este bloque de CIDR y no pueden acceder al sistema de archivos.

PUT/<Current_API_Version>/exports/<File_System_B_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "10.1.1.0/24",
          "requirePrivilegedSourcePort": true,
          "access": "READ_WRITE",
          "identitySquash": "NONE",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}

Escenario B: Limitación de la capacidad de escribir datos

Proporcione datos a los clientes para que los utilicen, pero no les permita actualizarlos.

Por ejemplo, desea publicar un conjunto de recursos en el sistema de archivos A para que una aplicación pueda utilizarlo, pero no cambiarlo. La aplicación se conecta desde la dirección IP 10.0.0.8.

Ejemplo de la consola

Defina la dirección IP de origen 10.0.0.8 en Solo lectura en la exportación del sistema de archivos A:

En esta imagen se muestra la configuración de las opciones de exportación del sistema de archivos A.

Ejemplo de la CLI

Configure la dirección IP de origen 10.0.0.8 en Solo lectura en la exportación del sistema de archivos A:

oci fs export update --export-id <File_System_A_export_OCID> --export-options '[{"source":"10.0.0.8","require-privileged-source-port":"true","access":"READ_ONLY","identitysquash":"NONE","anonymousuid":"65534","anonymousgid":"65534"}]'
Ejemplo de la API

Configure la dirección IP de origen 10.0.0.8 en Solo lectura en la exportación del sistema de archivos A:

PUT/<Current_API_Version>/exports/<File_System_A_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "10.0.0.8",
          "requirePrivilegedSourcePort": true,
          "access": "READ_ONLY",
          "identitySquash": "NONE",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}

Escenario C: Mejora de la seguridad del sistema de archivos

Para aumentar la seguridad, le gustaría limitar los privilegios del usuario root al conectarse al sistema de archivos A. Use el squash de identidad para reasignar usuarios raíz a UID/GID 65534. En los sistemas similares a Unix, esta combinación de UID/GID está reservada para " nobody"', un usuario sin privilegios del sistema.

Ejemplo de la CLI
oci fs export update --export-id <File_System_A_export_OCID> --export-options '[{"source":"0.0.0.0/0","require-privileged-source-port":"true","access":"READ_WRITE","identitysquash":"ROOT","anonymousuid":"65534","anonymousgid":"65534"}]' 
Ejemplo de la API
PUT/<Current_API_Version>/exports/<File_System_A_export_OCID>
Host: filestorage.us-phoenix-1.oraclecloud.com
<authorization and other headers>
{
    "exportOptions": [
        {
          "source": "0.0.0.0/0",
          "requirePrivilegedSourcePort": true,
          "access": "READ_WRITE",
          "identitySquash": "ROOT",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}
Consejo

Si no desea que un sistema de archivos sea visible para cualquier cliente, puede configurar todas las propiedades de la matriz exportOptions con valores vacíos. Por ejemplo:

{
   "exportOptions": [
     {
      "source":"",
      "requirePrivilegedSourcePort":"",
      "access": "",
      "identitySquash":""}        
] 

Uso de la consola

Para definir opciones de exportación para un sistema de archivos
  1. Abra el menú de navegación y haga clic en Almacenamiento. En File Storage, haga clic en Sistemas de archivos.
  2. En la sección Ámbito de lista, seleccione un compartimento. Se muestran todos los sistemas de archivos en el compartimento seleccionado.
  3. Busque el sistema de archivos para el que desee definir las opciones de exportación, haga clic en el menú Acciones y, a continuación, en Ver detalles.
  4. En la lista Exportas, busque la exportación en la que desea definir las opciones de exportación, haga clic en el menú Acciones y, a continuación, haga clic en Ver detalles. Si no aparece ninguna exportación para el sistema de archivos, puede crear una. Consulte Para crear una exportación para un sistema de archivos para obtener más información.

    Consejo

    Para asegurarse de que selecciona la exportación correcta, compruebe lo siguiente:

  5. Haga clic en Editar opciones de exportación NFS.

  6. Realice uno o más de estos cambios:

    • Cambie una entrada de las opciones de exportación de la lista.
    • Haga clic en + Otra opción para crear una nueva entrada de opciones de exportación.
    • Haga clic en el menú Acciones de una entrada y muela hacia arriba o hacia abajo en la lista.
    • Haga clic en el menú Acciones de una entrada y haga clic en Suprimir.
  7. Cuando haya terminado, haga clic en Actualizar.

Uso de la CLI

Para obtener información sobre el uso de la CLI, consulte Interfaz de línea de comandos (CLI).

Para crear una exportación

Abra un símbolo del sistema y ejecute oci fs export create para crear una exportación para un sistema de archivos específico dentro de un conjunto de exportación especificado. En este ejemplo, se crea una exportación junto con sus opciones de exportación NFS.

Por ejemplo:

oci fs export create --export-set-id <export_set_OCID> --file-system-id <file_system_OCID> --path "</pathname>" --export-options '[{"source":"10.0.0.0/16","requireprivilegedsourceport":"true","access":"READWRITE","identitysquash":"NONE","anonymousuid":"0","anonymousgid":"0"}]' 

Importante

Nombres de las rutas de exportación

La ruta debe comenzar por una barra (/) seguida de una secuencia de cero o más elementos separados por barras. Para cualquiera de los dos recursos de exportación asociados al mismo conjunto de exportación, la secuencia de la ruta del primer recurso de exportación no puede contener la secuencia completa del elemento de ruta de la segunda secuencia de exportación. Las rutas no pueden terminar en una barra. Ningún elemento de ruta puede ser un punto (.) o dos puntos consecutivos (..). Por último, ninguna ruta puede superar los 255 bytes.

Ejemplos:

Aceptable:

/example y /path

/example1 y /example2

No aceptable:

/example y /example/path

/ y /example

/example/

/example/path/../example1

Para actualizar opciones de exportación

Abra un símbolo del sistema y ejecute oci fs export update. Para actualizar las opciones de exportación para un sistema de archivos especificado, utilice --export-options.

Por ejemplo:


oci fs export update --export-id <export_OCID> --export-options '[{"source":"<0.0.0.0/0>","require-privileged-source-port":"true","access":"READ_ONLY","identity-squash":"ROOT","anonymous-uid":"65534","anonymous-gid":"65534"}]'

WARNING: Updates to export-options will replace any existing values. Are you sure you want to continue? [y/N]: y
Consejo

Si no desea que un sistema de archivos sea visible a ningún cliente, puede configurar todas las propiedades de Opciones del cliente con valores vacíos. Por ejemplo:

oci fs export update --export-id <export_OCID> --export-options '[{"source":"","require-privileged-source-port":"true","access":"READ_ONLY","identity-squash":"ROOT","anonymous-uid":"65534","anonymous-gid":"65534"}]'
Para mostrar exportaciones

Abra un símbolo del sistema y ejecute oci fs export list para mostrar todas las exportaciones en un compartimento especificado.

Por ejemplo:

oci fs export list --compartment-id <target_compartment_id>
Para suprimir una exportación

Abra un símbolo del sistema y ejecute oci fs export delete para suprimir una exportación.

Por ejemplo:

oci fs export delete --export-id <export_OCID>
Atención

Al suprimir una exportación, ya no puede montar el sistema de archivos mediante la ruta del archivo especificada en la exportación suprimida.