Forward Access Sessions (FAS) - AWS Identity and Access Management

Forward Access Sessions (FAS)

Forward Access Sessions (FAS) ist eine IAM-Technologie, die von AWS-Services verwendet wird, um Ihre Identitäts-, Berechtigungs- und Sitzungsattribute zu übergeben, wenn ein AWS-Service in Ihrem Namen eine Anfrage stellt. FAS verwendet die Berechtigungen der Identität, die einen AWS-Service aufruft, in Kombination mit der Identität eines AWS-Services, um Anfragen an nachgelagerte Services zu stellen. FAS-Anfragen werden erst im Namen eines IAM-Prinzipals an AWS-Services gestellt, nachdem ein Service eine Anfrage erhalten hat, für deren Abschluss Interaktionen mit anderen AWS-Services oder -Ressourcen erforderlich sind. Wenn eine FAS-Anfrage gestellt wird:

  • Der Service, der die erste Anfrage von einem IAM-Prinzipal empfängt, überprüft die Berechtigungen des IAM-Prinzipals.

  • Der Service, der eine nachfolgende FAS-Anfrage empfängt, überprüft auch die Berechtigungen desselben IAM-Prinzipals.

FAS wird beispielsweise von Amazon S3 verwendet, um Aufrufe an AWS Key Management Service zur Entschlüsselung eines Objekts zu stellen, wenn SSE-KMS zur Verschlüsselung verwendet wurde. Beim Herunterladen eines SSE-KMS-verschlüsselten Objekts ruft eine Rolle namens data-reader GetObject für das Objekt für Amazon S3 auf und ruft AWS KMS nicht direkt auf. Nach Erhalt der GetObject-Anfrage und Autorisierung von „data-reader“ stellt Amazon S3 eine FAS-Anfrage an AWS KMS, um das Amazon-S3-Objekt zu entschlüsseln. Wenn KMS die FAS-Anfrage erhält, überprüft KMS die Berechtigungen der Rolle und autorisiert die Entschlüsselungsanforderung nur, wenn „data-reader“ über die richtigen Berechtigungen für den KMS-Schlüssel verfügt. Die Anfragen an Amazon S3 und AWS KMS werden mit den Berechtigungen der Rolle autorisiert und sind nur erfolgreich, wenn „data-reader“ über Berechtigungen sowohl für das Amazon-S3-Objekt als auch für den AWS-KMS-Schlüssel verfügt.

Ein Flussdiagramm einer IAM-Rolle, die als Prinzipal an Amazon S3 und dann an AWS KMS übergeben wird.
Anmerkung

Zusätzliche FAS-Anfragen können von Services gestellt werden, die eine FAS-Anfrage erhalten haben. In solchen Fällen muss der anfordernde Prinzipal über Berechtigungen für alle von FAS aufgerufenen Services verfügen.

FAS-Anfragen und IAM-Richtlinienbedingungen

Wenn FAS-Anfragen gestellt werden, werden aws:CalledVia-, aws:CalledViaFirst- und aws:CalledViaLast-Bedingungsschlüssel mit dem Service-Prinzipal des Service gefüllt, der den FAS-Aufruf initiiert hat. Der Wert des aws:ViaAWSService-Bedingungsschlüssels wird immer dann auf true gesetzt, wenn eine FAS-Anfrage gestellt wird. Im folgenden Diagramm sind für die direkte Anfrage an CloudFormation keine aws:CalledVia- oder aws:ViaAWSService-Bedingungsschlüssel festgelegt. Wenn CloudFormation und DynamoDB im Namen der Rolle nachgelagerte FAS-Anfragen stellen, werden die Werte für diese Bedingungsschlüssel aufgefüllt.

Ein Flussdiagramm einer IAM-Rolle, die als Prinzipal an CloudFormation übergeben wird. Dann werden die Bedingungsschlüsselwerte an DynamoDB und AWS KMS übergeben.

Damit eine FAS-Anfrage gestellt werden kann, die andernfalls durch eine Deny-Richtlinienanweisung mit einem Bedingungsschlüssel, der Quell-IP-Adressen oder Quell-VPCs testet, verweigert werden würde, müssen Sie Bedingungsschlüssel verwenden, um in Ihrer Deny-Richtlinie eine Ausnahme für FAS-Anfragen bereitzustellen. Dies kann für alle FAS-Anfragen mithilfe des aws:ViaAWSService-Bedingungsschlüssels erfolgen. Um nur bestimmten AWS-Services zu erlauben, FAS-Anfragen zu stellen, verwenden Sie aws:CalledVia.

Wichtig

Wenn eine FAS-Anfrage gestellt wird, nachdem eine erste Anfrage über einen VPC-Endpunkt gestellt wurde, werden die Bedingungsschlüsselwerte für aws:SourceVpce, aws:SourceVpc und aws:VpcSourceIp aus der ersten Anfrage nicht in FAS-Anfragen verwendet. Wenn Sie Richtlinien mit aws:VPCSourceIP oder aws:SourceVPCE schreiben, um bedingten Zugriff zu gewähren, müssen Sie auch aws:ViaAWSService oder aws:CalledVia verwenden, um FAS-Anfragen zuzulassen. Wenn eine FAS-Anfrage gestellt wird, nachdem eine erste Anfrage von einem öffentlichen AWS-Service-Endpunkt empfangen wurde, werden nachfolgende FAS-Anfragen mit demselben aws:SourceIP-Bedingungsschlüsselwert gestellt.

Beispiel: Amazon-S3-Zugriff von einer VPC oder mit FAS zulassen

Im folgenden Beispiel für eine IAM-Richtlinie sind Amazon-S3-GetObject- und Athena-Anfragen nur zulässig, wenn sie von VPC-Endpunkten stammen, die an example_vpc angehängt sind, oder wenn es sich bei der Anfrage um eine FAS-Anfrage von Athena handelt.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "OnlyAllowMyIPs", "Effect": "Allow", "Action": [ "s3:GetObject*", "athena:StartQueryExecution", "athena:GetQueryResults", "athena:GetWorkGroup", "athena:StopQueryExecution", "athena:GetQueryExecution" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceVPC": [ "example_vpc" ] } } }, { "Sid": "OnlyAllowFAS", "Effect": "Allow", "Action": [ "s3:GetObject*" ], "Resource": "*", "Condition": { "ForAnyValue:StringEquals": { "aws:CalledVia": "athena.amazonaws.com" } } } ] }

Weitere Beispiele für die Verwendung von Bedingungsschlüsseln, um den FAS-Zugriff zu ermöglichen, finden Sie im Repository Data Perimeter Policy Examples.