카테고리 없음
람다 보안그룹 등록
노트에버
2023. 6. 2. 17:11
ChatGPT — Release Notes | OpenAI Help Center
The latest update for ChatGPT
help.openai.com
#설정
google.com 질의 한 ip를 보안그룹에 등록
아웃바운드 tcp 443 등록
보안그룹 아웃바운드 세분화하기 위해 코드를 구현함
import socket
import boto3
import botocore
def get_ip_address(domain_name):
try:
ip_address = socket.gethostbyname(domain_name)
return ip_address
except socket.gaierror:
return None
def lambda_handler(event, context):
# 도메인 설정
domain = "example.com"
# IP 주소 추출
ip_address = get_ip_address(domain)
# 보안 그룹에 IP 주소 및 포트 추가
security_group_id = sg-aaaa"
port = 443
if ip_address and not is_ip_in_security_group(security_group_id, ip_address, port):
add_ip_to_security_group(security_group_id, ip_address, port)
print("보안 그룹에 IP 주소 {}의 포트 {}를 추가했습니다.".format(ip_address, port))
else:
print("보안 그룹에 IP 주소 {}의 포트 {}가 이미 등록되어 있습니다.".format(ip_address, port))
def is_ip_in_security_group(security_group_id, ip_address, port):
# AWS 클라이언트 생성
ec2_client = boto3.client('ec2')
# 보안 그룹 정보 가져오기
response = ec2_client.describe_security_groups(GroupIds=[security_group_id])
security_group = response['SecurityGroups'][0]
# 보안 그룹의 아웃바운드 규칙 검사
for permission in security_group['IpPermissionsEgress']:
if (
permission['IpProtocol'] == 'tcp' and
permission['FromPort'] == port and
{'CidrIp': '{}/32'.format(ip_address)} in permission['IpRanges']
):
return True
return False
def add_ip_to_security_group(security_group_id, ip_address, port):
# AWS 클라이언트 생성
ec2_client = boto3.client('ec2')
# 보안 그룹 업데이트
ec2_client.authorize_security_group_egress(
GroupId=security_group_id,
IpPermissions=[
{
'IpProtocol': 'tcp',
'FromPort': port,
'ToPort': port,
'IpRanges': [{'CidrIp': '{}/32'.format(ip_address)}]
}
]
)