Je souhaite autoriser uniquement des adresses IP spécifiques à accéder à mon API REST Amazon API Gateway.
Brève description
Pour autoriser uniquement des adresses IP spécifiques à accéder à votre API REST, créez une stratégie de ressources qui refuse l'accès à toutes les autres adresses IP.
Une fois que vous avez associé la stratégie de ressources à votre API REST, les utilisateurs autorisés peuvent appeler l'API à partir d'adresses IP spécifiées. Votre API refuse les appels provenant de toute autre adresse IP et affiche une erreur « HTTP 403 Forbidden ».
Pour bloquer des adresses IP spécifiques et autoriser l'accès à toutes les autres, consultez la section Exemple : Refuser le trafic de l'API en fonction de l'adresse ou de la plage d’adresses IP source.
Remarque : Vous pouvez utiliser des stratégies de ressources pour les API HTTP API Gateway.
Résolution
Configurer une méthode API
Pour tester l’accès, utilisez votre API REST API Gateway existante ou créez un exemple d'API REST. Si vous utilisez l'exemple d’API PetStore, passez à la section Créer et associer une stratégie de ressources.
Pour créer une intégration Mock pour votre API REST existante, procédez comme suit :
- Ouvrez la console API Gateway.
- Choisissez votre API REST.
- Dans le volet Ressources, sous Méthodes, sélectionnez Créer une méthode.
- Dans Type de méthode, sélectionnez N'IMPORTE QUEL.
- Dans Type d'intégration, choisissez Mock.
Remarque : L’intégration Mock répond à toutes les requêtes qui lui parviennent.
- Sélectionnez Créer une méthode.
Créer et associer la stratégie de ressources
Procédez comme suit :
- Ouvrez la console API Gateway.
- Choisissez votre API REST.
- Dans le volet de navigation, choisissez Stratégie de ressources.
- Sélectionnez Créer une politique.
- Dans Stratégie de ressources, saisissez la stratégie de ressources suivante :
{ "Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*/*/*"
},
{
"Effect": "Deny",
"Principal": "*",
"Action": "execute-api:Invoke",
"Resource": "execute-api:/*/*/*",
"Condition": {
"NotIpAddress": {
"aws:SourceIp": ["sourceIpOrCIDRBlock", "sourceIpOrCIDRBlock"]
}
}
}
]
}
Remarque : Remplacez sourceIpOrCIDRBlock par les adresses IP auxquelles vous souhaitez accorder l'accès. Utilisez une notation CIDR pour spécifier une plage d'adresses IP, telle que ["52.95.36.0/22", "15.230.39.196/31", "52.93.178.219/32"]. La condition aws:SourceIp ne fonctionne que pour les plages d'adresses IP publiques. Pour autoriser l'accès à des plages d'adresses IP privées, utilisez la condition aws:VpcSourceIp. Dans aws:VpcSourceIp, saisissez l'adresse IP privée du client HTTP qui appelle votre point de terminaison d'API privé via l'interface point de terminaison de cloud privé virtuel (VPC). Vous pouvez invoquer des points de terminaison d'API privés dans API Gateway uniquement via un point de terminaison de VPC d'interface.
- Sélectionnez Enregistrer les modifications.
Pour trouver les adresses IP privées qui appellent votre API REST, consultez les journaux Amazon CloudWatch. Pour plus d'informations, consultez la section Didacticiel : Consulter les CloudWatch Logs.
Déployer votre API
Procédez comme suit :
- Ouvrez la console API Gateway.
- Choisissez votre API REST.
- Dans le volet Ressources de votre API REST, choisissez Déployer l’API.
- Dans Étape de déploiement, choisissez Nouvelle étape.
- Dans Nom de l’étape, saisissez un nom. Par exemple, saisissez v1 ou demo.
- Sélectionnez Déployer.
Important : Vous devez redéployer votre API REST chaque fois que vous modifiez sa stratégie de ressources.
Tester la stratégie de ressources
En fonction de votre système d'exploitation (OS), exécutez l'une des commandes suivantes pour tester un environnement avec une adresse IP autorisée.
Environnements Linux, Unix et macOS :
curl -IX GET https://yourInvokeUrl/
Windows PowerShell :
curl https://yourInvokeUrl/
Remarque : Remplacez https://yourInvokeUrl/ par l'URL d'invocation de votre API REST.
Si vous avez correctement configuré la stratégie de ressources, l'environnement autorisé reçoit une réponse « HTTP 200 OK ». Réexécutez la même commande à partir d'un environnement sans adresse IP autorisée. Un environnement refusé doit recevoir une erreur « HTTP 403 Forbidden ».
Pour tester votre stratégie de ressources, vous pouvez également utiliser l'application Postman sur le site Web de Postman.
Remarque : Si vous n'avez pas accès à plusieurs environnements, lancez une instance Amazon Elastic Compute Cloud (Amazon EC2). Puis, ajoutez l'adresse IP de l'instance à la stratégie de ressources de votre API et redéployez votre API.
Informations connexes
Créer et associer une stratégie de ressources API Gateway à une API
Exemples de stratégies de ressources API Gateway
Présentation du langage de la politique d'accès pour Amazon API Gateway
Contrôler et gérer l'accès aux API REST dans API Gateway