

# Uso de políticas de punto de conexión de VPC para API privadas en API Gateway
<a name="apigateway-vpc-endpoint-policies"></a>

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](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html).

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 name="apigateway-vpc-endpoint-policies-considerations"></a>

A continuación, se incluyen algunas consideraciones para la política de puntos de conexión de VPC:
+ La identidad del invocador se evalúa en función del valor `Authorization` del encabezado. Primero se evalúa la política de puntos de conexión de VPC y, a continuación, API Gateway evalúa la solicitud en función del tipo de autorización configurado en la solicitud del método. En la siguiente tabla se muestra cómo se evalúa la política de puntos de conexión de VPC en función del contenido del valor del encabezado `Authorization`.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/apigateway/latest/developerguide/apigateway-vpc-endpoint-policies.html)
+ Si el control de acceso depende del uso de un token de portador, como un autorizador de Lambda o Amazon Cognito, puede controlar el perímetro de seguridad mediante las [propiedades del recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resource-properties).
+  Si los controles de autorización utilizan la autorización de IAM, puede controlar el perímetro de seguridad mediante las [propiedades del recurso](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resource-properties) y las [propiedades de la entidad principal](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_condition-keys.html#condition-keys-resource-principal).
+ 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
<a name="apigateway-vpc-endpoint-policies-examples"></a>

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.

Esto puede depender del contenido del encabezado de autorización. Para obtener más información, consulte [Consideraciones de la política del punto de conexión de VPC](#apigateway-vpc-endpoint-policies-considerations). Para obtener ejemplos de políticas adicionales, consulte [Data perimeter policy examples](https://github.com/aws-samples/data-perimeter-policy-examples) en el sitio web de GitHub.

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](https://docs.aws.amazon.com/vpc/latest/privatelink/vpc-endpoints-access.html). 

## Ejemplo 1: Política de punto de conexión de VPC que otorga acceso a dos API
<a name="apigateway-vpc-endpoint-policies-example-1"></a>

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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "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
<a name="apigateway-vpc-endpoint-policies-example-2"></a>

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.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "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
<a name="apigateway-vpc-endpoint-policies-example-3"></a>

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`.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "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
<a name="apigateway-vpc-endpoint-policies-example-4"></a>

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](apigateway-private-custom-domains.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "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
<a name="apigateway-vpc-endpoint-policies-example-5"></a>

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](apigateway-private-custom-domains.md).

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "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/*"
      ]
    }
  ]
}
```

------

## Ejemplo 6: política de punto de conexión de VPC que concede o deniega el acceso a entidades principales y recursos que pertenecen a una organización
<a name="apigateway-vpc-endpoint-policies-example-6"></a>

La siguiente política de ejemplo concede acceso a entidades principales y recursos que pertenecen a una organización.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Condition": {
                "StringEquals": {
                    "aws:ResourceOrgID": "o-abcd1234",
                    "aws:PrincipalOrgID": "o-abcd1234"
                }
            },
            "Action": "*",
            "Resource": "*",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources"
        }
    ]
}
```

------