AWS Infra
[ AWS ] boto3를 이용한 보안그룹 Any 점검
Pydole
2022. 2. 20. 04:12
AWS 인프라를 관리하면서, EC2의 보안그룹을 정기적으로 점검해야 할 필요가 있어
AWS Boto3를 이용하여 간단히 구현해 보려 한다.
보안그룹이 많아지면, 콘솔창으로는 점검하는 시간 소요는 얼마나 아까운지 모르겠다.
간단한 예로, 인바운드 Any로 오픈된 포트를 점검해보려한다.
IAM 권한은 최소화의 원칙에 맞게 EC2ReadOnlyAccess 권한만 부여하자.
보안점검으로 소스주소 0.0.0.0/0을 기준으로 점검하였지만, 키 값을 이용하여 활용하면 될 것이다.
import boto3
from botocore.exceptions import ClientError
ec2 = boto3.client('ec2')
def sg_check():
response = ec2.describe_security_groups()['SecurityGroups']
for i in response:
sgid = i['GroupId']
for j in i['IpPermissions']:
try:
port = 'ANY' if j['FromPort'] == -1 else j['FromPort']
protocol = j['IpProtocol']
ipaddr = j['IpRanges'][0]['CidrIp']
if ipaddr == '0.0.0.0/0':
print('sgid : %s, port : %s, protocol : %s, ipaddr : %s' %(sgid,port,protocol,ipaddr))
except:
pass
if __name__ == "__main__":
sg_check()
검출이 되면 아래와 같은 형태로 출력이 되는데, 많은 시간을 세이프 하였다.