Wie kann ich Systemrichtlinien verwenden, um den Zugriff auf mein EFS-Dateisystem zu kontrollieren?

Lesedauer: 4 Minute
0

Ich möchte kontenübergreifend auf mein Amazon Elastic File System (Amazon EFS)-Dateisystem zugreifen, damit ich Dateien teilen kann. Wie kann ich dies mithilfe der AWS Identity and Access Management (IAM)-Autorisierung für NFS-Clients und EFS-Access Points tun?

Kurzbeschreibung

Sie können Ihr Amazon EFS-Dateisystem mounten, indem Sie die IAM-Autorisierung für NFS-Clients und Access Points mit dem Amazon EFS-Mount-Helper verwenden. Standardmäßig verwendet der Mount-Helper DNS, um die IP-Adresse Ihres Mount-Ziels aufzulösen. Wenn Sie das Mounten also von einem anderen Konto oder von der Amazon Virtual Private Cloud (Amazon VPC) aus durchführen, müssen Sie die Amazon EFS-Mount-Ziel-IP manuell auflösen.

Voraussetzungen

  1. Die VPCs Ihres NFS-Clients und Ihres EFS-Dateisystems sind entweder über eine VPC-Peering-Verbindung oder ein VPC Transit Gateway verbunden. Dadurch können Amazon Elastic Compute Cloud (Amazon EC2)-Instances von denselben oder verschiedenen Konten aus auf EFS-Dateisysteme in einer anderen VPC zugreifen.
  2. Ihre IAM-Rolle (Instance-Rolle oder eine andere Rolle) hat Konsolen- oder Lesezugriff sowohl auf die Amazon EFS- als auch auf die NFS-Client-Ressourcen.
  3. Der Amazon EFS-Client und das botocore-Paket sind im NFS-Client installiert.

Lösung

Hinweis: Wenn Sie beim Ausführen von Befehlen der AWS Command Line Interface (AWS CLI) Fehler erhalten, stellen Sie sicher, dass Sie die neueste Version der AWS CLI verwenden.

In diesem Beispiel ist das EFS-Dateisystem in Konto A und der NFS-Client in Konto B vorhanden.

1.Um auf das kontoübergreifende EFS-Dateisystem zuzugreifen und es zu mounten, fügen Sie der IAM-Richtlinie eine Richtlinienanweisung hinzu, die der folgenden ähnelt:

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

Diese Anweisung gewährt der IAM-Rolle Mount-, Schreib- und Root-Zugriff auf das EFS-Dateisystem. Wenn Ihr NFS-Client eine EC2-Instance ist, fügen Sie der Instance die IAM-Rolle zu.

2.Alternativ können Sie die Rolle mithilfe der AWS-CLI übernehmen. Beachten Sie, dass die AWS-CLI das DNS eines EFS-Dateisystems, das in einer anderen VPC vorhanden ist, nicht auflösen kann. Ermitteln Sie also zunächst die richtige Mount-Ziel-IP für Ihren Client. Konfigurieren Sie dann den Client so, dass er das EFS-Dateisystem mit dieser IP mountet.

Um eine hohe Verfügbarkeit sicherzustellen, verwenden Sie immer die Mount-Ziel-IP-Adresse in derselben Availability Zone (AZ) wie Ihr NFS-Client. Die Zuordnungen von AZ-Namen können sich von Konto zu Konto unterscheiden. Da Sie ein EFS-Dateisystem in einem anderen Konto mounten, müssen der NFS-Client und das Mount-Ziel dieselbe AZ-ID haben.

Um die AZ Ihrer EC2-Instance zu ermitteln, rufen Sie die DescribeAvailabilityZone-API mit einer der folgenden Methoden auf:

  • Melden Sie sich bei der Amazon EC2-Konsole an und wählen Sie Instances aus. Wählen Sie EC2-Instance-ID und anschließend Netzwerk aus. Unter Netzwerkdetails finden Sie die Availability Zone.

-oder-

  • Führen Sie einen ähnlichen Befehl von der IAM-Entität aus aus, die über ausreichende Leseberechtigungen für Amazon EC2 verfügt, und erhalten Sie eine ähnliche Ausgabe:
$ 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.Um die Mount-Ziel-IP für die lokale AZ zu ermitteln, rufen Sie die DescribeMountTargets-API auf, indem Sie eine der folgenden Methoden verwenden:

  • Melden Sie sich bei der Amazon EFS-Konsole an und wählen Sie Dateisysteme aus. Wählen Sie EFS-Dateisystem-ID aus und notieren Sie sich dann unter Netzwerk die IP-Adresse für Ihre Availability Zone.

-oder-

  • Führen Sie einen ähnlichen Befehl von der IAM-Entität aus aus, die über ausreichende Leseberechtigungen für Amazon EC2 verfügt, und erhalten Sie eine ähnliche Ausgabe:
$ 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.Notieren Sie sich in der Ausgabe, die Sie erhalten, die IP-Adresse, die dem Mount-Ziel in der AZ der EC2-Instance entspricht.

5.Verwenden Sie die IP-Adresse, die Sie erhalten haben, und fügen Sie den Hosteintrag der Datei /etc/hosts im NFS-Client hinzu. Das Format des DNS-Namens ist mount-target-IP-Address file-system-ID.efs.region.amazonaws.com.

Sehen Sie sich diesen Beispielbefehl an:

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

6.Mounten Sie das EFS-Dateisystem mithilfe des Mount-Helpers.

Hinweis: In einem kontoübergreifenden Szenario können Sie den üblichen NFS-Befehl nicht verwenden, daher sind botocore und der Amazon EFS-Client erforderlich.

Nachdem Sie diese Schritte ausgeführt haben, können Sie das EFS-Dateisystem mounten und es verwenden. Falls Fehler auftreten, lesen Sie in der Anleitung zur Fehlerbehebung nach.


Ähnliche Informationen

Erstellen von Dateisystemrichtlinien

AWS OFFICIAL
AWS OFFICIALAktualisiert vor einem Jahr