Sesiones de acceso directo
Forward access sessions (FAS) es una tecnología IAM utilizada por los servicios de AWS para proporcionar su identidad, permisos y atributos de sesión cuando un servicio de AWS realiza una solicitud en su nombre. FAS utiliza los permisos de la identidad que llama a un servicio de AWS, combinados con la identidad de un servicio de AWS para realizar peticiones a servicios posteriores. Las solicitudes FAS solo se realizan a servicios de AWS en nombre de una entidad principal de IAM después de que un servicio haya recibido una solicitud que requiera interacciones con otros servicios o recursos de AWS para completarse. Cuando se realiza una solicitud FAS:
-
El servicio que recibe la solicitud inicial de una entidad principal de IAM comprueba los permisos de la entidad principal de IAM.
-
El servicio que recibe una solicitud FAS posterior también comprueba los permisos de la misma entidad principal de IAM.
Por ejemplo, Amazon S3 utiliza FAS para realizar llamadas a AWS Key Management Service para descifrar un objeto cuando se ha utilizado SSE-KMS para cifrarlo. Al descargar un objeto SSE-KMS cifrado, un rol denominado data-reader llama a GetObject en el objeto en Amazon S3, y no llama a AWS KMS directamente. Tras recibir la solicitud GetObject y autorizar al lector de datos, Amazon S3 realiza una solicitud FAS a AWS KMS para descifrar el objeto de Amazon S3. Cuando KMS recibe la solicitud FAS, comprueba los permisos del rol y solo autoriza la solicitud de descifrado si el lector de datos tiene los permisos correctos sobre la clave KMS. Las solicitudes tanto a Amazon S3 como a AWS KMS se autorizan utilizando los permisos del rol y solo se ejecutan correctamente si data-reader tiene permisos tanto para el objeto de Amazon S3 como para la clave KMS de AWS.
![Un diagrama de flujo de un rol de IAM que se proporciona como entidad principal a Amazon S3 y luego a AWS KMS.](images/access-fas-example.png)
nota
Los servicios que han recibido una solicitud FAS pueden realizar solicitudes FAS adicionales. En estos casos, la entidad principal solicitante debe tener permisos para todos los servicios a los que llama FAS.
Solicitudes FAS y condiciones de la política de IAM
Cuando se realizan solicitudes FAS, las claves de condición aws:CalledVia, aws:CalledViaFirst y aws:CalledViaLast se rellenan con la entidad principal del servicio que inició la llamada FAS. El valor de la clave de condición aws:ViaAWSService se establece en true
cada vez que se realiza una solicitud FAS. En el siguiente diagrama, la solicitud directa a CloudFormation no tiene ninguna clave de condición aws:CalledVia
o aws:ViaAWSService
establecida. Cuando CloudFormation y DynamoDB realizan solicitudes FAS descendentes en nombre del rol, se rellenan los valores de estas claves de condición.
![Un diagrama de flujo de un rol de IAM que se proporciona como entidad principal a CloudFormation y, a continuación, proporciona los valores de clave de condición a DynamoDB y AWS KMS.](images/access-fas-example2.png)
Para permitir que se realice una solicitud FAS cuando, de otra forma, sería denegada por una declaración de política de denegación con una clave de condición que compruebe las direcciones IP de origen o las VPC de origen, debe utilizar claves de condición para proporcionar una excepción para las solicitudes FAS en su política de denegación. Esto puede hacerse para todas las solicitudes FAS utilizando la tecla de condición aws:ViaAWSService
. Para permitir que solo servicios de AWS específicos realicen solicitudes FAS, utilice aws:CalledVia
.
importante
Cuando se realiza una solicitud FAS después de una solicitud inicial a través de un punto de conexión de VPC, los valores de clave de condición para aws:SourceVpce
, aws:SourceVpc
y aws:VpcSourceIp
de la solicitud inicial no se utilizan en las solicitudes FAS. Cuando redacte políticas utilizando aws:VPCSourceIP
o aws:SourceVPCE
para conceder acceso de manera condicional, también debe utilizar aws:ViaAWSService
o aws:CalledVia
para permitir solicitudes FAS. Cuando se realiza una solicitud FAS después de que un punto de conexión público de un servicio de AWS reciba una solicitud inicial, las solicitudes FAS posteriores se realizarán con el mismo valor de clave de condición aws:SourceIP
.
Ejemplo: autorización de acceso a Amazon S3 desde una VPC o mediante FAS
En el siguiente ejemplo de política de IAM, las solicitudes GetObject de Amazon S3 y Athena solo se permiten si se originan en puntos de conexión de VPC adjuntos a example_vpc
, o si la solicitud es una solicitud FAS realizada por Athena.
{ "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" } } } ] }
Para ver ejemplos adicionales sobre el uso de claves de condición para permitir el acceso a FAS, consulte el repositorio de políticas de ejemplo para perímetros de datos