끄적이는 보송

[Python] Python을 이용해 AWS Security Group 생성하기 본문

STUDY/스크립트&코드

[Python] Python을 이용해 AWS Security Group 생성하기

끄적이는 보송 2023. 2. 20. 18:06
반응형

Security Group을 생성하고 많은 양의 Rule을 반복적으로 입력하는 일은 콘솔 환경에서 꾀나 고통스러운 일이다. 실수는 덤이다. 그래서 Python 코드로 한번 짜봤다.

하나의 룰에 여러 Source를 입력할 수도, Security Group ID가 source 인 경우도, 포트 번호가 범위인 경우 등등을 고려해 보았다.

import boto3

# EC2 Client
ec2 = boto3.client('ec2', region_name='<your_region>')

# VPC Client
vpc_id = '<vpc_id>'

# Create a new Security Group
response = ec2.create_security_group(
    Description = 'security group description',
    GroupName = 'MySecurityGroup',
    VpcId = vpc_id
)

# Get the ID of the newly created Security Group
security_group_id = response['GroupId']

# Add inbound rules to the Security Group
data = ec2.authorize_security_group_ingress(
    GroupId=security_group_id,
    IpPermissions=[
        {
        	# 여러 CIDR 대역을 하나의 RULE에 지정
            'IpProtocol': 'tcp',
            'FromPort': 80,
            'ToPort': 80,
            'IpRanges': [
                {'CidrIp': '192.168.0.0/24', 'Description': 'site1'}, 
                {'CidrIp': '192.168.20.0/24', 'Description': 'site2'}, 
                {'CidrIp': '192.168.30.0/24', 'Description': 'site3'}
                ],
            # Source가 IP주소가 아닌 Security Group은 아래와 같이 지정
            'UserIdGroupPairs': [
                {'GroupId' : '<security_group_id>', 'VpcId' : vpc_id, 'Description': 'example_server'}
                ]
        },
       {
            'IpProtocol': 'tcp',
            'FromPort': 443,
            'ToPort': 443,
            'IpRanges': [
                {'CidrIp': '192.168.0.0/24', 'Description': 'site1'}, 
                {'CidrIp': '192.168.20.0/24', 'Description': 'site2'}, 
                {'CidrIp': '192.168.30.0/24', 'Description': 'site3'}
                ],
            'UserIdGroupPairs': [
                {'GroupId' : '<security_group_id>', 'VpcId' : vpc_id, 'Description': 'example_server'}
                ]
        },
        {
        	# 포트 범위 지정
            'IpProtocol': 'tcp',
            'FromPort': 8080,
            'ToPort': 8089,
            'IpRanges': [
                {'CidrIp': '192.168.0.0/24', 'Description': 'site1'}, 
                {'CidrIp': '192.168.20.0/24', 'Description': 'site2'}, 
                {'CidrIp': '192.168.30.0/24', 'Description': 'site3'}
                ],
            'UserIdGroupPairs': [
                {'GroupId' : '<security_group_id>', 'VpcId' : vpc_id, 'Description': 'example_server'}
                ]
        }
    ]
)

print(f'Security Group created with ID: {security_group_id}')
반응형
Comments