[실패담] EC2 Instance Connect의 SG 변경 사항

3907 단어 AWSPythonEC2boto3tech

개막사

  • EC2 실례를 만들어 안전팀의 입국을 현재 사용하고 있는 IP에만 한정하고terminal에서 연결한다.
  • 그러나 EC2 Instance Connect의 브라우저를 기반으로 연결을 시도하는 중 다음과 같은 오류가 발생하여 보안 그룹의 규칙을 변경하는 것에 대해 논의했습니다.

  • "세션 관리자를 사용합니다."그렇긴 하지만 일단 놔두자.
  • EC2 Instance Connect

  • 브라우저에서 EC2 인스턴스를 연결할 수 있는 서비스입니다.
    https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html
  • 브라우저를 기반으로 연결하려면 다음 IP 주소를 허가해야 합니까?
    https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instance-connect-set-up.html#ec2-instance-connect-setup-security-group
    https://ip-ranges.amazonaws.com/ip-ranges.json
  • IPv4 주소만 4500개라니 무섭네요.
    → EC2 Intance Connect는 20개입니다.(2020년 4월 4일 기준)
    나는 어쨌든 그 IP 주소를 허락하고 싶어서 아래의 기행을 진행하였다.

    Python(SDK)을 사용한 SG 변경 사항


    아래 파일에서 보듯이 Pythn(SDK:boto3)을 사용하여 안전팀의 입국을 변경하려고 시도합니다.
    import json
    import sys
    import boto3
    def main(args):
        security_group_id = args[1]
        description = args[2]
        client = boto3.client("ec2")
    
        json_open = open("ip_range.json","r")
        json_load = json.load(json_open)
    
        ipv4_list = [i.get("ip_prefix") for i in json_load["prefixes"]]
        ipv6_list = [i.get("ipv6_prefix") for i in json_load["ipv6_prefixes"]]
    
        for i in ipv4_list:
            authorize_ssh = client.authorize_security_group_ingress(
                GroupId = security_group_id,
                IpPermissions=[
                    {
                        'FromPort': 22,
                        'IpProtocol': 'tcp',
                        'IpRanges': [
                            {
                                'CidrIp': i,
                                'Description': description,
                            },
                        ],
                        'ToPort': 22
                    },
                ]
            )
    
    if __name__ == '__main__':
        args = sys.argv
        main(args)
    
    대략적으로 말하면 iprange.제이슨에서 아까 제이슨이 만든 거 복사했어.
    Pytohon 파일에 sg의 ID와 sg의 설명을 주고 boto3에서 대상의 sg에 대해 IP 목록에 따라 22번 포트의 허가를 추가하는 느낌을 줍니다.
    그래서 다음과 같은 오류가 출력되었습니다.
    botocore.exceptions.ClientError: An error occurred (RulesPerSecurityGroupLimitExceeded) when calling the AuthorizeSecurityGroupIngress operation: The maximum number of rules per security group has been reached.
    
    눈치챘어?예, SG 규칙 수의 상한선을 돌파했습니다.
    https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/amazon-vpc-limits.html#vpc-limits-security-groups
    참고로 규칙은 입국과 아웃 시 각각 60개만 등록할 수 있다.
    완전 맹점...

    해결책을 모르니까 이 기사를 보신 분이 아시면 교수님을 얻을 수 있으면 좋겠어요.

    실패에서 배운 것

  • 안전팀의 상한선은 60개 규칙에만 등록할 수 있으니 주의하세요!
  • 세션 관리자를 사용하십시오!
  • AWS 초보자 기사입니다. 읽어주셔서 감사합니다.🙇‍♂️

    【추기】EC2 실례 연결의 IP 주소 제어가 성공하면


    다음 기사는 본 보도의 속편을 기록하였다.
    실제로 기능을 실현하고 싶으신 분들은 읽어주세요.
    https://zenn.dev/stakakey/articles/09c0e208e39786

    좋은 웹페이지 즐겨찾기