개발 이모저모/Python

[Python] NACL Deny 정책 넣기

Kobby 2022. 12. 10. 16:57

Python을 활용한 업무의 일부를 공유하는 게시물입니다.

아직 공부하는 입장이기에 부족한 부분이 있을 수 있습니다. 지적해주시면 적극 반영하도록 하겠습니다.
퍼가시거나, 업무에서 도움이 되었다면 댓글 하나씩 부탁드립니다 :) 감사합니다.


Summary

NACL_ID를 입력받아서 해당 NACL에 지정된 IP/Port 기반으로 차단 정책을 넣는 코드이다.

NACL_ID, def change_nacl에서 CidrBlock, PortRange를 변경하여 사용하면 된다.

#! /usr/bin/ python3

from multiprocessing.sharedctypes import Value
import boto3
from requests import session
import re

#Define AWS Account Profile
PROFILES = 'service-name'   <<< 상황에 맞게 수정하시면 됩니다.
AWS_REGION = 'ap-northeast-2'   <<< 상황에 맞게 수정하시면 됩니다.
NACL_ID = ['acl-xxxxxxx','acl-xxxxxxx']   <<< 상황에 맞게 수정하시면 됩니다.

session = boto3.Session(profile_name=PROFILES, region_name=AWS_REGION)
client = session.client('ec2')

def chagne_nacl(): <<< 상황에 맞게 수정하시면 됩니다.
    print('\n----------Start NACL Change----------')
    for id in NACL_ID:
        a = client.create_network_acl_entry(
            CidrBlock='192.168.0.0/16',
            Egress=False,
            NetworkAclId=id,
            PortRange={
                'From': 22,
                'To': 22
            },
            Protocol='6',
            RuleAction='allow',
            RuleNumber=31
        )

        a = client.create_network_acl_entry(
            CidrBlock='192.168.0.0/16',
            Egress=False,
            NetworkAclId=id,
            PortRange={
                'From': 22,
                'To': 22
            },
            Protocol='6',
            RuleAction='allow',
            RuleNumber=32
        )
        print('\n----------{} NACL change complete----------'.format(id)) 
    print('\n----------Finish NACL Change----------')
    
if __name__ == "__main__":
    chagne_nacl()