Comment créer, répertorier, obtenir ou mettre à jour des IPSets AWS WAFV2 à l'aide de l'AWS CLI ?

Lecture de 6 minute(s)
0

Comment créer, répertorier, obtenir ou mettre à jour un IPSet dans AWS WAFV2 à l'aide de l'interface de la ligne de commande AWS (AWS CLI) ?

Brève description

Un IPSet spécifie les requêtes Web à autoriser ou à bloquer en fonction des adresses IP d'où proviennent ces requêtes. Vous pouvez utiliser un IPSet afin de définir un ensemble d'adresses IP pour une liste de contrôle d'accès (ACL) Web à l'aide de l'AWS CLI.

Solution

Remarque : si vous recevez des erreurs lors de l'exécution de commandes depuis l'interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente de l'AWS CLI.

Cette solution requiert l'utilisation de l'interface de la ligne de commande wafv2 pour la création d'un IPSet dans une région AWS spécifique ou un IPSet global à utiliser dans Amazon CloudFront.

Important : avant de continuer, assurez-vous que la région AWS par défaut de l'AWS CLI est la même que celle dans laquelle vous souhaitez créer l'IPSet. Dans le cas contraire, vous devez spécifier dans vos commandes la région AWS appropriée pour l'IPSet (à l'aide de l'option —region). Lorsque vous utilisez Amazon CloudFront, vous devez créer l'IPSet dans la région USA Est (Virginie du Nord) Région us-east-1.

Création d'un IPSet

1.     Connectez-vous à AWS CLI.

2.    Créez un IPSet à l'aide de la commande create-ip-set.

Remarque : l'option —scope spécifie si cet IPSet est destiné à une distribution Amazon CloudFront ou à une application régionale. Les applications régionales incluent : Application Load Balancer (ALB), Amazon API Gateway, API REST, AWS AppSync, API GraphQL ou un groupe d'utilisateurs Amazon Cognito.

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"
    }
}

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 IPSets

Afin de répertorier les IPSets, utilisez la commande list-ip-sets. La réponse renvoie une série d'objets IPSetSummary.

Exemple de sortie 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"
        }
    ]
}

Exemple de sortie 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 Limit (Limite) et que le nombre de vos IPSets est supérieur à celle-ci, AWS WAFV2 renvoie une valeur NextMarker. Consultez Request parameters (Paramètres de demande).

Mise à jour d'un IPSet

Afin de mettre à jour un IPSet, utilisez la commande update-ip-set avec une syntaxe abrégée ou un fichier JSON.

Méthode avec syntaxe abrégée

1.    Utilisez la commande list-ip-sets afin de récupérer l'Id d'IPSet ainsi que le LockToken pour l'IPSet que vous souhaitez mettre à jour.    

Remarque : AWS WAFV2 utilise un jeton pour le verrouillage optimiste. Afin d'apporter des modifications à l'entité associée au jeton, fournissez le jeton lors d'opérations telles que update (mettre à jour) et delete (supprimer). WAFV2 utilise le jeton pour confirmer qu'aucune modification n'a été apportée à l'entité depuis la dernière fois que vous l'avez récupérée. Si une modification a été apportée, la mise à jour échoue avec l'exception WAFOptimisticLockException. Dans ce cas, effectuez une opération list (répertorier) ou get (obtenir) supplémentaire, puis utilisez le nouveau jeton renvoyé par cette opération.

Exemple de syntaxe abrégée :

$ 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"
        }
    ]
}

2.    Utilisez la commande update-ip-set afin de remplacer la configuration d'IPSet actuelle par la nouvelle configuration souhaitée. Vous devez inclure l'Id d'IPSet ainsi que le LockToken récupérés à l'étape 1.

Exemple :

$ 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.    Utilisez la commande get-ip-set afin de vérifier les modifications apportées à l'IPSet. Vous devez inclure l'Id d'IPSet de l'étape 1 et le NextLockToken de l'étape 2.

Exemple :

$ 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"
}

Méthode avec fichier JSON

1.    Créez un fichier JSON (tel que ip.json) avec la syntaxe de votre requête de mise à jour. Vous pouvez utiliser l'éditeur de votre choix.

Exemple :

$ nano ip.json
{
    "Addresses": ["10.1.1.0/24", "10.1.2.0/24", "10.1.3.0/24"]
}

2.    Utilisez les commandes list-ip-sets ou get-ip-set afin de récupérer l'Id d'IPSet ainsi que le LockToken pour l'IPSet que vous souhaitez mettre à jour.

Exemple :

$ 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": "238872dc-fcfb-4a45-93fd-115cfcc94480",
            "ARN": "arn:aws:wafv2:us-west-1:1111222233334444:regional/ipset/ipv4-block/952c5e24-2352-4a1e-a90b-01499086be1b"
        }
    ]
}

3.    Utilisez la commande update-ip-set afin de remplacer la configuration d'IPSet actuelle par la nouvelle configuration souhaitée. Plutôt que d'inclure les adresses en ligne, vous devrez référencer le fichier « ip.json » créé à l'étape 2. Vous devez inclure l'Id d'IPSet ainsi que le LockToken récupérés à l'étape 2.    

Exemple :

$ 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.    Utilisez la commande get-ip-set afin de vérifier les modifications apportées à l'IPSet. Vous devez inclure l'Id d'IPSet de l'étape 2 et le NextLockToken de l'étape 3.

Exemple :

$ 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 WAFV2

Utilisation des conditions de correspondance d'adresse IP

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an