Amazon Web Services 한국 블로그

Amazon EC2/RDS 새 보안 그룹 규칙 ID를 사용하여 보안 그룹 쉽게 관리하기

AWS에서는 기본 IT 인프라가 아닌 비즈니스에 집중할 수 있도록 끊임없이 혁신하고 있습니다. 때때로 당사는 새로운 서비스주요 기능을 출시합니다. 때때로 당사는 전문적인 직무와 관련된 삶을 더 편하게 만드는 세부 사항에 집중합니다.

오늘은 이러한 차이를 만드는 작은 세부 사항 중 하나인 VPC 보안 그룹 규칙 ID를 발표하게 되어 기쁘게 생각합니다.

보안 그룹은 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 또는 Amazon Relational Database Service(RDS) 데이터베이스와 같은 클라우드 리소스를 위한 가상 방화벽 역할을 합니다. 수신 및 송신 네트워크 트래픽을 제어합니다. 보안 그룹은 보안 그룹 규칙, 프로토콜 조합, 소스 또는 대상 IP 주소와 포트 번호, 선택적 설명으로 구성됩니다.

AWS CLI(명령줄 인터페이스) 또는 API를 사용하여 보안 그룹 규칙을 수정하는 경우 규칙을 식별하기 위해 이러한 모든 요소를 지정해야 합니다. 이렇게 하면 입력 또는 읽기가 번거롭고 오류가 발생하기 쉬운 긴 CLI 명령이 생성됩니다. 예:

aws ec2 revoke-security-group-egress \
         --group-id sg-0xxx6          \
         --ip-permissions IpProtocol=tcp, FromPort=22, ToPort=22, IpRanges='[{CidrIp=192.168.0.0/0}, {84.156.0.0/0}]'

새로운 소식
보안 그룹 규칙 ID는 보안 그룹 규칙의 고유 식별자입니다. 보안 그룹에 규칙을 추가하면 이러한 식별자가 만들어지고 보안 그룹 규칙에 자동으로 추가됩니다. 보안 그룹 ID는 AWS 리전에서 고유합니다. 다음은 Amazon VPC 콘솔인바운드 규칙 편집 페이지입니다.

보안 그룹 규칙 ID

이미 언급한대로 규칙을 만들면 식별자가 자동으로 추가됩니다. 예를 들어 CLI를 사용하는 경우:

aws ec2 authorize-security-group-egress                                  \
        --group-id sg-0xxx6                                              \
        --ip-permissions IpProtocol=tcp,FromPort=22,ToPort=22,           \
                         IpRanges=[{CidrIp=1.2.3.4/32}]
        --tag-specifications                                             \
                         ResourceType='security-group-rule',             \
                         "Tags": [{                                      \
                           "Key": "usage", "Value": "bastion"            \
                         }]

업데이트된 AuthorizeSecurityGroupEgress API 작업은 이제 보안 그룹 규칙 ID를 포함하여 보안 그룹 규칙에 대한 세부 정보를 반환합니다.

"SecurityGroupRules": [
    {
        "SecurityGroupRuleId": "sgr-abcdefghi01234561",
        "GroupId": "sg-0xxx6",
        "GroupOwnerId": "6800000000003",
        "IsEgress": false,
        "IpProtocol": "tcp",
        "FromPort": 22,
        "ToPort": 22,
        "CidrIpv4": "1.2.3.4/32",
        "Tags": [
            {
                "Key": "usage",
                "Value": "bastion"
            }
        ]
    }
]

또한 두 가지 API 작업, 즉 DescribeSecurityGroupRulesModifySecurityGroupRulesVPC API에 추가하고 있습니다. 이러한 규칙을 사용하여 보안 그룹 규칙을 각각 나열하거나 수정할 수 있습니다.

어떤 이점이 있습니까?
보안 그룹 규칙 ID의 첫 번째 이점은 CLI 명령을 간소화하는 것입니다. 예를 들어 이전에 사용된 RevokeSecurityGroupEgress 명령을 이제 다음과 같이 표현할 수 있습니다.

aws ec2 revoke-security-group-egress \
         --group-id sg-0xxx6         \
         --security-group-rule-ids "sgr-abcdefghi01234561"

더 짧고 쉬워졌죠?

두 번째 이점은 다른 많은 AWS 리소스와 마찬가지로 보안 그룹 규칙에 태그를 지정할 수 있다는 것입니다. 태그를 사용하여 여러 보안 그룹에서 보안 그룹 규칙 집합을 빠르게 나열하거나 식별할 수 있습니다.

앞의 예에서는 보안 그룹 규칙을 만들 때 tag-on-create 기술을 사용하여 --tag-specifications가 있는 태그를 추가했습니다. 나중에 ID를 사용하여 기존 보안 그룹 규칙에서 태그를 추가할 수도 있습니다.

aws ec2 create-tags                         \
        --resources sgr-abcdefghi01234561   \
        --tags "Key=usage,Value=bastion"

회사에서 EC2 인스턴스 집합에 대한 액세스를 승인하지만 네트워크 연결이 온프레미스 배스천 호스트에서 시작된 경우에만 권한을 부여한다고 가정해 보겠습니다. 보안 그룹 규칙은 IpProtocol=tcp, FromPort=22, ToPort=22, IpRanges='[{1.2.3.4/32}]'가 됩니다. 여기서 1.2.3.4는 온프레미스 배스천 호스트의 IP 주소입니다. 이 규칙은 여러 보안 그룹에 복제될 수 있습니다.

온프레미스 배스천 호스트 IP 주소가 변경되면 어떻게 해야 합니까? 영향을 받는 모든 규칙에서 IpRanges 파라미터를 변경해야 합니다. 보안 그룹 규칙에 usage : bastion 태그를 지정하면 이제 DescribeSecurityGroupRules API 작업으로 AWS 계정의 보안 그룹에 사용되는 보안 그룹 규칙을 나열한 다음 usage : bastion 태그에 사용 결과를 필터링할 수 있습니다. 이렇게 하면 업데이트하려는 보안 그룹 규칙을 빠르게 식별할 수 있었습니다.

aws ec2 describe-security-group-rules \
        --max-results 100 
        --filters "Name=tag-key,Values=usage" --filters "Name=tag-value,Values=bastion" 

그러면 다음과 같은 결과를 얻을 수 있습니다.

{
    "SecurityGroupRules": [
        {
            "SecurityGroupRuleId": "sgr-abcdefghi01234561",
            "GroupId": "sg-0xxx6",
            "GroupOwnerId": "40000000003",
            "IsEgress": false,
            "IpProtocol": "tcp",
            "FromPort": 22,
            "ToPort": 22,
            "CidrIpv4": "1.2.3.4/32",
            "Tags": [
                {
                    "Key": "usage",
                    "Value": "bastion"
                }
            ]
        }
    ],
    "NextToken": "ey...J9"
}

평소와 같이 --next-token이 있는 NextToken 값을 다시 전달하고 동일한 API 호출을 실행하여 결과 페이지 매김을 관리할 수 있습니다.

가용성
보안 그룹 규칙 ID는 모든 상용 AWS 리전에서 VPC 보안 그룹 규칙에 대해 무료로 사용할 수 있습니다.

이는 소규모의 점진적 변화처럼 보일지 모르지만, 실제로 보안 그룹 및 보안 그룹 규칙을 관리하기 위한 향후 추가 기능을 위한 토대가 됩니다. 향후 업데이트를 기다려 주세요!

– Seb