Giter Club home page Giter Club logo

aws-iprange-change-notifier's Introduction

aws-iprange-change-notifier

AWS에서 서비스에 사용하고 있는 Public IP들의 대역은 공식적으로 AWS에서 IP 대역 JSON형식으로 제공해주고 있습니다.

참고 : https://ip-ranges.amazonaws.com/ip-ranges.json

많은 사용들이 이러한 IP 대역을 주기적으로 확인하여 방화벽 규칙을 관리하는데 사용하고 있기는 합니다.
그러나 IP 대역의 변경이 주기적으로 발생하지는 않아, 변경이 발생되었을때 이를 신속히 인지하고 적절한 대응이 필요하게 됩니다.

이 리포지토리는 이를 이용하여 IP 대역의 변경이 발생되었을때, lambda를 활용하여 변경된 내용에 대해서 지정된 메일주소로 안내를 해주게 됩니다.

AWS 사용 서비스

  • IAM : 람다 실행에 대한 접근 권한 통제
  • Lambda : IP 변경에 대해 검증하고 필터링
  • SNS : IP 변경에 대해 구독하고 lambda와 연결하고 결과를 보낼 이메일 등록
  • S3 : IP 변경에 대한 정보를 저장

diagram

IAM Policy & Role

lambda에서 실행시 참조하게된 policy 정책은 code를 참고

Lambda

Basic Settings

  • Runtime : python 3.6
  • Memory : 128 MB
  • Timeout : 3 sec

Environment Variables

Key Value comment
bucket [bucket name] 기존 IP정보와 결과를 저장하게될 s3 저장소 이름
key [object key] IP정보를 저장할 S3 오브젝트 키
region [region name] ip-ranges.json내 region
service [service name] ip-ranges.json내 service
snsarn [email sns arn] 결과를 email로 전송하기 위한 SNS ARN

본 코드는 cloudfront ip변경만 추적하는 예제이고, cloudfront는 Global서비스이니 region도 GLOBAL로 설정하면 되나, S3같은 경우 region도 희망하는 지역으로 환경변수를 설정하면 된다.

ip-ranges.json 구문

{
  "syncToken": "0123456789",
  "createDate": "yyyy-mm-dd-hh-mm-ss",
  "prefixes": [
    {
      "ip_prefix": "cidr",
      "region": "region",
      "network_border_group": "network_border_group",
      "service": "subset"
    }
  ],
  "ipv6_prefixes": [
    {
      "ipv6_prefix": "cidr",
      "region": "region",
      "network_border_group": "network_border_group",
      "service": "subset"
    }
  ]  
}

SNS

AWS에서는 앞서 언급 했던것처럼 JSON형식으로 IP 대역을 제공해 주고 있으나, SNS에서 Topic으로 수신할수 있게도 ARN을 제공해 주고 있다.

arn:aws:sns:us-east-1:806199016981:AmazonIpSpaceChanged

NOTE:
SNS에서 위 Topic ARN을 활용하여 구성할시 동일한 미국 동부(N.Virginia) 리전에서 구독을 생성해야 합니다. (Lambda 위치는 상관없음)

Reference URL :

  1. https://docs.aws.amazon.com/ko_kr/general/latest/gr/aws-ip-ranges.html#subscribe-notifications
  2. https://aws.amazon.com/blogs/aws/subscribe-to-aws-public-ip-address-changes-via-amazon-sns/

S3

lambda에서 사용한 임시파일과 최종 결과 파일을 저장하는 용도로 사용한다.

aws-iprange-change-notifier's People

Contributors

bobphul avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.