Para mejorar la seguridad de la API privada, puede crear una política de punto de conexión de VPC. Una política de punto de conexión de VPC es una política de recursos de IAM que se adjunta a un punto de conexión de VPC. Para obtener más información, consulte Control del acceso a los servicios con Puntos de conexión de VPC.
Es posible que desee crear una política de punto de conexión de VPC para realizar las siguientes tareas.
Permita que solo determinadas organizaciones o recursos accedan al punto de conexión de VPC e invoquen la API.
Use una sola política y evite las políticas basadas en sesiones o roles para controlar el tráfico a la API.
Refuerce el perímetro de seguridad de la aplicación al migrar de en las instalaciones a AWS.
Consideraciones de la política del punto de conexión de VPC
A continuación, se ofrecen consideraciones para su política de punto de conexión de VPC.
-
La identidad del invocador se evalúa en función del valor
Authorization
del encabezado. En función de suauthorizationType
, esto puede provocar un error403 IncompleteSignatureException
o403 InvalidSignatureException
. En la tabla siguiente se muestran los valores del encabezadoAuthorization
para cada parámetroauthorizationType
.authorizationType
¿Encabezado
Authorization
evaluado?Valores del encabezado
Authorization
permitidosNONE
con la política de acceso completa predeterminadaNo No aprobado NONE
con una política de acceso personalizadaSí Debe ser un valor de SigV4 válido IAM
Sí Debe ser un valor de SigV4 válido CUSTOM
oCOGNITO_USER_POOLS
No No aprobado Si una política restringe el acceso a una entidad principal de IAM específica, como
arn:aws:iam::account-id:role/developer
, debe establecer elauthorizationType
del método de la API enAWS_IAM
oNONE
. Para obtener más instrucciones sobre cómo configurar elauthorizationType
para un método, consulte Métodos de API de REST en API Gateway.-
Las políticas de punto de conexión de VPC se pueden utilizar junto con políticas de recursos de API Gateway. La política de recursos de API Gateway especifica qué entidades principales pueden acceder a la API. La política de puntos de conexión especifica quién puede acceder a la VPC y qué API se puede llamar desde el punto de conexión de VPC. La API privada necesita una política de recursos pero no necesita crear una política de punto de conexión de VPC personalizada.
Ejemplos de políticas de puntos de conexión de VPC
Puede crear políticas para los puntos de conexión de Amazon Virtual Private Cloud para Amazon API Gateway en las que puede especificar lo siguiente.
-
La entidad principal que puede realizar acciones.
-
Las acciones que se pueden realizar.
-
Los recursos en los que se pueden realizar acciones.
Para asociar la política al punto de conexión de VPC, tendrá que utilizar la consola de VPC. Para obtener más información, consulte Control del acceso a los servicios con Puntos de conexión de VPC.
Ejemplo 1: Política de punto de conexión de VPC que otorga acceso a dos API
El siguiente ejemplo de política otorga acceso solo a dos API específicas a través del punto de conexión de VPC al que está asociado la política.
{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:
us-east-1
:123412341234
:a1b2c3d4e5
/*", "arn:aws:execute-api:us-east-1
:123412341234
:aaaaa11111
/*" ] } ] }
Ejemplo 2: Política de punto de conexión de VPC que otorga acceso a métodos GET
El siguiente ejemplo de política otorga acceso a los usuarios a los métodos GET
para una API específica a través del punto de conexión de VPC al que está asociada la política.
{ "Statement": [ { "Principal": "*", "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:
us-east-1
:123412341234
:a1b2c3d4e5
/stageName
/GET/*" ] } ] }
Ejemplo 3: Política de punto de conexión de VPC que otorga acceso a un usuario específico a una API específica
El siguiente ejemplo de política otorga acceso a un usuario específico a una API específica a través del punto de conexión de VPC al que está asociada la política.
En este caso, como la política restringe el acceso a entidades principales de IAM específicas, debe establecer el authorizationType
del método en AWS_IAM
o NONE
.
{ "Statement": [ { "Principal": { "AWS": [ "arn:aws:iam::123412341234:user/
MyUser
" ] }, "Action": [ "execute-api:Invoke" ], "Effect": "Allow", "Resource": [ "arn:aws:execute-api:us-east-1
:123412341234
:a1b2c3d4e5
/*" ] } ] }
Ejemplo 4: Política de punto de conexión de VPC que otorga a los usuarios acceso a un nombre de dominio personalizado específico y a todas las API asignadas al dominio
El siguiente ejemplo de política otorga acceso a los usuarios a un determinado nombre de dominio personalizado para API privadas a través del punto de conexión de VPC al que está asociada la política. Con esta política, siempre que el usuario haya creado una asociación de acceso a nombre de dominio entre el punto de conexión de VPC y el nombre de dominio personalizado y se le otorgue acceso para invocar el nombre de dominio personalizado y cualquier API privada asignada al nombre de dominio personalizado, el usuario puede invocar cualquier API asignada a este nombre de dominio personalizado. Para obtener más información, consulte Nombres de dominio personalizados para API privadas en API Gateway.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "execute-api:Invoke", "Resource": [ "*" ], "Condition": { "ArnEquals": { "execute-api:viaDomainArn": "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.test.com+f4g5h6", } } } ] }
Ejemplo 5: Política de punto de conexión de VPC que otorga o deniega el acceso a determinadas API y recursos de dominio
La siguiente política de ejemplo otorga a los usuarios acceso a determinadas API y recursos de dominio. Con esta política, siempre que el usuario haya creado una asociación de acceso a nombre de dominio entre el punto de conexión de VPC y el nombre de dominio personalizado y se le otorgue acceso para invocar el nombre de dominio personalizado y cualquier API privada asignada al nombre de dominio personalizado, el usuario puede invocar las API privadas y los recursos de dominio permitidos. Para obtener más información, consulte Nombres de dominio personalizados para API privadas en API Gateway.
{ "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:/domainnames/private.test.com+f4g5h6", "arn:aws:execute-api:us-west-2:111122223333:a1b2c3d4e5/*" ] }, { "Effect": "Deny", "Principal": { "AWS": "*" }, "Action": "execute-api:Invoke", "Resource": [ "arn:aws:execute-api:us-west-2:111122223333:a1b2c3d4e5/admin/*", "arn:aws:execute-api:us-west-2:111122223333:bcd123455/*" ] } ] }