Uso de las claves de condición de VPC para controlar el acceso federado
Los usuarios federados pueden asumir roles con AssumeRoleWithSAML o AssumeRoleWithWebIdentity a través de un punto de conexión de VPC. Cuando los asuman, usted puede usar claves de condición específicas de VPC en la política de confianza del rol o en las políticas de control de recursos (RCP) para restringir el origen de estas solicitudes. Esto establece un límite a nivel de red, además de los controles a nivel de identidad de la política de confianza.
Temas
Cómo funcionan las claves de condición de VPC para las solicitudes federadas
Ejemplo: restringir la federación de OIDC a una VPC específica
Ejemplo: restringir la federación de SAML a un punto de conexión de VPC específico
Ejemplo: restringir la federación de OIDC por rango de IP privadas dentro de una VPC
Ejemplo: combinar la VPC y las condiciones específicas del proveedor
Ejemplo: usar una RCP para restringir el acceso federado a una VPC específica
Cómo funcionan las claves de condición de VPC para las solicitudes federadas
Las claves de condición disponibles en el contexto de la solicitud dependen de la ruta de red de la solicitud federada.
Clave de condición |
Mediante el punto de conexión de VPC |
A través del Internet público |
Descripción |
|---|---|---|---|
|
Sí |
No |
ID de VPC que atraviesa la solicitud |
|
Sí |
No |
ARN de la VPC que atraviesa la solicitud |
|
Sí |
No |
ID del punto de conexión de VPC que atraviesa la solicitud |
|
Sí |
No |
Dirección IP privada del intermediario dentro de la VPC |
|
No |
Sí |
Dirección IP pública del intermediario |
Si su política de confianza utiliza aws:SourceVpc, aws:SourceVpcArn o aws:SourceVpce en una instrucción Allow y la solicitud no pasa por un punto de conexión de VPC, la condición no coincidirá y AWS denegará implícitamente la solicitud. Esto requiere que las solicitudes federadas atraviesen el punto de conexión de VPC para que se realicen correctamente.
importante
En el caso de las solicitudes realizadas a través de un punto de conexión de VPC, aws:SourceIp no se rellena. En su lugar, utilice aws:VpcSourceIp para restricciones basadas en IP.
Recomendamos usar aws:SourceVpcArn en lugar de aws:SourceVpc en las políticas de confianza. Los ID de VPC son únicos a nivel regional, pero no a nivel global. Sin embargo, aws:SourceVpcArn incluye la región y la cuenta, lo que brinda una identificación única global de la VPC.
nota
El valor de audiencia (aud) de los siguientes ejemplos de OIDC utiliza sts.amazonaws.com, que es el valor predeterminado de Amazon EKS. En el caso de otros proveedores de OIDC, sustitúyalo por el valor de audiencia configurado en su aplicación (por ejemplo, un ID de cliente o un URI de la aplicación).
Ejemplo: restringir la federación de OIDC a una VPC específica
La siguiente política de confianza permite que un proveedor de OIDC asuma el rol solo cuando la solicitud se origina en una VPC específica mediante un punto de conexión de VPC.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOIDCFromVpc", "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/idp.example.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "idp.example.com:aud": "sts.amazonaws.com", "aws:SourceVpcArn": "arn:aws:ec2:us-west-2:111122223333:vpc/vpc-111bbb22" } } } ] }
AWS deniega implícitamente las solicitudes ajenas a la VPC especificada, ya que la condición aws:SourceVpcArn no coincide. No se necesita una instrucción de denegación explícita.
Ejemplo: restringir la federación de SAML a un punto de conexión de VPC específico
La siguiente política de confianza permite que un proveedor de SAML asuma el rol solo cuando la solicitud llega mediante un punto de conexión de VPC específico.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSAMLFromVpce", "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleProvider" }, "Action": "sts:AssumeRoleWithSAML", "Condition": { "StringEquals": { "SAML:aud": "https://signin.aws.amazon.com/saml", "aws:SourceVpce": "vpce-0abcdef1234567890" } } } ] }
Usar aws:SourceVpce en lugar de aws:SourceVpc entrega un control más detallado cuando tiene varios puntos de conexión de VPC en la misma VPC y desea restringir el acceso a un punto de conexión específico.
Ejemplo: restringir la federación de OIDC por rango de IP privadas dentro de una VPC
La siguiente política de confianza restringe la federación a las solicitudes que se originan en una subred específica de la VPC. Utilice aws:VpcSourceIp para restricciones basadas en IP en las solicitudes realizadas mediante un punto de conexión de VPC.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOIDCFromSubnet", "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/idp.example.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "idp.example.com:aud": "sts.amazonaws.com", "aws:SourceVpcArn": "arn:aws:ec2:us-west-2:111122223333:vpc/vpc-111bbb22" }, "IpAddress": { "aws:VpcSourceIp": "10.0.1.0/24" } } } ] }
importante
No utilice aws:SourceIp con rangos de IP privadas para solicitudes mediante un punto de conexión de VPC. La clave aws:SourceIp no está disponible para las solicitudes del punto de conexión de VPC. En su lugar, use aws:VpcSourceIp.
Ejemplo: restringir la federación de SAML a varias VPC
La siguiente política de confianza permite que un proveedor de SAML asuma el rol desde cualquiera de varias VPC. Esto es útil cuando su organización tiene varias VPC en diferentes entornos o regiones que requieren acceso federado al mismo rol.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSAMLFromMultipleVpcs", "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:saml-provider/ExampleProvider" }, "Action": "sts:AssumeRoleWithSAML", "Condition": { "StringEquals": { "SAML:aud": "https://signin.aws.amazon.com/saml", "aws:SourceVpcArn": [ "arn:aws:ec2:us-west-2:111122223333:vpc/vpc-111aaa11", "arn:aws:ec2:us-east-1:111122223333:vpc/vpc-222bbb22" ] } } } ] }
Ejemplo: combinar la VPC y las condiciones específicas del proveedor
Combine las claves de condición de la VPC con condiciones específicas del proveedor, como la audiencia (aud) y el asunto (sub), para un control de acceso detallado. La siguiente política de confianza restringe la asignación de roles a un usuario federado específico y exige que la solicitud se origine en una VPC específica.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowOIDCUserFromVpc", "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/idp.example.com" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "idp.example.com:aud": "sts.amazonaws.com", "idp.example.com:sub": "user123", "aws:SourceVpcArn": "arn:aws:ec2:us-west-2:111122223333:vpc/vpc-111bbb22" } } } ] }
Esto combina controles a nivel de identidad (restringidos a un usuario federado específico) con controles a nivel de red (restringidos a una VPC específica), lo que brinda una defensa a fondo.
Ejemplo: usar una RCP para restringir el acceso federado a una VPC específica
La siguiente política de control de recursos (RCP) deniega las solicitudes AssumeRoleWithSAML y AssumeRoleWithWebIdentity a menos que se originen en una VPC específica. A diferencia de las políticas de confianza que se aplican por rol, una política de control de recursos (RCP) se aplica a todos los roles de las cuentas de destino. Esto brinda un límite de red centralizado.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyFederatedAccessOutsideVpc", "Effect": "Deny", "Principal": "*", "Action": [ "sts:AssumeRoleWithWebIdentity", "sts:AssumeRoleWithSAML" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:SourceVpcArn": "arn:aws:ec2:us-west-2:111122223333:vpc/vpc-111bbb22" }, "Null": { "aws:SourceVpcArn": "false" } } } ] }
La condición Null garantiza que la denegación solo se aplique cuando aws:SourceVpcArn esté presente en el contexto de la solicitud (es decir, la solicitud llegó a través de un punto de conexión de VPC, pero desde una VPC incorrecta). Sin ella, StringNotEquals también denegaría las solicitudes a través de la Internet pública (donde aws:SourceVpcArn no está presente). Si elimina la comprobación Null, la denegación también se aplica a las solicitudes que no atraviesan ningún punto de conexión de VPC, como las solicitudes a través de la Internet pública. Recomendamos realizar pruebas exhaustivas antes de eliminar la comprobación Null en los entornos de producción.