Dynamische Ansätze zur Rechteverwaltung - AWS Transfer Family

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.

Dynamische Ansätze zur Rechteverwaltung

Grundlegendes zur Berechtigungsarchitektur von Transfer Family

AWS Transfer Family unterstützt dynamisches Berechtigungsmanagement mithilfe von Sitzungsrichtlinien, mit denen Sie die effektiven Berechtigungen von IAM-Rollen zur Laufzeit einschränken können. Dieser Ansatz funktioniert sowohl für vom Service verwaltete Benutzer als auch für Benutzer von benutzerdefinierten Identitätsanbietern, wird jedoch nur unterstützt, wenn Dateien zu oder von Amazon S3 (nicht Amazon EFS) übertragen werden.

Jeder AWS Transfer Family Benutzer arbeitet mit einem Berechtigungsmodell, das aus folgenden Komponenten besteht:

  1. IAM-Basisrolle — Definiert die grundlegenden Berechtigungen für den Benutzer

  2. Optionale Sitzungsrichtlinie — Schränkt die Basisberechtigungen zur Laufzeit ein (mit eingeschränktem Geltungsbereich)

Die effektiven Berechtigungen sind die Schnittmenge der Basisrollenberechtigungen und der Sitzungsrichtlinienberechtigungen. Sitzungsrichtlinien können nur Berechtigungen einschränken; sie können keine zusätzlichen Berechtigungen gewähren, die über das hinausgehen, was die Basisrolle zulässt.

Diese Architektur gilt für beide Benutzertypen:

  • Vom Service verwaltete Benutzer — Sitzungsrichtlinien können direkt in den Benutzereinstellungen konfiguriert werden

  • Benutzer mit benutzerdefiniertem Identitätsanbieter — Sitzungsrichtlinien können als Teil der Authentifizierungsantwort zurückgegeben oder in gespeichert werden AWS Secrets Manager

Zwei Ansätze für die Rechteverwaltung

Beim Entwerfen von Berechtigungen für Transfer Family Family-Benutzer, die spezielle Zugriffsmuster benötigen, können Sie zwischen zwei Hauptansätzen wählen:

Eine Rolle pro Benutzer

Erstellen Sie für jeden Transfer Family Family-Benutzer eine separate IAM-Rolle mit spezifischen Berechtigungen, die auf die Bedürfnisse dieses Benutzers zugeschnitten sind. Verwenden Sie diesen Ansatz, wenn:

  • Jeder Benutzer benötigt sehr unterschiedliche Berechtigungen

  • Die Verwaltung von Berechtigungen wird von verschiedenen Personen in Ihrer Organisation übernommen

  • Sie benötigen eine detaillierte Kontrolle über den individuellen Benutzerzugriff

Gemeinsame Rolle mit Sitzungsrichtlinien

Verwenden Sie eine einzelne IAM-Rolle mit umfassenden Berechtigungen (z. B. Zugriff auf einen gesamten Amazon S3 S3-Bucket mit mehreren Benutzerstartverzeichnissen) und wenden Sie Sitzungsrichtlinien an, um jeden Benutzer auf seinen spezifischen Bereich zu beschränken. Dieser Ansatz reduziert den Verwaltungsaufwand im Vergleich zur Verwaltung separater Rollen für jeden Benutzer erheblich. Verwenden Sie diesen Ansatz, wenn:

  • Benutzer benötigen ähnliche Zugriffsarten, jedoch auf unterschiedliche Ressourcen (z. B. benötigen alle Benutzer read/write Zugriff, aber jeder nur auf seinen eigenen Ordner)

  • Sie möchten die Rollenverwaltung vereinfachen und vermeiden, Dutzende oder Hunderte von Einzelrollen zu erstellen

  • Benutzer sollten nur innerhalb eines gemeinsam genutzten Buckets auf ihre zugewiesenen Home-Verzeichnisse zugreifen

  • Die Rechteverwaltung ist innerhalb Ihrer Organisation zentralisiert

Anstatt beispielsweise separate Rollen für die Benutzer „Alice“, „Bob“ und „Charlie“ zu erstellen, können Sie eine Rolle mit Zugriff auf den gesamten s3://company-transfers/ Bucket erstellen und dann mithilfe von Sitzungsrichtlinien den Zugriff auf Alice s3://company-transfers/alice/s3://company-transfers/bob/, Bob auf usw. einschränken.

Implementieren von Sitzungsrichtlinien

Sitzungsrichtlinien funktionieren, indem sie die effektiven Berechtigungen der einem Benutzer zugewiesenen IAM-Basisrolle einschränken. Die endgültigen Berechtigungen sind die Schnittmenge zwischen den Berechtigungen der Rolle und den Berechtigungen der Sitzungsrichtlinie.

Sie können dynamische Sitzungsrichtlinien auf zwei Arten implementieren:

Substitution durch Variablen

Verwenden Sie ${transfer:HomeBucket} in Ihren Sitzungsrichtlinien Variablen für die Familienübertragungsrichtlinie wie ${transfer:Username}${transfer:HomeDirectory},, und. Diese Variablen werden zur Laufzeit automatisch durch die tatsächlichen Werte ersetzt. Weitere Hinweise zu diesen Variablen finden Sie unterSitzungsrichtlinie für einen Amazon S3 S3-Bucket erstellen.

Dynamische Generierung

Generieren Sie für benutzerdefinierte Identitätsanbieter Sitzungsrichtlinien on-the-fly als Teil der Authentifizierungsantwort aus Ihrer Lambda-Funktion oder API-Gateway-Methode. Mit diesem Ansatz können Sie zum Zeitpunkt der Authentifizierung hochgradig maßgeschneiderte Richtlinien erstellen, die auf Benutzerattributen, Gruppenmitgliedschaften oder externen Datenquellen basieren.

Sie können auch vorgenerierte Sitzungsrichtlinien speichern, AWS Secrets Manager indem Sie einen Schlüssel Policy mit dem JSON-Wert für die Sitzungsrichtlinie angeben. Auf diese Weise können Sie dieselbe umfassende IAM-Rolle für mehrere Benutzer verwenden und gleichzeitig benutzerspezifische Zugriffskontrollen beibehalten.

Anmerkung

Sitzungsrichtlinien werden nur für Dateiübertragungen zu und von Amazon S3 unterstützt. Sie gelten nicht für Amazon EFS-Dateisysteme. Für Amazon EFS werden die Berechtigungen durch das Dateisystem selbst geregelt UID/GID und die Berechtigungsbits werden innerhalb des Dateisystems selbst angewendet.

Implementierung nach Benutzertyp

Benutzer, die vom Service verwaltet werden

Für vom Service verwaltete Benutzer können Sie Sitzungsrichtlinien direkt in der Benutzerkonfiguration über die AWS Transfer Family Konsole, API oder CLI angeben. Weitere Informationen finden Sie unter Arbeiten mit Benutzern, die vom Dienst verwaltet werden.

Benutzer mit benutzerdefiniertem Identity Provider

Für Benutzer eines benutzerdefinierten Identitätsanbieters können Sie Sitzungsrichtlinien auf zwei Arten bereitstellen:

  • AWS Secrets Manager Indem Sie einen Schlüssel angeben, der Policy zusammen mit der Sitzungsrichtlinie als Wert benannt ist

  • Direkt in der Lambda-Funktionsantwort oder der API-Gateway-Antwort als Teil des Authentifizierungsergebnisses

Weitere Informationen finden Sie unter Lösung für einen benutzerdefinierten Identitätsanbieter.

Beispiel: Vereinfachung der Rollenverwaltung mit Sitzungsrichtlinien

Dieses Beispiel zeigt, wie dynamisches Berechtigungsmanagement den Verwaltungsaufwand erheblich reduzieren und gleichzeitig die Sicherheit gewährleisten kann.

Szenario

Ihr Unternehmen hat 50 Benutzer, die SFTP-Zugriff benötigen, um Dateien zu übertragen. Jeder Benutzer sollte nur auf seinen eigenen Ordner innerhalb eines gemeinsam genutzten Amazon S3 S3-Buckets zugreifen, der aufgerufen wirdcompany-transfers. Ohne Sitzungsrichtlinien müssten Sie 50 separate IAM-Rollen erstellen.

Herkömmlicher Ansatz (ohne Sitzungsrichtlinien)
  • Erstellen Sie 50 IAM-Rollen: TransferRole-AliceTransferRole-Bob,TransferRole-Charlie, usw.

  • Jede Rolle hat spezifische Berechtigungen nur für den Ordner dieses Benutzers

  • Die Verwaltung von Berechtigungen erfordert die Aktualisierung einzelner Rollen

  • Das Hinzufügen neuer Benutzer erfordert die Erstellung neuer Rollen

Dynamischer Ansatz (mit Sitzungsrichtlinien)
  • Erstellen Sie eine IAM-Rolle: TransferRole-Shared mit umfassenden Berechtigungen für den gesamten Bucket

  • Verwenden Sie Sitzungsrichtlinien, um jeden Benutzer zur Laufzeit auf seinen spezifischen Ordner zu beschränken

  • Die Verwaltung von Berechtigungen erfordert die Aktualisierung einer Rollen- oder Sitzungsrichtlinienvorlage

  • Das Hinzufügen neuer Benutzer erfordert keine neuen Rollen, sondern lediglich eine Benutzerkonfiguration

Implementierung

So würden Sie den dynamischen Ansatz implementieren (indem Sie den company-transfers Bucket als Beispiel verwenden, der durch Ihren tatsächlichen Amazon S3 S3-Bucket ersetzt werden soll):

Um ein dynamisches Berechtigungsmanagement zu implementieren
  1. Erstellen Sie eine gemeinsame IAM-Rolle mit umfassenden Amazon S3 S3-Berechtigungen:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers" } ] }
  2. Erstellen Sie eine Sitzungsrichtlinienvorlage, die den Zugriff auf den Ordner des Benutzers einschränkt:

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": "arn:aws:s3:::company-transfers/${transfer:Username}/*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::company-transfers", "Condition": { "StringLike": { "s3:prefix": "${transfer:Username}*" } } } ] }
  3. Konfigurieren Sie jeden Benutzer mit:

    • Die gemeinsame IAM-Rolle

    • Die Sitzungsrichtlinie wurde wie folgt angewendet:

      • Vom Service verwaltete Benutzer: Verwenden Sie die API oder CLI, um den JSON über den Policy-Parameter anzuwenden, wenn Sie Benutzer erstellen oder ändern (die Konsole bietet nur vordefinierte Richtlinienoptionen)

      • Benutzer eines benutzerdefinierten Identitätsanbieters: Geben Sie ihn entweder als Teil der Antwort der Lambda-Funktion während der Authentifizierung zurück oder speichern Sie ihn AWS Secrets Manager als Schlüssel mit dem Namen „Policy“ zusammen mit den Anmeldeinformationen des Benutzers

    • Heimatverzeichnis: /company-transfers/${transfer:Username}/