Berechtigungen für GetFederationToken - AWS Identity and Access Management

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 einer AWS STS-Verbundbenutzersitzung zugewiesenen Berechtigungen werden an einer von zwei Stellen definiert:

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

  • Eine ressourcenbasierte Richtlinie, die die AWS STS-Verbundbenutzersitzung im Principal-Element der Richtlinie explizit benennt. (Dies ist weniger üblich.)

Sitzungsrichtlinien sind erweiterte Richtlinien, die Sie als Parameter übergeben, wenn Sie eine temporäre Sitzung programmgesteuert erstellen. Wenn Sie eine AWS STS-Verbundbenutzersitzung 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 -Aufruf zurückgegebenen temporären Anmeldeinformationen zu bestimmen GetFederationToken.

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 an den token-app-IAM-Benutzer angefügt und die von Ihren AWS STS-Verbundbenutzern (Clients) benötigten Berechtigungen werden definiert. Beachten Sie, dass die Berechtigung sts:GetFederationToken für den Authentifizierungsservice erforderlich ist, damit die temporären Sicherheitsanmeldeinformationen für die AWS STS-Verbundbenutzer abgerufen werden können.

Beispiel Die dem IAM-Benutzer token-app angefügte Richtlinie, die GetFederationToken aufruft
JSON
{ "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 AWS STS-Verbundbenutzer keinerlei Berechtigungen. Wenn dieser IAM-Benutzer GetFederationToken aufruft und keine Richtlinie als Parameter des API-Aufrufs übergibt, hat der resultierende AWS STS-Verbundbenutzer keine effektiven Berechtigungen.

Als Parameter übergebene Sitzungsrichtlinie

Die am häufigsten verwendete Methode, um sicherzustellen, dass dem AWS STS-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 AWS STS-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 AWS STS-Verbundbenutzer konnte keine Aktionen in Amazon SNS, Amazon SQS, Amazon DynamoDB oder in einem S3-Bucket außer productionapp ausführen. 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
JSON
{ "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 AWS STS-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-Services, die mit IAM funktionieren. Überprüfen Sie die Spalte "Ressourcenbasierte Richtlinien" der Tabellen. Sie können ressourcenbasierte Richtlinien verwenden, um einem AWS STS-Verbundbenutzer Berechtigungen direkt zuzuweisen. Geben Sie hierzu den Amazon-Ressourcenname (ARN) des AWS STS-Verbundbenutzers im 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 verwendet wird productionapp.

Die folgende ressourcenbasierte Richtlinie wird dem Bucket angefügt. Diese Bucket-Richtlinie gewährt der AWS STS-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 AWS STS-Verbundbenutzerin mit dem Namen Carol über die Berechtigung zum Ausführen der Aktionen s3:GetObject, s3:PutObject und s3:DeleteObject für den Bucket mit dem Namen productionapp. Dies gilt auch, wenn keine Sitzungsrichtlinie als Parameter im GetFederationToken-API-Aufruf übergeben wird. Dies liegt daran, dass in diesem Fall der AWS STS-Verbundbenutzerin mit dem Namen Carol durch die folgende ressourcenbasierte Richtlinie explizit Berechtigungen erteilt worden sind.

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

Beispiel Bucket-Richtlinie, die dem Verbundbenutzer Zugriffsberechtigungen erteilt
JSON
{ "Version":"2012-10-17", "Statement": { "Principal": { "AWS": "arn:aws:sts::111122223333: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.