Comment puis-je utiliser des politiques du système afin de contrôler l'accès à mon système de fichiers EFS ?

Dernière mise à jour : 17-11-2022

Je souhaite accéder à mon système de fichiers Amazon Elastic File System (Amazon EFS) entre compte, afin de me permettre de partager des fichiers. Comment procéder en utilisant l'autorisation AWS Identity and Access Management (IAM) pour les clients NFS et les points d'accès EFS ?

Brève description

Il est possible de monter votre système de fichiers Amazon EFS en utilisant une autorisation IAM pour les clients NFS et des points d'accès en utilisant l'assistant de montage Amazon EFS. Par défaut, l'assistant de montage utilise le DNS en vue de résoudre l'adresse IP de votre cible de montage. Par conséquent, si vous effectuez un montage à partir d'un autre compte ou d'Amazon Virtual Private Cloud (Amazon VPC), vous devez résoudre manuellement l'adresse IP cible de montage Amazon EFS.

Conditions préalables

  1. Les VPC de votre client NFS et de votre système de fichiers EFS sont connectés soit via une connexion d'appairage de VPC, soit via une passerelle de transit de VPC. Cette connexion permet aux instances Amazon Elastic Compute Cloud (Amazon EC2) provenant de comptes identiques ou différents d'accéder aux systèmes de fichiers EFS d'un VPC différent.

  2. Votre rôle IAM (rôle d'instance ou tout autre rôle) dispose d'un accès depuis la console ou en lecture sur les ressources clients Amazon EFS et NFS.

  3. Le client Amazon EFS et le package botocore sont installés dans le client NFS.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution des commandes AWS CLI, assurez-vous d'utiliser la version la plus récente de l'Interface de la ligne de commande AWS (AWS CLI).

Dans cet exemple, le système de fichiers EFS est présent dans le compte A tandis que le client NFS est présent dans le compte B.    

1.    Afin d'accéder au système de fichiers EFS multi-comptes et de le monter, ajoutez une déclaration de politique dans la politique IAM similaire à celle-ci :

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

Cette déclaration autorise le rôle IAM d'avoir un accès de montage, d'écriture et de racine sur le système de fichiers EFS. Si votre client NFS est une instance EC2, associez le rôle IAM à cette instance.

2.    Vous pouvez également assumer le rôle à l'aide de l'interface de la ligne de commande AWS (AWS CLI). Il convient de noter qu'il est impossible pour l'AWS CLI de résoudre le DNS d'un système de fichiers EFS présent dans un autre VPC. Ainsi, commencez par déterminer l'adresse IP cible de montage adaptée à votre client. Configurez ensuite le client pour lui permettre de monter le système de fichiers EFS à l'aide de cette adresse IP.

Afin de garantir une haute disponibilité, il est recommandé de toujours utiliser l'adresse IP de la cible de montage dans la même zone de disponibilité (AZ) que votre client NFS. Les mappages de noms de zones de disponibilité peuvent différer d'un compte à l'autre. Étant donné que vous montez un système de fichiers EFS dans un autre compte, le client NFS et la cible de montage doivent se trouver dans le même ID de zone de disponibilité.

Pour déterminer la zone de disponibilité de votre instance EC2, appelez l'API DescribeAvailabilityZone à l'aide d'une des méthodes suivantes :

  • Ouvrez la console Amazon EC2, ensuite, choisissez Instances. Choisissez EC2-Instance-ID, ensuite, Networking. Dans la section Détails du réseau, vous trouverez la zone de disponibilité.

    -ou-

  • Exécutez une commande similaire à celle-ci à partir de l'entité IAM disposant d'autorisations de lecture suffisantes pour Amazon EC2 et obtenez un résultat similaire :

$ 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.    En vue de déterminer l'adresse IP cible de montage pour la zone de disponibilité locale, pour toutes les API DescribeMountTargets, en utilisant l'une des méthodes suivantes :

  • Connectez-vous à la console Amazon EFS et choisissez Systèmes de fichiers. Choisissez EFS-File-System-ID, ensuite, sous Réseau, notez l'adresse IP de votre zone de disponibilité.

    -ou-

  • Exécutez une commande similaire à celle-ci à partir de l'entité IAM disposant d'autorisations de lecture suffisantes pour Amazon EC2 et obtenez un résultat similaire :

$ 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.    À partir du résultat obtenu, notez l'adresse IP correspondant à la cible de montage dans la zone de disponibilité de l'instance EC2.

5.    Utilisez l'adresse IP obtenue et ajoutez l'entrée hôte dans le fichier /etc/hôte du client NFS. Le format du nom DNS est Mount-Target-IP-Address File-System-ID.efs.region.amazonaws.com.

Consultez cet exemple de commande :

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

6.    À l'aide de l'assistant de montage, montez le système de fichiers EFS.

Remarque : dans un scénario multi-comptes, impossible d'utiliser la commande NFS habituelle. Le botocore ainsi que le client Amazon EFS sont donc nécessaires.

Après le suivi de ces étapes, vous pouvez monter le système de fichiers EFS et commencer à l'utiliser. Si vous rencontrez des erreurs, consultez le guide de dépannage.


Cet article vous a-t-il été utile ?


Vous avez besoin d'aide ?