Comment puis-je utiliser l'AWS CLI pour créer, répertorier, obtenir ou mettre à jour un IPSet AWS WAF ?

Lecture de 5 minute(s)
0

Je souhaite utiliser l'interface de ligne de commande AWS (AWS CLI) pour créer, répertorier, obtenir ou mettre à jour un IPSet dans AWS WAF.

Résolution

**Remarque :**Si des erreurs surviennent lorsque vous exécutez des commandes AWS CLI, consultez l’article Résoudre les erreurs AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Cette résolution utilise wafv2 pour créer un IPSet dans une région AWS spécifique ou un IPset global à utiliser dans Amazon CloudFront.

Avant de continuer, vérifiez que la région par défaut de l'AWS CLI est bien celle dans laquelle vous souhaitez créer votre IPSet. Utilisez l'option -region pour mettre à jour la région, si nécessaire. Si vous utilisez CloudFront, créez votre IPSet dans la région USA Est (Virginie du Nord) : us-east-1.

Créer un IPset

Procédez comme suit :

  1. Connectez-vous à l'AWS CLI.
  2. Exécutez la commande create-ip-set pour créer l'IPSet.
    Remarque : -scope indique si l'IPset est destiné à une distribution CloudFront ou à une application régionale. Les applications régionales incluent Application Load Balancer, Amazon API Gateway, l'API REST, AWS AppSync, l'API GraphQL ou un groupe d'utilisateurs Amazon Cognito.
    La sortie suivante est un exemple d'IPSet régional :
    $ aws wafv2 create-ip-set --name ipv4-block --scope REGIONAL --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-west-1{
        "Summary": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
        }
    }
    La sortie suivante est un exemple d'IPSet CloudFront :
    $ aws wafv2 create-ip-set --name ipv4-block-cf --scope CLOUDFRONT --ip-address-version IPV4 --addresses 10.1.1.1/32 --region us-east-1{
        "Summary": {
            "Name": "ipv4-block-cf",
            "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
            "Description": "",
            "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
            "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
        }
    }

Répertorier les IPset

Pour répertorier tous vos IPset, exécutez la commande list-ip-sets.

La sortie suivante est un exemple d'IPSet régional :

$ aws wafv2 list-ip-sets --scope REGIONAL --region us-west-1{
    "NextMarker": "ipv4-block",
    "IPSets": [
        {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "LockToken": "c54cc0d5-42dc-4b4b-9335-a86c7ad784a6",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
        }
    ]
}

La sortie suivante est un exemple d'IPSet CloudFront :

$ aws wafv2 list-ip-sets --scope CLOUDFRONT --region us-east-1{
    "NextMarker": "ipv4-block-cf",
    "IPSets": [
        {
            "Name": "ipv4-block-cf",
            "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
            "Description": "",
            "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
            "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
        }
    ]
}

Remarque : Si vous spécifiez une valeur pour Limite et que vous avez plus d'IPsets que cette valeur, AWS WAF renvoie une valeur NextMarker. Pour plus d'informations, consultez la section Paramètres de requête.

Obtenir un IPset

Pour récupérer un IPSet spécifique, exécutez la commande get-ip-set.

La sortie suivante est un exemple d'IPSet régional :

$ aws wafv2 list-ip-sets --scope CLOUDFRONT --region us-east-1{
    "NextMarker": "ipv4-block-cf",
    "IPSets": [
        {
            "Name": "ipv4-block-cf",
            "Id": "1fef3860-8b6e-4201-8a56-6d8d49e93057",
            "Description": "",
            "LockToken": "9e9bc59e-678e-4b83-98d8-5a4c119b0123",
            "ARN": "arn:aws:wafv2:us-east-1:1111222233334444:global/ipset/ipv4-block-cf/1fef3860-8b6e-4201-8a56-6d8d49e93057"
        }
    ]
}

Mettre à jour un IPset

Pour mettre à jour un IPSet, exécutez la commande update-ip-set. Vous devez utiliser une syntaxe abrégée ou un fichier JSON.

Syntaxe abrégée

Procédez comme suit :

  1. Exécutez la commande get-ip-set pour obtenir l’ID et le LockToken pour l’IPSet que vous souhaitez mettre à jour.
    La sortie suivante est un exemple de syntaxe abrégée pour obtenir un IPSet :

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id fbce0c08-476b-4487-af2c-e38f0303ac5f --region eu-west-1
    {
        "IPSet":
        {
           "Name": "ipv4-block",
           "Id": "fbce0c08-476b-4487-af2c-e38f0303ac5f",
           "ARN": "arn:aws:wafv2:eu-west-1:11111111:regional/ipset/ipv4-block/fbce0c08-476b-4487-af2c-e38f0303ac5f",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
            "10.1.1.2/32",
            "10.1.1.1/32"
                ]
        },
     "LockToken": "14562ba3-f99b-4e39-a232-51a703302c88"
    }

    Remarque : AWS WAF utilise un jeton pour un verrouillage optimiste. Pour modifier l'entité associée au jeton, incluez le jeton pour les opérations, telles que la mise à jour et la suppression. AWS WAF utilise le jeton pour confirmer qu'aucune modification n'a été apportée à l'entité après votre dernière récupération. Si une modification a été apportée, la mise à jour échoue avec WAFOptimisticLockException. Pour résoudre ce problème, réexécutez la commande get-ip-set. Puis, utilisez le nouveau jeton renvoyé par l'opération.

  2. Exécutez la commande update-ip-set pour remplacer la configuration d’IPSet actuelle par votre nouvelle configuration. Incluez les valeurs de ID et LockToken :

    $ aws wafv2 update-ip-set --name ipv4-block --scope REGIONAL --id 952c5e24-2352-4a1e-a90b-01499086be1b --addresses "10.1.1.1/32" "10.1.1.2/32" --lock-token c54cc0d5-42dc-4b4b-9335-a86c7ad784a6 --region us-west-1{
        "NextLockToken": "a459c121-f160-4475-9352-fa602ff33df7"
    }
  3. Exécutez la commande get-ip-set pour vérifier les modifications apportées à l'IPSet. Incluez les valeurs de ID et NextLockToken :

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{
        "IPSet": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
                "10.1.1.2/32",
                "10.1.1.1/32"
            ]
        },
        "LockToken": "a459c121-f160-4475-9352-fa602ff33df7"
    }

Fichier JSON

Procédez comme suit :

  1. Utilisez votre éditeur préféré pour créer un fichier JSON avec la syntaxe de votre requête mise à jour :

    $ nano ip.json{
        "Addresses": ["10.1.1.0/24", "10.1.2.0/24", "10.1.3.0/24"]
    }
  2. Exécutez la commande get-ip-set pour obtenir l'ID et le LockToken de l'IPSet que vous souhaitez mettre à jour :

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{
        "IPSet": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
                "10.1.1.2/32",
                "10.1.1.1/32"
            ]
        },
        "LockToken": "a459c121-f160-4475-9352-fa602ff33df7"
    }
  3. Exécutez la commande update-ip-set pour remplacer la configuration d’IPSet actuelle par votre nouvelle configuration. Ne répertoriez pas les adresses IP en ligne. Référez-vous plutôt au fichier JSON. Incluez les valeurs de ID et LockToken :

    $ aws wafv2 update-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --lock-token a459c121-f160-4475-9352-fa602ff33df7 --region us-west-1 --cli-input-json file://ip.json{
        "NextLockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480"
    }
  4. Exécutez la commande get-ip-set pour vérifier les modifications apportées à l'IPSet. Incluez les valeurs de ID et NextLockToken :

    $ aws wafv2 get-ip-set --scope REGIONAL --name ipv4-block --id 952c5e24-2352-4a1e-a90b-01499086be1b --region us-west-1{
        "IPSet": {
            "Name": "ipv4-block",
            "Id": "952c5e24-2352-4a1e-a90b-01499086be1b",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b",
            "Description": "",
            "IPAddressVersion": "IPV4",
            "Addresses": [
                "10.1.1.0/24",
                "10.1.2.0/24",
                "10.1.3.0/24"
            ]
        },
        "LockToken": "238872dc-fcfb-4a45-93fd-115cfcc94480"
    }

Informations connexes

AWS WAFV2

Actions, ressources et clés de condition pour AWS WAF V2

Création et gestion d'un ensemble d'adresses IP

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 10 mois