AWS CLI를 사용하여 AWS WAF IPSet를 생성, 나열 또는 업데이트하려면 어떻게 해야 하나요?
최종 업데이트 날짜: 2020년 1월 22일
AWS 명령줄 인터페이스(AWS CLI)를 사용하여 AWS WAF에서 IPSet를 생성, 나열 또는 업데이트하려면 어떻게 해야 하나요?
간략한 설명
IPSet는 요청을 시작한 IP 주소를 기반으로 허용하거나 차단할 웹 요청을 지정합니다. IPSet를 사용하면 AWS CLI로 웹 ACL(액세스 제어 목록)에 포함할 IP 주소 집합을 정의할 수 있습니다.
해결 방법
참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다.
이 해결 방법은 waf-regional CLI(botocore 버전 1.4.85 이상 사용 가능)를 사용하여 특정 AWS 리전에서 IPSet를 생성합니다. Amazon CloudFront에서 글로벌 IPSet를 생성하는 경우 waf CLI를 사용할 수 있습니다.
중요: waf-regional 명령을 사용할 때는 계속하기 전에 AWS CLI의 기본 리전을 확인하고 해당 리전이 IPSet를 생성하고자 하는 위치인지 확인하세요. 그렇지 않으면 명령에서 IPSet에 대해 올바른 AWS 리전을 지정해야 합니다(--region 옵션 사용).
IPSet 생성
1. AWS CLI에 로그인합니다.
2. get-change-token 명령을 사용하여 변경 토큰을 생성합니다.
참고: 변경 토큰은 애플리케이션이 충돌하는 요청을 AWS WAF에 제출하지 못하도록 합니다. 변경 토큰을 가져와서 AWS WAF 객체 생성, 업데이트 또는 삭제 요청에 포함시켜야 합니다. 각 요청은 고유한 변경 토큰을 사용해야 합니다. 자세한 내용은 GetChangeToken을 참조하세요.
출력 예:
$ aws waf-regional get-change-token
{
"ChangeToken": "96836241-b667-4f0a-a655-e4bc49eaa2c4"
}
3. create-ip-set 명령을 사용하여 IPSet를 생성합니다. 출력 예:
$ aws waf-regional create-ip-set --name test_ipset --change-token 96836241-b667-4f0a-a655-e4bc49eaa2c4
{
"IPSet": {
"IPSetId": " bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Name": "test_ipset",
"IPSetDescriptors": []
},
"ChangeToken": "96836241-b667-4f0a-a655-e4bc49eaa2c4"
}
IPSet 나열
IPSet를 나열하려면 list-ip-sets 명령을 사용합니다. 응답은 IPSetSummary 객체의 배열을 반환합니다.
출력 예:
$ aws waf-regional list-ip-sets
{
"IPSets": [
{
"IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Name": "test-ipset"
}
],
"NextMarker": "bd37ef8c-102b-4d7a-9532-80fb97e4c281"
}
참고: Limit에 값을 지정하고 이 값보다 많은 IPSet가 있으면 AWS WAF가 NextMarker 값을 반환합니다. 요청 파라미터를 참조하세요.
IPSet 업데이트
IPSet를 업데이트하려면 update-ip-set 명령을 간편 구문 또는 JSON 파일과 함께 사용합니다.
참고: API 호출당 최대 1,000개의 IP 주소를 업데이트할 수 있습니다.
간편 구문 방식:
$ aws waf-regional update-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281 --change-token c47ddcba-d128-4ec9-acd6-ce981c6655c5 --updates Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.1/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.2/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.3/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.4/32"}' Action="INSERT",IPSetDescriptor='{Type="IPV4",Value="192.168.2.5/32"}'
{
"ChangeToken": " c47ddcba-d128-4ec9-acd6-ce981c6655c5"
}
JSON 파일 방식:
1. 이전 섹션 IPSet 생성에서 설명한 대로 get-change-token 명령을 사용하여 변경 토큰을 생성합니다.
2. 선호하는 편집기를 사용하여 업데이트 요청 구문으로 JSON 파일(예: test.json)을 생성합니다. 예를 들면 다음과 같습니다.
$ nano test.json
{
"ChangeToken": "b3d8178a-666a-484a-92af-1dcd02cafcfa",
"IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Updates": [{
"Action": "DELETE",
"IPSetDescriptor": {
"Type": "IPV4",
"Value": "192.168.2.5/32"
}
}]
}
3. update-ip-set 명령을 사용하여 방금 생성한 JSON 파일로 IPSet에 대한 요청된 변경을 수행합니다. 예를 들면 다음과 같습니다.
$ aws waf-regional update-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281 --cli-input-json file:///home/ec2-user/test.json
{
"ChangeToken": "b3d8178a-666a-484a-92af-1dcd02cafcfa"
}
4. get-ip-set 명령을 사용하여 IPSet에 대해 요청한 변경 사항을 확인합니다. 예를 들면 다음과 같습니다.
$ aws waf-regional get-ip-set --ip-set-id bd37ef8c-102b-4d7a-9532-80fb97e4c281
{
"IPSet": {
"IPSetId": "bd37ef8c-102b-4d7a-9532-80fb97e4c281",
"Name": "test-ipset",
"IPSetDescriptors": [
{
"Type": "IPV4",
"Value": "192.168.2.2/32"
},
{
"Type": "IPV4",
"Value": "192.168.2.3/32"
},
{
"Type": "IPV4",
"Value": "192.168.2.1/32"
},
{
"Type": "IPV4",
"Value": "192.168.2.4/32"
}
]
}
}