Comment puis-je accorder l'accès au répertoire à des instances EC2 spécifiques à l'aide de points d'accès IAM et EFS ?

Lecture de 9 minute(s)
0

Je souhaite utiliser la Gestion des identités et des accès AWS (IAM) et Amazon Elastic File System (Amazon EFS) pour accorder l'accès au répertoire à des instances Amazon Elastic Compute Cloud (Amazon EC2) spécifiques.

Brève description

Utilisez le même système de fichiers pour plusieurs instances et accordez l'accès à des répertoires spécifiques avec les points d'accès Amazon EFS. Pour utiliser les points d'accès et IAM en vue de contrôler l'accès à vos répertoires, vous devez :

1.    Créer des points d'accès Amazon EFS pour votre système de fichiers.

2.    Accorder des autorisations ClientMount et ClientWrite afin de créer des politiques IAM pour chaque instance. Créer ensuite des rôles pour les politiques.

3.    Créer une politique Amazon EFS pour votre système de fichiers.

4.    Tester votre configuration.

Solution

Prérequis

1.    Vous devez disposer de deux instances EC2 dans le même VPC utilisé pour votre système de fichiers, ou assurez-vous qu'elles peuvent toutes deux atteindre votre système de fichiers. Il est recommandé d'utiliser la dernière AMI Amazon Linux 2. Le groupe de sécurité attaché aux instances doit autoriser l'accès sortant sur le port 2049 vers votre Amazon EFS.

2.    Avant de monter votre système de fichiers, ajoutez une règle au groupe de sécurité de la cible de montage pour autoriser l'accès NFS entrant depuis le groupe de sécurité Amazon EC2. Reportez-vous à l'Utilisation des groupes de sécurité VPC pour les instances Amazon EC2 et les cibles de montage pour en savoir plus.
Remarque : il est recommandé d'utiliser le nom DNS du système de fichiers comme option de montage. Le nom DNS du système de fichiers est automatiquement résolu à l’adresse IP de la cible de montage dans la zone de disponibilité de l'instance Amazon EC2 qui se connecte. Récupérez le nom DNS du système de fichiers dans la console. Ou, si vous disposez de l'ID du système de fichiers, construisez le nom DNS du système de fichiers en suivant cet exemple :

file-system-id.efs.aws-region.amazonaws.com

3.    Pour tester la connexion depuis votre système client sur lequel vous effectuez le montage vers le FQDN d'EFS ou le nom abrégé, effectuez l'une des actions suivantes :

  • Exécutez telnet
  • Montez l'EFS en tant que type NFS à l'aide du FQDN d'EFS où les amazon-efs-utils ne sont pas obligatoires.

Cette commande monte votre système de fichiers dans les deux instances EC2 :

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport file-system-id.efs.ap-southeast-2.amazonaws.com:/ /efs

Remarque : remplacez l'exemple de système de fichiers par votre système de fichiers.

Si vous effectuez un test avec un montage, exécutez la commande umount sur votre système de fichiers et sur toutes vos instances EC2 une fois le montage terminé. Si umount n'est pas exécuté, des erreurs d'E/S se produiront en cas d'erreur lors de l'application ultérieure de la politique EFS :

sudo umount /efs

4.    L'utilisation de points d'accès et de stratégies IAM sur Amazon EFS nécessite l'outil amazon-efs-utils. Exécutez la commande suivante pour installer amazon-efs-utils :

sudo yum install -y amazon-efs-utils

Si vous exécutez une distribution autre qu'Amazon Linux 2 et que vous avez besoin d'instructions d'installation pour amazon-efs-utils, consultez Utiliser les outils amazon-efs-utils. Vérifiez également le code source auprès d'un tiers tel que GitHub.

Créer des points d'accès Amazon EFS

Important : cette solution suppose que vous avez déjà créé un Amazon EFS sans points d'accès ni politique IAM. Assurez-vous que le groupe de sécurité attaché à votre système de fichiers autorise l'accès entrant sur le port 2049 pour les instances EC2 en cours d'utilisation.

Remarque : remplacez les exemples de noms (APP_team et DB_team) par les noms de vos ressources.

1.    Ouvrez la console Amazon EFS.

2.    Choisissez File systems (Systèmes de fichiers), sélectionnez le système de fichiers pour lequel vous souhaitez gérer l'accès, puis choisissez View details (Afficher les informations).

3.    Choisissez Access points (Points d'accès), puis Create access point (Créer un point d'accès).

4.    Créez le premier point d'accès en saisissant un Name (Nom) et un Root directory path (Chemin de répertoire racine). Par exemple :

Nom : app_team_ap

Chemin de répertoire racine : /App_team

Remarque : Amazon EFS crée un répertoire racine de point d'accès uniquement si OwnUID, OwnGid et les autorisations sont précisés pour le répertoire. Si vous ne fournissez pas ces informations, Amazon EFS ne crée pas le répertoire racine. Si le répertoire racine n'existe pas, les tentatives de montage à l'aide du point d'accès échoueront et un message d'erreur de type « 'b'mount.nfs4 : accès refusé par le serveur lors du montage de 127.0.0.1 :/ » apparaîtra.

Si vous ne précisez pas la propriété et les autorisations du répertoire racine de point d'accès, Amazon EFS ne crée pas le répertoire racine. Toutes les tentatives de montage du point d'accès échoueront et l'erreur « accès refusé » s'affichera. Reportez-vous à Appliquer le point d'accès au répertoire racine dans EFS.

5.    Choisissez Create access point (Créer un point d'accès).

6.    Répétez les étapes 2 à 4 pour créer un deuxième point d'accès. Par exemple :

Nom : DB_team_AP

Chemin de répertoire racine : /DB_team

7.    Choisissez Create access point (Créer un point d'accès).

8.    Notez les ID de point d'accès. Un ID de point d'accès apparaît sous cette forme :

ID de point d'accès : fsap-0093c87d798ae5ccb

Remarque : vous pouvez également utiliser un point d'accès pour appliquer les identités POSIX (ID utilisateur, ID groupe) pour toutes les demandes de système de fichiers effectuées via le point d'accès. Pour activer cette fonctionnalité, spécifiez l'ID d'utilisateur et de groupe lorsque vous créez le point d'accès. Pour plus d'informations, consultez Application d'une identité utilisateur à l'aide d'un point d'accès.

Créer des stratégies et des rôles IAM pour vos instances

1.    Ouvrez la console IAM.

2.    Créez des politiques IAM pour chaque instance. Les politiques suivantes accordent les autorisations ClientMount et ClientWrite. Vous pouvez utiliser ces politiques comme référence. Remplacez d'abord la valeur affichée dans Resource (Ressource) pour ces exemples par l'ARN de votre ressource. Remplacez ensuite l'ID du système de fichiers et l'ID du point d'accès par les valeurs correctes. Par exemple :

App_team_policy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticfilesystem:ClientMount",
        "elasticfilesystem:ClientWrite"
      ],
      "Resource": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:file-system/fs-8ce001b4",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "elasticfilesystem:AccessPointArn": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:access-point/fsap-0093c87d798ae5ccb"
        }
      }
    }
  ]
}

DB_team_policy

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "elasticfilesystem:ClientMount",
        "elasticfilesystem:ClientWrite"
      ],
      "Resource": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:file-system/fs-8ce001b4",
      "Condition": {
        "ForAnyValue:StringEquals": {
          "elasticfilesystem:AccessPointArn": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:access-point/fsap-054969ebbe52a6121"
        }
      }
    }
  ]
}

3.    Cliquez sur Roles (Rôles), puis sur Create Role (Créer un rôle).

4.    Choisissez EC2 comme cas d'utilisation, puis Next: Permissions (Étape suivante : Autorisations).

5.    Sélectionnez l'une des politiques que vous venez de créer, puis choisissez Next: Tags (Suivant : Identifications).

6.    Choisissez Étape suivante : Vérification.

7.    Renseignez le champ Nom du rôle, puis sélectionnez Créer un rôle. Par exemple :

Nom du rôle : App_team_role

Stratégie : App_team_policy

8.    Répétez les étapes 3 à 7 pour la deuxième stratégie. Par exemple :

Role name: DB_team_role

Stratégie : DB_team_policy

Créer une stratégie EFS

1.    Ouvrez la console Amazon EFS.

2.    Choisissez File systems (Systèmes de fichiers), sélectionnez votre système de fichiers, puis choisissez View details (Afficher les informations).

3.    Choisissez File system policy (Politique de système de fichiers), puis Edit (Modifier) dans la section Policy (Politique).

4.    Ajoutez la politique suivante pour autoriser ClientMount et ClientWrite pour les points d'accès que vous avez créés. Assurez-vous de mettre à jour Resource (Ressource) avec l'ARN de votre ressource et de remplacer l'ID du système de fichiers et l'ID du point d'accès par les valeurs correctes.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "elasticfilesystem:ClientMount",
        "elasticfilesystem:ClientWrite"
      ],
      "Resource": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:file-system/fs-8ce001b4",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/DBA_team_role",
          "elasticfilesystem:AccessPointArn": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:access-point/fsap-054969ebbe52a6121"
        }
      }
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "elasticfilesystem:ClientMount",
        "elasticfilesystem:ClientWrite"
      ],
      "Resource": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:file-system/fs-8ce001b4",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalArn": "arn:aws:iam::123456789012:role/App_team_role",
          "elasticfilesystem:AccessPointArn": "arn:aws:elasticfilesystem:ap-southeast-2:123456789012:access-point/fsap-0093c87d798ae5ccb"
        }
      }
    }
  ]
}

5.    Sélectionnez Save (Enregistrer). Votre système de fichiers est prêt à être utilisé.

Tester votre configuration

1.    Accédez à votre instance Amazon EC2 (DB_team dans cet exemple) sans y attacher aucun rôle IAM.

2.    Tentez de monter votre système de fichiers à l'aide de la commande mount en tant que type NFS. Si vous disposez d'une stratégie d'accès basée sur les ressources au niveau du système de fichiers, vous recevez un message d'erreur de ce type :

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport fs-8ce001b4.efs.ap-southeast-2.amazonaws.com:/ /efs
        
mount.nfs4: access denied by server while mounting fs-8ce001b4.efs.ap-southeast-2.amazonaws.com:/

3.    Affectez le rôle que vous avez créé pour cette instance Amazon EC2 (DB_team_role dans cet exemple) à l'instance Amazon EC2 DB_team à l'aide de la console Amazon EC2. Pour en savoir plus, reportez-vous à Comment attribuer un rôle IAM existant à une instance EC2 ? Si vous ne pouvez pas attribuer de rôle en tant que rôle de profil à une instance Amazon EC2, vous pouvez monter IAM en utilisant un profil nommé comme option de montage ainsi qu'un point d'accès. Par exemple :

sudo mount -t efs -o tls,iam,awsprofile=namedprofile,accesspoint=fsap- file-system-id efs-mount-point/

4.    Exécutez la commande mount pour monter votre système de fichiers à l'aide du deuxième point d'accès que vous avez créé (DB_team_AP dans cet exemple). Si le système de fichiers se monte correctement, votre rôle d'instance vous accorde alors des autorisations :

sudo mount -t efs -o tls,accesspoint=fsap-054969ebbe52a6121,iam fs-8ce001b4:/ /efs

5.    Exécutez la commande umount pour démonter le système de fichiers :

sudo umount /efs

6.    Montez votre système de fichiers à l'aide du premier point d'accès que vous avez créé (par exemple App_team_AP) à partir de la même instance Amazon EC2 à laquelle DB_team_role est affecté. Comme prévu, l'opération de montage est refusée en raison de la stratégie d'accès d'EFS et de l'appel de rôle IAM :

sudo mount -t efs -o tls,accesspoint=fsap-0093c87d798ae5ccb,iam fs-8ce001b4:/ /efs 

mount.nfs4: access denied by server while mounting 127.0.0.1:/

7.    Utilisez SSH pour vous connecter à l'instance App_team et effectuez les étapes précédentes. Vous ne pouvez pas monter le système de fichiers à l'aide de DB_team_AP lorsque vous utilisez App_team_role.

Votre système de fichiers autorise désormais les montages uniquement lorsque l'instance EC2 impliquée utilise le rôle IAM requis.

sudo mount -t efs -o tls,accesspoint=fsap-0093c87d798ae5ccb,iam fs-8ce001b4:/ /efs

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an