Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erstellen einer Sitzungsrichtlinie für einen Amazon S3-Bucket
Eine Sitzungsrichtlinie ist eine AWS Identity and Access Management (IAM-) Richtlinie, die Benutzer auf bestimmte Teile eines Amazon S3-Buckets beschränkt. Dies geschieht durch Evaluierung des Zugriffs in Echtzeit.
Anmerkung
Sitzungsrichtlinien werden nur mit Amazon S3 verwendet. Für Amazon EFS verwenden Sie POSIX-Dateiberechtigungen, um den Zugriff einzuschränken.
Sie können eine Sitzungsrichtlinie verwenden, wenn Sie einer Gruppe von Benutzern denselben Zugriff auf einen bestimmten Teil Ihres Amazon S3-Buckets gewähren müssen. Eine Gruppe von Benutzern soll beispielsweise nur auf das home-Verzeichnis zugreifen können. Diese Benutzergruppe teilt sich dieselbe IAM-Rolle.
Anmerkung
Die maximale Länge einer Sitzungsrichtlinie beträgt 2048 Zeichen. Weitere Informationen finden Sie im Policy-Anforderungsparameter für die CreateUser Aktion in der API-Referenz.
Verwenden Sie die folgenden Richtlinienvariablen in Ihrer IAM-Richtlinie, um eine Sitzungsrichtlinie zu erstellen:
-
${transfer:HomeBucket} -
${transfer:HomeDirectory} -
${transfer:HomeFolder} -
${transfer:UserName}
Wichtig
Sie können die vorherigen Variablen in verwalteten Richtlinien nicht verwenden. Sie können sie auch nicht als Richtlinienvariablen in einer IAM-Rollendefinition verwenden. Sie erstellen diese Variablen in einer IAM-Richtlinie und geben sie direkt bei der Einrichtung Ihres Benutzers an. Außerdem können Sie die ${aws:Username} Variable in dieser Sitzungsrichtlinie nicht verwenden. Diese Variable bezieht sich auf einen IAM-Benutzernamen und nicht auf den Benutzernamen, der von benötigt wird AWS Transfer Family.
Beispiel für eine Sitzungsrichtlinie
Der folgende Code zeigt ein Beispiel für eine Sitzungsrichtlinie.
-
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowListingOfUserFolder", "Action": [ "s3:ListBucket" ], "Effect": "Allow", "Resource": [ "arn:aws:s3:::${transfer:HomeBucket}" ], "Condition": { "StringLike": { "s3:prefix": [ "${transfer:HomeFolder}/*", "${transfer:HomeFolder}" ] } } }, { "Sid": "HomeDirObjectAccess", "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:DeleteObjectVersion", "s3:DeleteObject", "s3:GetObjectVersion", "s3:GetObjectACL", "s3:PutObjectACL" ], "Resource": "arn:aws:s3:::${transfer:HomeDirectory}/*" } ] }
Anmerkung
Im vorangegangenen Richtlinienbeispiel wird davon ausgegangen, dass die Basisverzeichnisse der Benutzer so eingerichtet sind, dass sie einen abschließenden Schrägstrich enthalten, um anzuzeigen, dass es sich um ein Verzeichnis handelt. Wenn Sie dagegen ein Benutzerverzeichnis HomeDirectory ohne den abschließenden Schrägstrich angeben, sollten Sie es in Ihre Richtlinie aufnehmen.
Beachten Sie in der vorherigen Beispielrichtlinie die Verwendung der transfer:HomeFolder transfer:HomeDirectory Richtlinienparametertransfer:HomeBucket, und. Diese Parameter werden für den festgelegtHomeDirectory, der für den Benutzer konfiguriert ist, wie unter HomeDirectory und beschriebenImplementieren Sie Ihre API-Gateway-Methode. Diese Parameter haben die folgenden Definitionen:
Der
transfer:HomeBucketParameter wird durch die erste Komponente von ersetztHomeDirectory.Der
transfer:HomeFolderParameter wird durch die verbleibenden Teile desHomeDirectoryParameters ersetzt.Für den
transfer:HomeDirectoryParameter wurde der führende Schrägstrich (/) entfernt, sodass er als Teil eines S3-Amazon-Ressourcennamens (ARN) in einerResourceAnweisung verwendet werden kann.
Anmerkung
Wenn Sie logische Verzeichnisse verwenden — also die des homeDirectoryType Benutzers LOGICAL — werden diese Richtlinienparameter (HomeBucketHomeDirectory, undHomeFolder) nicht unterstützt.
Nehmen wir beispielsweise an, dass der HomeDirectory Parameter, der für den Transfer Family-Benutzer konfiguriert ist, lautet. /home/bob/amazon/stuff/
ist
transfer:HomeBucketauf/homegesetzt.ist
transfer:HomeFolderauf/bob/amazon/stuff/gesetzt.transfer:HomeDirectorywirdhome/bob/amazon/stuff/.
Die erste "Sid" ermöglicht es dem Benutzer, alle Verzeichnisse aufzulisten, beginnend mit/home/bob/amazon/stuff/.
Die zweite "Sid" schränkt den get Zugriff des Benutzers put auf denselben Pfad ein. /home/bob/amazon/stuff/
Wenn die vorherige Richtlinie in Kraft ist, kann ein Benutzer, wenn er sich anmeldet, nur auf Objekte in seinem Basisverzeichnis zugreifen. AWS Transfer Family Ersetzt diese Variablen beim Herstellen der Verbindung durch die entsprechenden Werte für den Benutzer. Dies erleichtert die Verwendung von Richtliniendokumenten für mehrere Benutzer. Dieser Ansatz reduziert den Aufwand für die IAM-Rollen- und Richtlinienverwaltung zur Verwaltung des Zugriffs Ihrer Benutzer auf Ihren Amazon S3-Bucket.
Sie können auch eine Sitzungsrichtlinie verwenden, um den Zugriff für jeden Ihrer Benutzer an Ihre Geschäftsanforderungen anzupassen. Weitere Informationen finden Sie unter Berechtigungen für AssumeRole und AssumeRoleWithWebIdentity im IAM-Benutzerhandbuch. AssumeRoleWithSAML
Anmerkung
AWS Transfer Family speichert den Richtlinien-JSON anstelle des Amazon-Ressourcennamens (ARN) der Richtlinie. Wenn Sie also die Richtlinie in der IAM-Konsole ändern, müssen Sie zur AWS Transfer Family Konsole zurückkehren und Ihre Benutzer mit den neuesten Richtlinieninhalten aktualisieren. Sie können den Benutzer auf der Registerkarte „Richtlinieninformationen“ im Abschnitt „Benutzerkonfiguration“ aktualisieren.
Wenn Sie den verwenden AWS CLI, können Sie den folgenden Befehl verwenden, um die Richtlinie zu aktualisieren.
aws transfer update-user --server-idserver--user-nameuser--policy \ "$(aws iam get-policy-version --policy-arnpolicy--version-idversion--output json)"
Verschachtelte Ersetzungen für Sitzungsrichtlinien
Verschachtelte Substitutionen werden in den Sitzungsrichtlinien von Transfer Family nicht durchgeführt. Sitzungsrichtlinien können verschachtelte Variablen verwenden, z. B. ${transfer:HomeDirectory} Wenn die Richtlinie verarbeitet wird, wird die äußere Variable (z. B.${transfer:HomeDirectory}) möglicherweise durch einen Wert ersetzt, der eine andere Variable enthält (z. B. {amzn-s3-demo-bucket:/$(transfer:UserName}). Die verschachtelte Variable wird jedoch nicht weiter durch den tatsächlichen Benutzernamen (z. B. johndoe) ersetzt.
Das bedeutet, dass Sie bei der Erstellung von Sitzungsrichtlinien für Transfer Family dieses Verhalten berücksichtigen und sicherstellen müssen, dass die Richtlinienstruktur und die Variablennutzung entsprechend konzipiert sind. Die verschachtelten Variablen werden möglicherweise nicht wie erwartet aufgelöst, und die Richtlinie gewährt möglicherweise nicht die beabsichtigten Berechtigungen. Es ist wichtig, die Sitzungsrichtlinien gründlich zu testen und zu validieren, um sicherzustellen, dass sie erwartungsgemäß funktionieren. Dieses Verhalten ist ein wichtiger Aspekt bei der Implementierung von Zugriffskontrolle und Berechtigungen für Ihre Transfer Family-Umgebung.
Eine Lösung für dieses Problem besteht darin, den tatsächlichen Amazon S3-Bucket-Namen in Ihrer Sitzungsrichtlinie zu verwenden. Verwenden Sie also beispielsweise Folgendes, anstatt dies ${transfer:HomeDirectory} in Ihrer Sitzungsrichtlinie anzugeben, wobei amzn-s3-demo-bucket Ihr eigentlicher Bucket ist:. ${amzn-s3-demo-bucket/transfer:UserName}