Como posso usar políticas do sistema para controlar o acesso ao meu sistema de arquivos EFS?

5 minuto de leitura
0

Quero acessar meu sistema de arquivos do Amazon Elastic File System (Amazon EFS) entre contas para poder compartilhar arquivos. Como posso fazer isso usando a autorização do AWS Identity and Access Management (IAM) para clientes NFS e pontos de acesso do EFS?

Breve descrição

Você pode montar seu sistema de arquivos do Amazon EFS usando a autorização do IAM para clientes e pontos de acesso NFS com o assistente de montagem do Amazon EFS. Por padrão, o auxiliar de montagem usa o DNS para resolver o endereço IP do seu destino de montagem. Portanto, se você estiver montando a partir de outra conta ou da Amazon Virtual Private Cloud (Amazon VPC), deverá resolver o IP de destino de montagem do Amazon EFS manualmente.

Pré-requisitos

  1. As VPCs do seu cliente NFS e do seu sistema de arquivos EFS são conectadas usando uma conexão de emparelhamento da VPC ou um Gateway de trânsito de VPC. Isso permite que instâncias do Amazon Elastic Compute Cloud (Amazon EC2) da mesma conta ou de contas diferentes acessem sistemas de arquivos do EFS em uma VPC diferente.
  2. Sua perfil do IAM (perfil de instância ou qualquer outra função) tem acesso de console ou de leitura nos recursos de cliente do Amazon EFS e NFS.
  3. O cliente do Amazon EFS e o pacote botocore estão instalados no cliente do NFS.

Resolução

Observação: se você receber erros ao executar comandos da AWS CLI, certifique-se de estar usando a versão mais recente da AWS Command Line Interface (AWS CLI).

Neste exemplo, o sistema de arquivos EFS está presente na conta A, e o cliente NFS está presente na conta B.    

1.    Para acessar e montar o sistema de arquivos EFS entre contas, adicione uma declaração de política em uma política do IAM semelhante a esta:

{
            "Sid": "EfsPermissions",
            "Effect": "Allow",
            "Action": [
                "elasticfilesystem:ClientMount",
                "elasticfilesystem:ClientWrite",
                "elasticfilesystem:ClientRootAccess"
            ],
            "Resource": "arn:aws:elasticfilesystem:region:account-id:file-system/file-system-id"
        }

Essa declaração permite que o perfil do IAM tenha acesso de montagem, gravação e raiz no sistema de arquivos EFS. Se seu cliente NFS for uma instância do EC2, anexe o perfil do IAM à instância.

2.    Ou você pode assumir o perfil usando a AWS CLI. Observe que a AWS CLI não pode resolver o DNS de um sistema de arquivos EFS presente em outra VPC. Então, primeiro determine o IP de destino de montagem correto para seu cliente. Em seguida, configure o cliente para montar o sistema de arquivos EFS usando esse IP.

Para garantir a alta disponibilidade, sempre use o endereço IP do destino de montagem na mesma zona de disponibilidade (AZ) do seu cliente NFS. Os mapeamentos de nomes de AZ podem diferir entre as contas. Como você está montando um sistema de arquivos EFS em outra conta, o cliente NFS e o destino de montagem devem estar no mesmo ID de AZ.

Para determinar a AZ da sua instância do EC2, chame a API DescribeAvailabilityZone usando um destes métodos:

  • Faça login no console do Amazon EC2 e escolha Instâncias. Escolha EC2-Instance-ID e depois Rede. Em Detalhes da rede, você pode encontrar a zona de disponibilidade.

-ou-

  • Execute um comando semelhante a esse a partir da entidade IAM que tem permissões de leitura suficientes para o Amazon EC2 e obtenha uma saída semelhante:
$ aws ec2 describe-availability-zones --zone-name `curl -s http://169.254.169.254/latest/meta-data/placement/availability-zone`
{
    "AvailabilityZones": [
        {
            "State": "available",
            "ZoneName": "us-east-2b",
            "Messages": [],
            "ZoneId": "use2-az2",
            "RegionName": "us-east-2"
        }
    ]
}

3.    Para determinar o IP de destino de montagem para a AZ local, use toda a API DescribeMountTargets usando um destes métodos:

  • Faça login no console do Amazon EFS e escolha Sistemas de arquivos. Escolha EFS-File-System-ID e, em Rede, anote o endereço IP da sua zona de disponibilidade.

-ou-

  • Execute um comando semelhante a esse a partir da entidade IAM que tem permissões de leitura suficientes para o Amazon EC2 e obtenha uma saída semelhante:
$ aws efs describe-mount-targets --file-system-id fs-cee4feb7
{
    "MountTargets": [
        {
            "MountTargetId": "fsmt-a9c3a1d0",
            "AvailabilityZoneId": "use2-az2",
            "NetworkInterfaceId": "eni-048c09a306023eeec",
            "AvailabilityZoneName": "us-east-2b",
            "FileSystemId": "fs-cee4feb7",
            "LifeCycleState": "available",
            "SubnetId": "subnet-06eb0da37ee82a64f",
            "OwnerId": "958322738406",
            "IpAddress": "10.0.2.153"
        },
...
        {
            "MountTargetId": "fsmt-b7c3a1ce",
            "AvailabilityZoneId": "use2-az3",
            "NetworkInterfaceId": "eni-0edb579d21ed39261",
            "AvailabilityZoneName": "us-east-2c",
            "FileSystemId": "fs-cee4feb7",
            "LifeCycleState": "available",
            "SubnetId": "subnet-0ee85556822c441af",
            "OwnerId": "958322738406",
            "IpAddress": "10.0.3.107"
        }
    ]
}

4.    Na saída que obtida, anote o endereço IP que corresponde ao destino de montagem na AZ da instância do EC2.

5.    Use o endereço IP obtido e adicione a entrada hosts no arquivo /etc/hosts no cliente NFS. O formato do nome DNS é mount-target-IP-Address file-system-ID.efs.region.amazonaws.com.

Veja este exemplo de comando:

$ echo "10.0.2.153 fs-cee4feb7.efs.us-east-2.amazonaws.com" | sudo tee -a /etc/hosts

6.    Monte o sistema de arquivos EFS usando o auxiliar de montagem.

Observação: em um cenário entre contas, você não pode usar o comando NFS usual. Portanto, o botocore e o cliente Amazon EFS são necessários.

Depois de seguir essas etapas, você poderá montar o sistema de arquivos do EFS e começar a usá-lo. Se ocorrer algum erro, consulte o guia de solução de problemas.


Informações relacionadas

Criar políticas de sistema de arquivos

AWS OFICIAL
AWS OFICIALAtualizada há um ano