AWS CLI를 사용하여 AWS WAFV2 IPSet를 생성, 나열 또는 업데이트하거나 가져오려면 어떻게 해야 하나요?

4분 분량
0

AWS Command Line Interface(AWS CLI)를 사용하여 AWS WAFV2에서 IPSet를 생성, 나열 또는 업데이트하거나 가져오려면 어떻게 해야 하나요?

간략한 설명

IPSet는 요청을 시작한 IP 주소를 기반으로 허용하거나 차단할 웹 요청을 지정합니다. IPSet를 사용하면 AWS CLI로 웹 액세스 제어 목록(ACL)에 포함할 IP 주소 집합을 정의할 수 있습니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생할 경우 AWS CLI의 최신 버전을 사용하고 있는지 확인하세요.

이 해결 방법은 wafv2 CLI를 사용하여 특정 AWS 리전에서 IPSet를 생성하거나 Amazon CloudFront에서 사용할 글로벌 IPSet을 생성합니다.

중요: 진행하기 전에 AWS CLI의 기본 AWS 리전을 확인하여 해당 리전이 IPSet를 생성하려는 리전인지 확인해야 합니다. 그렇지 않으면 명령에서 IPSet에 대해 올바른 리전을 지정해야 합니다(—region 옵션 사용). Amazon CloudFront를 사용하는 경우 미국 동부(버지니아 북부) us-east-1 리전에서 IPSet를 생성해야 합니다.

IPSet 생성

1.     AWS CLI에 로그인합니다.

2.    create-ip-set 명령을 사용하여 IPSet를 생성합니다.

참고: —scope 옵션은 이 IPSet가 Amazon CloudFront 배포용인지 아니면 리전 애플리케이션용인지를 지정합니다. 리전 애플리케이션에는 Application Load Balancer (ALB), Amazon API Gateway, REST API, AWS AppSync, GraphQL API 또는 Amazon Cognito 사용자 풀이 포함됩니다.

리전 IPSet 예제:

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

CloudFront IPSet 예제:

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

IPSet 나열

IPSet를 나열하려면 list-ip-sets 명령을 사용합니다. 응답은 IPSetSummary 객체의 배열을 반환합니다.

리전 IPSet 예제 출력:

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

CloudFront IPSet 예제 출력:

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

참고: Limit에 값을 지정하고 이 값보다 많은 IPSet가 있으면 AWS WAFV2가 NextMarker 값을 반환합니다. Request parameters를 참조하세요.

IPSet 업데이트

IPSet를 업데이트하려면 update-ip-set 명령을 간편 구문 또는 JSON 파일과 함께 사용합니다.

간편 구문 방식

1.    list-ip-sets 명령을 사용하여 업데이트하려는 IPSet의 IPSet IdLockToken을 검색합니다.    

참고: AWS WAFV2는 낙관적 잠금을 위해 토큰을 사용합니다. 토큰과 연결된 엔터티를 변경하려면 updatedelete와 같은 작업에 토큰을 제공하세요. WAFV2는 토큰을 사용하여 엔터티를 마지막으로 검색한 이후에 엔터티가 변경되지 않았는지 확인합니다. 변경이 이루어진 경우 WAFOptimisticLockException과 함께 업데이트가 실패합니다. 이 경우 다른 list 또는 get을 수행한 다음 해당 작업에서 반환된 새 토큰을 사용하세요.

약식 구문 예제:

$ 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.    update-ip-set 명령을 사용하여 현재 IPSet 구성을 원하는 새 구성으로 재정의합니다. 위의 1단계에서 검색한 IPSet IdLockToken을 포함해야 합니다.

예제:

$ 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.    get-ip-set 명령을 사용하여 IPSet에 대한 변경 사항을 검토합니다. 1단계의 IPSet Id와 2단계의 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"
}

JSON 파일 방식

1.    업데이트 요청 구문을 사용하여 JSON 파일(예: ip.json)을 생성합니다. 선호하는 편집기를 사용하여 이 작업을 수행하세요.

예제:

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

2.    list-ip-sets 또는 get-ip-set 명령을 사용하여 업데이트하려는 IPSet의 IPSet IdLockToken을 검색합니다.

예제:

$ 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.    update-ip-set 명령을 사용하여 현재 IPSet 구성을 원하는 새 구성으로 재정의합니다. 주소를 인라인으로 포함시키는 대신 2단계에서 만든 'ip.json' 파일을 참조합니다. 위의 2단계에서 검색한 IPSet IdLockToken을 포함해야 합니다.    

예제:

$ 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.    get-ip-set 명령을 사용하여 IPSet에 대한 변경 사항을 검토합니다. 2단계의 IPSet Id와 3단계의 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"
}

관련 정보

AWS WAFV2

AWS WAFV2에 사용되는 작업, 리소스 및 조건 키

IP 매칭 조건으로 작업

AWS 공식
AWS 공식업데이트됨 일 년 전