Berechtigungen für GetFederationToken - AWS Identitäts- und Zugriffsverwaltung

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.

Berechtigungen für GetFederationToken

Die GetFederationToken-Operation wird von einem IAM-Benutzer aufgerufen und gibt temporäre Anmeldedaten für diesen Benutzer zurück. Diese Operation verbindet die Benutzer. Die dem Verbundbenutzer zugewiesenen Berechtigungen sind an einem von zwei Orten definiert:

  • In den Sitzungsrichtlinien, die als Parameter im API-Aufruf GetFederationToken übergeben werden. (Dies ist am üblichsten.)

  • Eine ressourcenbasierte Richtlinie, in der der Name des Verbundbenutzers im Principal-Element der Richtlinie explizit aufgeführt wird. (Dies ist weniger üblich.)

Sitzungsrichtlinien sind erweiterte Richtlinien, die Sie als Parameter übergeben, wenn Sie eine temporäre Sitzung programmgesteuert erstellen. Wenn Sie eine verbundene Benutzersitzung erstellen und Sitzungsrichtlinien übergeben, sind die resultierenden Sitzungsberechtigungen eine Schnittmenge der identitätsbasierten Richtlinie des -Benutzers und der Sitzungsrichtlinien. Sie können mit der Sitzungsrichtlinie nicht mehr Berechtigungen erteilen, als durch die identitätsbasierte Richtlinie des Benutzers, der verbunden wird, zulässig sind.

Wenn Sie also keine Richtlinie mit dem GetFederationToken-API-Aufruf übergeben, verfügen die resultierenden temporären Sicherheitsanmeldedaten über keine Berechtigungen. Allerdings kann eine ressourcenbasierte Richtlinie zusätzliche Berechtigungen für die Sitzung bereitstellen. Sie können auf eine Ressource mit einer ressourcenbasierten Richtlinie zugreifen, die Ihre Sitzung als zulässigen Auftraggeber angibt.

Die folgenden Abbildungen zeigen eine visuelle Darstellung der Interaktion von Richtlinien, um die Berechtigungen für die von einem GetFederationToken-Aufruf zurückgegebenen temporären Anmeldeinformationen zu bestimmen.

IAM-Benutzer: Die folgenden Abbildungen zeigen Häkchen, um anzuzeigen, dass es sich bei den Sitzungsberechtigungen um die Schnittmenge aus der identitätsbasierten Richtlinie des Benutzers und den Sitzungsrichtlinien handelt. Sitzungsberechtigungen können auch die Schnittmenge aus identitätsbasierten Richtlinien und ressourcenbasierten Richtlinien des Benutzers sein.

Beispiel: Zuweisen von Berechtigungen mithilfe von GetFederationToken

Sie können die GetFederationToken-API-Aktion mit verschiedenen Arten von Richtlinien verwenden. Nachfolgend sind einige Beispiele aufgeführt.

Zum IAM-Benutzer angefügte Richtlinie

In diesem Beispiel verfügen Sie über eine browserbasierte Clientanwendung, die sich auf zwei Backend-Web-Services stützt. Ein Backend-Service ist Ihr eigener Authentifizierungsserver, der Ihr eigenes Identitätssystem zum Authentifizieren der Clientanwendung verwendet. Der andere Backend-Service ist ein AWS-Service, der einige Funktionalitäten der Clientanwendung bereitstellt. Die Clientanwendung wird von Ihrem Server authentifiziert und Ihr Server erstellt die entsprechende Berechtigungsrichtlinie oder ruft sie ab. Der Server ruft dann das GetFederationToken-API auf, um temporäre Anmeldeinformationen zu erhalten und diese Anmeldeinformationen zur Clientanwendung zurückzugeben. Die Clientanwendung kann anschließend mit den temporären Anmeldeinformationen Anforderungen direkt an den AWS-Service stellen. Diese Architektur ermöglicht der Clientanwendung, AWS-Anforderungen zu stellen, ohne langfristige AWS-Anmeldeinformationen bereitstellen zu müssen.

Der Authentifizierungsserver ruft die GetFederationToken-API mit den langfristigen Sicherheitsanmeldedaten eines IAM-Benutzers mit dem Namen token-app auf. Die langfristigen IAM-Benutzeranmeldedaten bleiben jedoch auf Ihrem Server und werden unter keinen Umständen an den Client weitergegeben. Im folgenden Beispiel wird die Richtlinie dem IAM-Benutzer token-app angefügt und die von Ihren Verbundbenutzern (Clients) benötigten Berechtigungen definiert. Beachten Sie, dass die Berechtigung sts:GetFederationToken für den Authentifizierungsservice erforderlich ist, damit die temporären Anmeldeinformationen für die Verbundbenutzer abgerufen werden können.

Anmerkung

AWS stellt zu diesem Zweck eine Java-Beispielanwendung zur Verfügung, die Sie hier herunterladen können: Token Vending Machine for Identity Registration - Sample Java Web Application.

Beispiel Die dem IAM-Benutzer token-app angefügte Richtlinie, die GetFederationToken aufruft
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:GetFederationToken", "Resource": "*" }, { "Effect": "Allow", "Action": "dynamodb:ListTables", "Resource": "*" }, { "Effect": "Allow", "Action": "sqs:ReceiveMessage", "Resource": "*" }, { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "*" }, { "Effect": "Allow", "Action": "sns:ListSubscriptions", "Resource": "*" } ] }

Die obige Richtlinie erteilt dem IAM-Benutzer mehrere Berechtigungen. Doch diese Richtlinie allein erteilt dem Verbundbenutzer keinerlei Berechtigungen. Wenn dieser IAM-Benutzer GetFederationToken aufruft und keine Richtlinie als Parameter des API-Aufrufs übergibt, hat der resultierende Verbundbenutzer keine effektiven Berechtigungen.

Als Parameter übergebene Sitzungsrichtlinie

Die am häufigsten verwendete Methode, um sicherzustellen, dass dem Verbundbenutzer die entsprechende Berechtigung erteilt wird, besteht darin, Sitzungsrichtlinien im GetFederationToken-API-Aufruf zu übergeben. Aufbauend auf dem vorherigen Beispiel nehmen wir an, das GetFederationToken mit den Anmeldedaten des IAM-Benutzers token-app aufgerufen wird. Angenommen, die folgende Sitzungsrichtlinie wird als Parameter des API-Aufrufs übergeben. Der resultierende Verbundbenutzer verfügt über die Berechtigung zum Auflisten der Inhalte des Amazon S3-Buckets mit dem Namen productionapp. Der Benutzer kann die Amazon S3-Aktionen GetObject, PutObject und DeleteObject für Elemente im productionapp-Bucket nicht ausführen.

Dem Verbundbenutzer werden diese Berechtigungen zugewiesen, da die Berechtigungen die Schnittmenge der IAM-Benutzerberechtigungen und der Sitzungsrichtlinien bilden, die Sie übergeben.

Der Verbundbenutzer konnte keine Aktionen in Amazon SNS, Amazon SQS, Amazon DynamoDB oder in einem S3-Bucket außer productionapp. Diese Aktionen werden abgelehnt, auch wenn diese Berechtigungen dem IAM-Benutzer erteilt werden, der mit dem GetFederationToken-Aufruf verknüpft ist.

Beispiel Als Parameter im API-Aufruf GetFederationToken übergebene Sitzungsrichtlinie
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:ListBucket"], "Resource": ["arn:aws:s3:::productionapp"] }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::productionapp/*"] } ] }

Ressourcenbasierte Richtlinien

Einige AWS-Ressourcen unterstützen ressourcenbasierte Richtlinien. Diese Richtlinien stellen einen anderen Mechanismus bereit, um einem Verbundbenutzer auf direktem Weg Berechtigungen zu erteilen. Ressourcenbasierte Richtlinien werden nur von einigen AWS-Services unterstützt. Amazon S3 verfügt beispielsweise über Buckets, Amazon SNS über Themen und Amazon SQS über Warteschlangen, denen Sie Richtlinien zuordnen können. Eine Liste aller Services, die ressourcenbasierte Richtlinien unterstützen, finden Sie unter AWS Dienste, die funktionieren mit IAM. Überprüfen Sie die Spalte "Ressourcenbasierte Richtlinien" der Tabellen. Sie können ressourcenbasierte Richtlinien verwenden, um einem Verbundbenutzer Berechtigungen direkt zuzuweisen. Geben Sie hierzu den Amazon-Ressourcenname (ARN) des Verbundbenutzers Principal-Element der ressourcenbasierten Richtlinie an. Das folgende Beispiel veranschaulicht diesen Vorgang und ist eine Erweiterung der vorherigen Beispiele, wobei ein S3-Bucket mit dem Namen productionapp verwendet wird.

Die folgende ressourcenbasierte Richtlinie wird dem Bucket angefügt. Diese Bucket-Richtlinie gewährt der Verbundbenutzerin mit dem Namen Carol Zugriff auf den Bucket. Wenn die vorher beschriebene Beispielrichtlinie dem token-app-IAM-Benutzer angefügt worden ist, verfügt die Verbundbenutzerin mit dem Namen Carol über die Berechtigung zum Ausführen der Aktionen s3:GetObject, s3:PutObject, und s3:DeleteObject im Bucket mit dem Namen productionapp. Dies gilt auch, wenn keine Sitzungsrichtlinie als Parameter im API-Aufruf GetFederationToken übergeben wird. Dies liegt daran, dass in diesem Fall der Verbundbenutzerin mit dem Namen Carol durch die folgende ressourcenbasierte Richtlinie explizit Berechtigungen erteilt worden sind.

Beachten Sie, dass ein Verbundbenutzer nur dann Berechtigungen erhält, wenn diese Berechtigungen sowohl dem IAM-Benutzer als auch dem Verbundbenutzer erteilt werden. Sie können auch (innerhalb des Kontos) durch eine ressourcenbasierte Richtlinie gewährt werden, die den Verbundbenutzer im Principal-Element der Richtlinie ausdrücklich benennt, wie im folgenden Beispiel.

Beispiel Bucket-Richtlinie, die dem Verbundbenutzer Zugriffsberechtigungen erteilt
{ "Version": "2012-10-17", "Statement": { "Principal": {"AWS": "arn:aws:sts::account-id:federated-user/Carol"}, "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:DeleteObject" ], "Resource": ["arn:aws:s3:::productionapp/*"] } }

Weitere Informationen über das Auswerten von Richtlinien finden Sie unter Logik der Richtlinienevaluierung.