Trabalhando com Opções de Exportação e Exportações NFS

Aprenda os recursos básicos de exportações e opções de exportação NFS e como melhorar a segurança e controlar o acesso do cliente aos sistemas de arquivos do serviço File Storage.

Visão Geral

As opções de exportação NFS permitem criar um controle de acesso mais granular do que o possível, usando apenas regras da lista de segurança para limitar o acesso à VCN. Você pode usar as opções de exportação NFS para especificar níveis de acesso para endereços IP ou blocos CIDR que se conectam a sistemas de arquivos por meio de exportações em um ponto de acesso NFS. O acesso pode ser restrito para que o sistema de arquivos de cada cliente fique inacessível e invisível para o outro, fornecendo melhores controles de segurança em ambientes multitenant.

Usando os controles de acesso da opção de exportação NFS, é possível limitar a capacidade dos clientes de conexão com o sistema de arquivos e exibir ou gravar dados. Por exemplo, se você quiser permitir que os clientes consumam, mas não atualizem recursos no sistema de arquivos, poderá definir o acesso como Somente para Leitura. Você também pode reduzir o acesso raiz do cliente aos sistemas de arquivos e mapear IDs de Usuário (UIDs) e IDs de Grupo (GIDs) especificados para um UID/GID anônimo de sua escolha. Para obter mais informações sobre como as opções de exportação NFS funcionam com outras camadas de segurança, consulte Sobre a Segurança do Armazenamento de Arquivos.

Dica

Assista a um vídeo sobre como trabalhar com opções de exportação NFS no Serviço File Storage.

Política Obrigatória do Serviço IAM

Para usar o Oracle Cloud Infrastructure, você deve receber de um administrador o acesso de segurança em uma política . Esse acesso é necessário, quer você esteja usando a Console ou a API REST com um SDK, uma CLI ou outra ferramenta. Se você receber uma mensagem de que não tem permissão ou que não está autorizado, verifique com o administrador qual tipo de acesso você tem e em qual compartimento vai trabalhar.

Para administradores: A política em Permitir que os usuários criem, gerenciem e excluam sistemas de arquivos permite que os usuários gerenciem opções de exportação NFS.

Se você não estiver familiarizado com as políticas, consulte Conceitos Básicos de Políticas e Políticas Comuns.

Exportações

As exportações controlam como os clientes NFS acessam os sistemas de arquivos quando se conectam a um ponto de acesso NFS. Os sistemas de arquivos são exportados (disponibilizados) por meio de pontos de acesso NFS. Cada ponto de acesso NFS mantém um conjunto de exportação que contém uma ou várias exportações. Um sistema de arquivos pode ser exportado por meio de um ou mais pontos de acesso NFS. Um sistema de arquivos deve ter pelo menos uma exportação em um ponto de acesso NFS para que as instâncias montem o sistema de arquivos. As informações usadas por uma exportação incluem o OCID do sistema de arquivos, o OCID do ponto de acesso NFS, o OCID do conjunto de exportação, o caminho de exportação e as opções de exportação do cliente. Geralmente, uma exportação é criada em um ponto de acesso NFS quando o sistema de arquivos é criado. Posteriormente, você pode criar exportações adicionais para um sistema de arquivos em qualquer ponto de acesso NFS que resida no mesmo domínio de diponibilidade do sistema de arquivos.

Você pode executar as seguintes tarefas de gerenciamento de exportação:

Opções de Exportação NFS

As opções de exportação NFS são um conjunto de parâmetros dentro da exportação que especificam o nível de acesso concedido aos clientes NFS quando se conectam a um ponto de acesso NFS. Uma entrada de opções de exportação NFS dentro de uma exportação define o acesso para um único endereço IP ou faixa de blocos CIDR. Você pode ter até 100 opções por exportação.

Cada endereço IP ou bloco CIDR separado do cliente ao qual você deseja definir o acesso precisa de uma entrada de opções de exportação separada na exportação. Por exemplo, para definir opções dos endereços IP de cliente NFS 10.0.0.6, 10.0.08 e 10.0.0.10, você precisa criar três entradas separadas, uma para cada endereço IP.

O serviço File Storage considera a ordem listada de cada entrada de opções de exportação para a exportação. Durante uma solicitação NFS feita por um cliente, o serviço File Storage aplica o primeiro conjunto de opções que correspondem ao endereço IP de Origem do cliente. Somente o primeiro conjunto é aplicado; o restante é ignorado.

Por exemplo, considere as duas entradas de opções de exportação a seguir especificando o acesso para uma exportação:

Entrada 1: Origem: 10.0.0.0/16, Acesso: Somente para Leitura

Entrada 2: Origem: 10.0.0.8, Acesso: Leitura/Gravação

Nesse caso, os clientes que se conectam à exportação do endereço IP 10.0.0.8 têm acesso somente para leitura. O endereço IP de Origem da solicitação está contido no bloco CIDR especificado na primeira entrada, e o serviço File Storage aplica as opções na primeira correspondência.

Importante

Os sistemas de arquivos podem ser associados a uma ou mais exportações, contidas em um ou mais pontos de acesso NFS. Se o endereço IP de fonte do cliente não corresponder a nenhuma entrada na lista para uma única exportação, essa exportação não ficará visível para o cliente. No entanto, o sistema de arquivos pode ser acessado por meio de outras exportações no mesmo ou em outros pontos de acesso NFS. Para negar completamente o acesso do cliente a um sistema de arquivos, certifique-se de que o endereço IP de origem do cliente ou o bloco CIDR não esteja incluído em nenhuma exportação para nenhum destino de montagem associado ao sistema de arquivos.

As seguintes opções podem ser definidas para controlar o acesso de exportação:

  • Origem: O endereço IP ou bloco CIDR de um cliente NFS que está se conectando.
  • Portas: Essa definição determina se os clientes NFS especificados na Origem são necessários para conexão de uma porta de origem privilegiada. Portas privilegiadas são qualquer porta, incluindo 1-1023. Nos sistemas do tipo UNIX, apenas o usuário raiz pode abrir portas privilegiadas. A definição desse valor com Privileged não permite solicitações de portas não privilegiadas. O padrão para essa definição varia, dependendo de como a exportação é criada.

    Criar uma exportação na Console usando as seleções padrão define Portas como Qualquer, a menos que você selecione Usar Opções de Exportação Segura.

    Criar uma exportação usando a API ou a CLI sem um array ClientOption explícito define o atributo requirePrivilegedSourcePort da opção do cliente como false. Quando você cria um array ClientOption explicitamente, o atributo requirePrivilegedSourcePort assume o padrão true.

Importante

Quando Portas estiver definido como Privilegiadas, você também deverá seguir estas etapas de configuração adicionais: 

  1. Ao montar o sistema de arquivos de um sistema do tipo UNIX, inclua a opção resvport em um comando mount ao montar. Por exemplo: 

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

    Para obter mais informações, consulte Montando Sistemas de Arquivos de Instâncias do Tipo UNIX.

  2. Ao montar o sistema de arquivos com base em um sistema Windows, verifique se o valor da chave do registro UseReserverdPort está definido como 1.

    Para obter mais informações, consulte Montando Sistemas de Arquivos com Base em Instâncias do Windows.

  • Acesso: Esta definição especifica o acesso do cliente NFS de Origem.
    • Leitura/Gravação é o padrão.
    • somente para leitura.
  • Acesso Anônimo: Esta definição especifica se o acesso anônimo para autenticação Kerberos deve ser ativado nos casos em que o ponto de acesso NFS não pode localizar um usuário no servidor LDAP. Se Acesso Anônimo for Não Permitido e o usuário não for encontrado no diretório LDAP ou a tentativa de pesquisa retornar um erro LDAP, a operação falhará. Se Acesso Anônimo for Permitido e o usuário não for encontrado no diretório LDAP, a operação usará os valores de UID de Squash e GID de Squash da exportação. Para obter mais informações, consulte Usando a Autenticação Kerberos.
    Observação

    Se a exportação não usar a autenticação Kerberos, escolha Não Permitido.
  • Opções de Autenticação Permitidas: Esta definição especifica os métodos de autenticação permitidos pelo cliente NFS.
    • SYS: Autenticação UNIX v3 NFS. Se você não especificar um valor de autenticação permitido ao criar a opção de exportação, um valor padrão de SYS será usado.
    • KRB5: Autenticação NFS v3 Kerberos.
    • KRB5I: Autenticação e integridade de dados do NFS v3 Kerberos.
    • KRB5P: Autenticação NFS v3 Kerberos, integridade de dados e privacidade de dados (criptografia em trânsito).

    Você pode selecionar vários métodos de autenticação. Por exemplo, a definição de Opções de Autenticação Permitidas como KRB5 e KRB5I permitiria Kerberos e Kerberos básicos com integridade de dados, mas não permitiria a autenticação SYS e KRB5P.

    Cuidado

    Uma seleção vazia de Opções de Autenticação Permitidas remove todos os tipos de autenticação e pode resultar em perda de acesso. Clientes que requerem autenticação SYS perderão acesso, se a opção SYS não estiver presente.
    Importante

    Os comandos de montagem usados para montar o sistema de arquivos diferem dependendo de quais métodos de autenticação são permitidos nas opções de exportação. Se os clientes NFS se conectarem por meio de um ponto de acesso NFS ativado para Kerberos, o comando de montagem deverá incluir a opção sec. Por exemplo: 

    sudo mount -o sec=krb5 10.x.x.x:/fs-export-path /mnt/yourmountpoint
    sudo mount -o sec=krb5i 10.x.x.x:/fs-export-path /mnt/yourmountpoint
    sudo mount -o sec=krb5p 10.x.x.x:/fs-export-path /mnt/yourmountpoint

    Para clientes NFS que se conectam com AUTH_SYS na mesma exportação, o comando de montagem incluiria sec=sys. Por exemplo:

    sudo mount -o sec=sys 10.x.x.x:/fs-export-path /mnt/yourmountpoint

    Se a exportação estiver usando AUTH_SYS sozinho, a opção sec será opcional. As amostras de comandos de montagem fornecidas pela Console se baseiam nas opções de exportação selecionadas.

    Observação

    Se um cliente NFS usar uma exportação que tenha vários tipos de autenticação e o sistema de arquivos for montado sem especificar sec=<auth_type>, o cliente deverá selecionar automaticamente o tipo de autenticação mais forte suportado pela exportação.
  • Squash: Esta configuração determina se os clientes de origem que acessam o sistema de arquivos têm o ID de Usuário (UID) e o ID de Grupo (GID) remapeados para UID de Squash e GID de Squash.
    • Nenhum: Nenhum usuário é remapeado. Esse é o valor padrão.
    • Raiz: Somente a combinação 0/0 de UID/GID do usuário root é remapeada.
    • Todos: Todos os usuários e grupos são remapeados.
  • UID de Squash: Essa definição é usada junto com as opções Squash e Acesso Anônimo. Ao mapear usuários, você pode usar essa definição para alterar o valor padrão de 65534 para qualquer outro ID de usuário.
  • GID de Quantidade: Essa definição é usada junto com as opções Squash e Acesso Anônimo. Ao mapear grupos, você pode usar essa definição para alterar o valor padrão de 65534 para qualquer outro ID de grupo.

Cenários Típicos de Controle de Acesso

Quando você cria um sistema de arquivos e exporta, as opções de exportação NFS desse sistema de arquivos são definidas como os padrões a seguir, o que permite acesso total a todas as conexões de origem do cliente NFS. Esses padrões deverão ser alterados se você quiser restringir o acesso:

  • Origem: 0.0.0.0/0 (Tudo)
  • Require Privileged Source Port: Qualquer
  • Opções de Autenticação Permitidas: SYS
  • Acesso: Leitura/Gravação
  • Squash: Nenhum

Controlar Acesso Baseado no Host

Forneça um ambiente hospedado gerenciado para dois clientes. Os clientes compartilham um ponto de acesso NFS, mas cada um tem seu próprio sistema de arquivos e não pode acessar os dados um do outro. Por exemplo:

  • O Cliente A, que é designado ao bloco CIDR 10.0.0.0/24, requer acesso de Leitura/Gravação ao sistema de arquivos A, mas não ao sistema de arquivos B.
  • O cliente B, que está designado ao bloco CIDR 10.1.1.0/24, requer acesso de Leitura/Gravação ao sistema de arquivos B, mas não ao sistema de arquivos A.
  • O cliente C, que é designado ao bloco CIDR 10.2.2.0/24, não tem acesso de qualquer tipo ao sistema de arquivos A ou ao sistema de arquivos B.
  • Ambos os sistemas de arquivos A e B estão associados a um único ponto de acesso NFS, MT1. Cada sistema de arquivos tem uma exportação contida no conjunto de exportação de MT1.

Como o Cliente A e o Cliente B acessam o ponto de acesso NFS de diferentes blocos CIDR, você pode definir as opções do cliente para ambas as exportações do sistema de arquivos para permitir o acesso a apenas um único bloco CIDR. O Cliente C tem o acesso negado por não incluir seu endereço IP ou bloco CIDR nas opções de exportação NFS para qualquer exportação de qualquer sistema de arquivos.

  • Defina as opções de exportação do Sistema de Arquivos A para permitir acesso de Leitura/Gravação somente ao Cliente A, que é designado ao bloco CIDR 10.0.0.0/24. O Cliente B e o Cliente C não estão incluídos nesse bloco CIDR e não podem acessar o sistema de arquivos.

    Opções de exportação do Sistema de Arquivos A:

    • Origem: 10.0.0.0/24
    • Portas: Privilegiadas
    • Acesso: Leitura/Gravação
    • Squash: Nenhum

    Defina as opções de exportação do Sistema de Arquivos B para permitir acesso de Leitura/Gravação somente ao Cliente B, que é designado ao bloco CIDR 10.1.1.0/24. O Cliente A e o Cliente C não estão incluídos nesse bloco CIDR e não podem acessar o sistema de arquivos.

    Opções de exportação do Sistema de Arquivos B:

    • Origem: 10.1.1.0/24
    • Portas: Privilegiadas
    • Acesso: Leitura/Gravação
    • Squash: Nenhum
  • Defina as opções de exportação do Sistema de Arquivos A para permitir acesso Read_Write somente ao Cliente A, que é designado ao bloco CIDR 10.0.0.0/24. O Cliente B e o Cliente C não estão incluídos nesse bloco CIDR e não podem acessar o sistema de arquivos.

    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"}]'

    Defina as opções de exportação do Sistema de Arquivos B para permitir acesso Read_Write somente ao Cliente B, que é designado ao bloco CIDR 10.1.1.0/24. O Cliente A e o Cliente C não estão incluídos nesse bloco CIDR e não podem acessar o sistema de arquivos.

    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"}]'

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Comando da CLI.

  • Defina as opções de exportação do Sistema de Arquivos A para permitir acesso READ_WRITE somente ao Cliente A, que é designado ao bloco CIDR 10.0.0/24. O Cliente B e o Cliente C não estão incluídos nesse bloco CIDR e não podem acessar o sistema de arquivos.

    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
            }
        ]
    }

    Defina as opções de exportação do Sistema de Arquivos B para permitir acesso READ_WRITE somente ao Cliente B, que é designado ao bloco CIDR 10.1.1.0/24. O Cliente A e o Cliente C não estão incluídos nesse bloco CIDR e não podem acessar o sistema de arquivos.

    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
            }
        ]
    }

Limitar a Capacidade de Gravar Dados

Forneça dados aos clientes para consumo, mas não permita que eles atualizem os dados.

Por exemplo, você gostaria de publicar um conjunto de recursos no sistema de arquivos A para que um aplicativo consuma, mas não altere. O aplicativo se conecta do endereço IP 10.0.0.8.

  • Defina o endereço IP de origem 10.0.0.8 como Somente para Leitura na exportação para o Sistema de Arquivos A. Opções de exportação do Sistema de Arquivos A:

    • Origem: 10.0.0.8
    • Portas: Privilegiadas
    • Acesso: Somente para Leitura
    • Squash: Nenhum
  • Defina o endereço IP de origem 10.0.0.8 como READ_ONLY na exportação do Sistema de Arquivos 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"}]'
  • Defina o endereço IP de origem 10.0.0.8 como READ_ONLY na exportação do Sistema de Arquivos 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
            }
        ]
    }

Melhorar a Segurança do Sistema de Arquivos

Para aumentar a segurança, você gostaria de limitar os privilégios do usuário raiz ao se conectar ao Sistema de Arquivos A. Use o Squash de Identidade para remapear os usuários raiz para o UID/GID 65534. Nos sistemas do tipo Unix, essa combinação UID/GID é reservada para 'nobody', um usuário sem privilégios de sistema.

  • Opções de exportação do Sistema de Arquivos A:

    • Origem: 0.0.0.0
    • Portas: Privilegiadas
    • Acesso: Leitura/Gravação
    • Squash: Raiz
    • UID: 65534
    • GID: 65534
  • 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"}]' 

    Para obter uma lista completa de parâmetros e valores para comandos da CLI, consulte a Referência de Comando da CLI.

  • 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
            }
        ]
    }
    Dica

    Se não quiser que um sistema de arquivos fique visível para os clientes, você poderá definir todas as propriedades no array exportOptions como valores vazios. Por exemplo,

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

Usar o Kerberos para Autenticação

Para aumentar a segurança, você gostaria de exigir a autenticação do Kerberos com integridade de dados e privacidade de dados (criptografia em trânsito) ao estabelecer conexão com o Sistema de Arquivos A pelo bloco CIDR 10.0.0.0/24. Use Acesso Anônimo para agrupar usuários que não foram encontrados com a pesquisa LDAP para prosseguir com o UID e o GID especificados e sem grupos secundários.

Ative a autenticação Kerberos para o Sistema de Arquivos A e defina as opções de exportação.

Exemplo de Console

Opções de exportação do Sistema de Arquivos A:

  • Origem: 10.0.0.0/24
  • Portas: Qualquer uma
  • Acesso: Leitura/Gravação
  • Squash: Nenhum
  • Acesso Anônimo: Verdadeiro
  • Opções de Autenticação Permitidas: KRB5P
  • UID da Barra: 65534
  • GID da Barra: 65534
Observação

A exportação também deve ter a opção Usar LDAP para Lista de Grupos ativada.
Exemplo de CLI
oci fs export update --export-id <File_System_A_export_OCID> --export-options '[{"source":"10.0.0.0/24","require-privileged-source-port":"false","access":"READ_WRITE","allowedAuth":"KRB5P","isAnonymousAccessAllowed":"true","identitysquash":"NONE","anonymousuid":"65534","anonymousgid":"65534"}]' 
Observação

A exportação também deve ter --is-idmap-groups-for-sys-auth definido como true.
Exemplo de API
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": false,
          "access": "READ_WRITE",
          "allowedAuth": "KRB5P",
          "isAnonymousAccessAllowed": true,
          "identitySquash": "NONE",
          "anonymousUid": 65534,
          "anonymousGid": 65534
        }
    ]
}
Observação

A exportação também deve ter isIdmapGroupsForSysAuth definido como true.