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

Dernière mise à jour : 02/09/2020

Je veux accorder l'accès au répertoire à des instances Amazon Elastic Compute Cloud Amazon (Amazon EC2). Comment puis-je utiliser les rôles et stratégies AWS Identity and Access Management (IAM) et les points d'accès Amazon Elastic File System (Amazon EFS) à cet effet ?

Brève description

Les points d'accès Amazon EFS vous permettent d'utiliser le même système de fichiers pour différentes instances tout en accordant l'accès aux répertoires requis uniquement. Pour utiliser les points d'accès et IAM pour 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. Créer des stratégies IAM pour chaque instance accordant des autorisations ClientMount et ClientWrite puis créer des rôles pour les stratégies.
  3. Créer une stratégie EFS pour votre système de fichiers.
  4. Tester votre configuration.

Conditions requises

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 atteindre votre système de fichiers). Envisagez 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 EFS.

2.    Utilisez la commande mount suivante pour vérifier que votre configuration est correctement configurée. Cette commande monte votre système de fichiers dans les deux instances EC2. Remplacez l'exemple de système de fichiers par votre système de fichiers :

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

3.    Exécutez la commande umount sur votre système de fichiers et toutes vos instances ou vous pouvez obtenir des erreurs d'E/S plus tard si vous faites une erreur lors de l'application de la stratégie 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 Installation du package amazon-efs-utils sur d'autres distributions Linux

Solution

Tenez compte des points suivants :

  • La solution suivante suppose que vous avez déjà créé un Amazon EFS sans points d'accès ni stratégie 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 en cours d'utilisation.
  • La solution suivante fournit des exemples à certaines étapes. Les exemples de noms sont App_Team et DB_Team. Remplacez ces exemples de noms par vos noms de ressources.

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

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, choisissez View details (Afficher les informations).

3.    Choisissez Points d'accès, puis Créer un point d'accès.

4.    Créez le premier point d'accès en entrant un nom et un chemin de répertoire racine.

Exemple

Nom : app_team_ap
Chemin de répertoire racine : /App_Team

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 :

Exemple

Nom : DB_team_ap
Chemin de répertoire racine : /db_team

7.    Choisissez Create access point (Créer un point d'accès). Notez les ID de point d'accès. Un ID de point d'accès est similaire à l'exemple suivant :

fsap-0093c87d798ae5ccb

Remarque : vous pouvez également utiliser un point d'accès pour appliquer les identités utilisateur POSIX (ID utilisateur et 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 identification 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 stratégies IAM pour chaque instance. Les stratégies suivantes accordent les autorisations ClientMount et ClientWrite . Vous pouvez utiliser ces stratégies comme référence. Remplacez la valeur affichée dans Resource (Ressource) dans ces exemples par l'ARN de votre ressource et remplacez l'ID du système de fichiers et l'ID du point d'accès par les valeurs correctes.

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

Exemple : 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 stratégies que vous venez de créer, puis choisissez Next: Tags (Suivant : Balises).

6.    Sélectionnez Next: Review (Étape suivante : vérification).

7.    Saisissez un nom de rôle, puis choisissez Creat role (Créer un rôle).

Exemple

Stratégie : App_team_policy
Stratégie : App_team_policy

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

Exemple

Nom du rôle : 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 (Stratégie de système de fichiers), puis Edit (Modifier ) dans la section Policy (Stratégie).

4.    Ajoutez la stratégie suivante pour autoriser ClientMount et ClientWrite pour les points d'accès que vous avez créés. Veillez à 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:instance-profile/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:instance-profile/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 (instanceDB_team dans cet exemple) sans attacher aucun rôle IAM à l'instance.

2.    Essayez de monter votre système de fichiers. Vous recevez un message d'erreur similaire à celui-ci :

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 (DB_team_Role dans cet exemple) à l'instance DB_team à l'aide de la console Amazon EC2. Pour connaître les instructions, consultezComment attribuer un rôle IAM existant à une instance EC2 ?

4.    Montez votre système de fichiers à l'aide du premier point d'accès créé (App_team_AP dans cet exemple) :

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:/

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

sudo umount /efs

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

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

7.    SSH dans 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.


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


Besoin d'aide pour une question technique ou de facturation ?