보안 그룹 규칙 - Amazon Virtual Private Cloud

보안 그룹 규칙

보안 그룹의 규칙은 보안 그룹과 연결된 리소스에 도달하도록 허용된 인바운드 트래픽을 제어합니다. 인스턴스에서 나갈 수 있는 아웃바운드 트래픽을 제어합니다.

보안 그룹의 규칙을 추가하거나 제거할 수 있습니다(인바운드 또는 아웃바운드 액세스 권한 부여 또는 취소라고도 함). 규칙은 인바운드 트래픽(수신)이나 아웃바운드 트래픽(송신)에 적용됩니다. 특정 소스 또는 대상에 대한 액세스 권한을 부여할 수 있습니다.

보안 그룹 규칙 기본 사항

  • 허용 규칙을 지정할 수 있지만 거부 규칙은 지정할 수 없습니다.

  • 보안 그룹을 처음 만들 때 인바운드 규칙이 없습니다. 따라서 보안 그룹에 인바운드 규칙을 추가하기 전에는 어떤 인바운드 트래픽도 허용되지 않습니다.

  • 보안 그룹을 처음 생성하면 리소스의 모든 아웃바운드 트래픽을 허용하는 아웃바운드 규칙이 있습니다. 규칙을 제거할 수 있으며 특정 아웃바운드 트래픽만 허용하는 아웃바운드 규칙을 추가할 수 있습니다. 보안 그룹에 아웃바운드 규칙이 없는 경우 어떤 아웃바운드 트래픽도 허용되지 않습니다.

  • 여러 보안 그룹을 리소스와 연결하면 각 보안 그룹의 규칙이 집계되어 액세스 허용 여부를 결정하는 데 사용되는 단일 규칙 집합을 형성합니다.

  • 규칙을 추가, 업데이트 또는 제거할 때 변경 사항은 보안 그룹과 연결된 모든 리소스에 자동으로 적용됩니다. 일부 규칙 변경 사항이 미치는 효과는 트래픽의 추적 방법에 따라 다를 수 있습니다. 자세한 내용은 Amazon EC2 사용 설명서의 연결 추적을 참조하세요.

  • 보안 그룹 규칙을 생성하면 AWS에서는 규칙에 고유한 ID가 할당됩니다. API 또는 CLI를 사용하여 규칙을 수정하거나 삭제할 때 규칙의 ID를 사용할 수 있습니다.

제한 사항

보안 그룹은 'VPC+2 IP 주소'라고도 하는 Route 53 Resolver와 주고받는 DNS 요청을 차단할 수 없습니다(Amazon Route 53 개발자 안내서Amazon Route 53 Resolver 또는 AmazonProvidedDNS 참조). Route 53 Resolver를 통해 DNS 요청을 필터링하려면 Route 53 Resolver DNS 방화벽을 사용하세요.

보안 그룹 규칙의 구성 요소

  • 프로토콜: 허용할 프로토콜. 가장 일반적인 프로토콜은 6(TCP), 17(UDP) 및 1(ICMP)입니다.

  • 포트 범위: TCP, UDP 또는 사용자 지정 프로토콜의 경우 허용할 포트의 범위. 단일 포트 번호(예: 22) 또는 포트 번호의 범위(예: 7000-8000)를 지정할 수 있습니다.

  • ICMP 유형 및 코드: ICMP의 경우, ICMP 유형과 코드. 예를 들어 ICMP 에코 요청에 대해 유형 8을 사용하고 ICMPv6 에코 요청에 대해 유형 128을 입력합니다.

  • 소스 또는 대상: 허용할 트래픽에 대한 소스(인바운드 규칙) 또는 대상(아웃바운드 규칙)입니다. 다음 중 하나를 지정하세요.

    • 단일 IPv4 주소. /32 접두사 길이를 사용해야 합니다. 예: 203.0.113.1/32.

    • 단일 IPv6 주소. /128 접두사 길이를 사용해야 합니다. 예: 2001:db8:1234:1a00::123/128.

    • CIDR 블록 표기법으로 표시된 IPv4 주소의 범위. 예를 들면 203.0.113.0/24입니다.

    • CIDR 블록 표기법으로 표시된 IPv6 주소의 범위. 예를 들면 2001:db8:1234:1a00::/64입니다.

    • 접두사 목록의 ID. 예를 들면 pl-1234abc1234abc123입니다. 자세한 내용은 관리형 접두사 목록을 사용하여 CIDR 블록 그룹화 단원을 참조하십시오.

    • 보안 그룹의 ID. 예를 들면 sg-1234567890abcdef0입니다. 자세한 내용은 보안 그룹 참조 단원을 참조하십시오.

  • (선택 사항) 설명: 나중에 쉽게 식별할 수 있도록 규칙에 대한 설명을 입력할 수 있습니다. 설명 길이는 최대 255자입니다. 허용되는 문자는 a-z, A-Z, 0-9, 공백 및 ._-:/()#,@[]+=;{}!$*입니다.

보안 그룹 참조

보안 그룹을 규칙의 소스 또는 대상으로 지정할 경우 규칙은 보안 그룹과 연결된 모든 인스턴스에 영향을 줍니다. 인스턴스는 인스턴스의 프라이빗 IP 주소를 사용하여 지정된 프로토콜 및 포트를 통해 지정된 방향으로 통신할 수 있습니다.

예를 들어 다음은 보안 그룹 sg-0abcdef1234567890을(를) 참조하는 보안 그룹에 대한 인바운드 규칙을 나타냅니다. 이 규칙에서는 sg-0abcdef1234567890과(와) 연결된 인스턴스에서 발생한 인바운드 SSH 트래픽이 허용됩니다.

소스 프로토콜 포트 범위
sg-0abcdef1234567890 TCP 22

보안 그룹 규칙에서 보안 그룹을 참조할 때 다음 사항에 유의하세요.

  • 두 보안 그룹 모두 동일한 VPC 또는 피어링된 VPC에 속해야 합니다.

  • 참조된 보안 그룹의 규칙은 해당 그룹을 참조하는 보안 그룹에 추가되지 않습니다.

  • 인바운드 규칙의 경우 보안 그룹과 연결된 EC2 인스턴스는 참조된 보안 그룹과 연결된 EC2 인스턴스의 프라이빗 IP 주소로부터 인바운드 트래픽을 수신할 수 있습니다.

  • 아웃바운드 규칙의 경우 보안 그룹과 연결된 EC2 인스턴스는 참조된 보안 그룹과 연결된 EC2 인스턴스의 프라이빗 IP 주소로 아웃바운드 트래픽을 보낼 수 있습니다.

제한 사항

미들박스 어플라이언스를 통해 서로 다른 서브넷에 있는 두 인스턴스 간의 트래픽을 전달하도록 경로를 구성하는 경우 두 인스턴스에 대한 보안 그룹이 인스턴스 간에 트래픽이 흐르도록 허용해야 합니다. 각 인스턴스의 보안 그룹은 다른 인스턴스의 프라이빗 IP 주소 또는 다른 인스턴스가 포함된 서브넷의 CIDR 범위를 소스로 참조해야 합니다. 다른 인스턴스의 보안 그룹을 소스로 참조하면 인스턴스 간에 트래픽이 흐를 수 없습니다.

다음 다이어그램은 두 개의 가용 영역에 있는 서브넷, 인터넷 게이트웨이 및 Application Load Balancer가 있는 VPN을 보여 줍니다. 각 가용 영역에는 웹 서버용 퍼블릭 서브넷과 데이터베이스 서버용 프라이빗 서브넷이 있습니다. 로드 밸런서, 웹 서버 및 데이터베이스 서버에는 별도의 보안 그룹이 있습니다. 다음 보안 그룹 규칙을 생성하여 트래픽을 허용하세요.

  • 인터넷의 HTTP 및 HTTPS 트래픽을 허용하도록 로드 밸런서 보안 그룹에 규칙을 추가합니다. 소스는 0.0.0.0/0.입니다.

  • 로드 밸런서의 HTTP 및 HTTPS 트래픽만 허용하도록 웹 서버의 보안 그룹에 규칙을 추가합니다. 소스는 로드 밸런서에 대한 보안 그룹입니다.

  • 웹 서버의 데이터베이스 요청을 허용하도록 데이터베이스 서버의 보안 그룹에 규칙을 추가합니다. 소스는 웹 서버에 대한 보안 그룹입니다.

두 개의 보안 그룹, 두 개의 가용 영역에 있는 서버, 인터넷 게이트웨이, Application Load Balancer가 있는 VPC입니다. 퍼블릭 서브넷의 웹 서버용 보안 그룹 하나와 프라이빗 서브넷의 데이터베이스 서버용 보안 그룹이 하나 있습니다.

보안 그룹 크기

소스 또는 대상의 유형에 따라 각 규칙이 보안 그룹당 가질 수 있는 최대 규칙 수에 포함되는 방식이 결정됩니다.

  • CIDR 블록을 참조하는 규칙은 하나의 규칙으로 계산됩니다.

  • 다른 보안 그룹을 참조하는 규칙은 참조된 보안 그룹의 크기와 상관없이 하나의 규칙으로 계산됩니다.

  • 고객이 관리하는 접두사 목록을 참조하는 규칙은 접두사 목록의 최대 크기로 계산됩니다. 예를 들어 접두사 목록의 최대 크기가 20인 경우 이 접두사 목록을 참조하는 규칙은 20개의 규칙으로 계산됩니다.

  • AWS 관리형 접두사 목록을 참조하는 규칙은 접두사 목록의 가중치로 계산됩니다. 예를 들어 접두사 목록의 가중치가 10인 경우 이 접두사 목록을 참조하는 규칙은 10개의 규칙으로 계산됩니다. 자세한 내용은 사용 가능한 AWS 관리형 접두사 목록 단원을 참조하십시오.

무효 보안 그룹 규칙

VPC에 다른 VPC와의 VPC 피어링 연결이 있는 경우 또는 다른 계정에 의해 공유된 VPC를 사용하는 경우 VPC의 보안 그룹 규칙은 해당 피어 VPC 또는 공유 VPC의 보안 그룹을 참조할 수 있습니다. 이를 통해 참조된 보안 그룹과 연결된 리소스가 참조하는 보안 그룹과 연결된 리소스와 서로 통신할 수 있습니다.

공유 VPC의 보안 그룹을 삭제하거나 VPC 피어링 연결을 삭제하는 경우 보안 그룹 규칙은 무효로 표시됩니다. 다른 보안 그룹 규칙과 같은 방법으로 무효 보안 그룹 규칙을 삭제할 수 있습니다. 자세한 내용은 Amazon VPC 피어링 안내서의 무효 보안 그룹 규칙 작업을 참조하세요.

보안 그룹 규칙으로 작업

다음 작업은 보안 그룹 규칙 작업 방법을 보여 줍니다.

필요한 권한

보안 그룹에 규칙 추가

보안 그룹에 규칙을 추가할 경우 보안 그룹과 연결된 리소스에 새 규칙이 자동으로 적용됩니다.

VPC 피어링 연결이 있는 경우, 피어 VPC의 보안 그룹을 보안 그룹 규칙의 소스 또는 대상으로 참조할 수 있습니다. 자세한 내용은 Amazon VPC 피어링 가이드피어링된 VPC 보안 그룹을 참조하도록 보안 그룹 업데이트를 참조하십시오.

보안 그룹 규칙 관리에 필요한 권한에 대한 자세한 정보는 보안 그룹 규칙 관리 섹션을 참조하세요.

주의

Anywhere-IPv4를 선택하면 모든 IPv4 주소의 트래픽이 허용됩니다. Anywhere-IPv6을 선택하면 모든 IPv6 주소의 트래픽이 허용됩니다. 포트 22(SSH) 또는 3389(RDP)에 대한 규칙을 추가할 때 특정 IP 주소 범위만 인스턴스에 액세스할 수 있는 권한을 부여합니다.

콘솔을 사용하여 규칙을 추가하려면
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 보안 그룹을 선택합니다.

  3. 보안 그룹을 선택합니다.

  4. 작업(Actions), 인바운드 규칙 편집(Edit inbound rules) 또는 작업(Actions), 아웃바운드 규칙 편집(Edit outbound rules)을 선택합니다.

  5. 각 규칙에 대해 규칙 추가(Add rule)를 선택하고 다음을 수행합니다.

    1. 유형(Type)에서 허용할 프로토콜 유형을 선택합니다.

      • TCP 또는 UDP의 경우 허용할 포트 범위를 입력해야 합니다.

      • 사용자 지정 ICMP의 경우 프로토콜(Protocol)에서 ICMP 유형 이름을 선택하고, 해당되는 경우 포트 범위(Port range)에서 코드 이름을 선택해야 합니다.

      • 다른 유형에 대해 프로토콜과 포트 범위가 자동으로 구성됩니다.

    2. 소스 유형(Source type)(인바운드 규칙) 또는 대상 유형(Destination type)(아웃바운드 규칙)에서 다음 중 하나를 수행하여 트래픽을 허용합니다.

      • [사용자 지정(Custom)]을 선택한 다음 CIDR 표기법의 IP 주소, CIDR 블록, 다른 보안 그룹 또는 접두사 목록을 입력합니다.

      • 임의 IPv4 주소의 트래픽을 허용하거나(인바운드 규칙) 트래픽이 모든 IPv4 주소(아웃바운드 규칙)에 도달하도록 허용하려면 Anywhere-IPv4를 선택합니다. 이 작업을 수행하면 0.0.0.0/0 IPv4 CIDR 블록에 대해 규칙이 자동으로 추가됩니다.

      • 임의 IPv6 주소의 트래픽을 허용하거나(인바운드 규칙) 트래픽이 모든 IPv6 주소(아웃바운드 규칙)에 도달하도록 허용하려면 Anywhere-IPv6를 선택합니다. 이 작업을 수행하면 ::/0 IPv6 CIDR 블록에 대해 규칙이 자동으로 추가됩니다.

      • [내 IP(My IP)]를 선택하여 로컬 컴퓨터의 퍼블릭 IPv4 주소에서 전송된 트래픽만 허용하거나(인바운드 규칙) 로컬 컴퓨터의 퍼블릭 IPv4 주소로 트래픽을 허용하세요.

    3. (선택 사항) [설명(Description)]에서 규칙에 대한 간단한 설명을 지정합니다.

  6. 규칙 저장을 선택합니다.

AWS CLI를 사용하여 보안 그룹에 규칙을 추가하려면

authorize-security-group-ingressauthorize-security-group-egress 명령을 사용합니다.

보안 그룹 규칙 업데이트

규칙을 업데이트하면 업데이트된 규칙은 보안 그룹과 연결된 모든 리소스에 자동으로 적용됩니다.

보안 그룹 규칙 관리에 필요한 권한에 대한 자세한 정보는 보안 그룹 규칙 관리 섹션을 참조하세요.

콘솔을 사용하여 규칙을 업데이트하려면
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 보안 그룹을 선택합니다.

  3. 보안 그룹을 선택합니다.

  4. 작업, 인바운드 규칙 편집 또는 작업, 아웃바운드 규칙 편집을 선택합니다.

  5. 필요에 따라 규칙을 업데이트합니다.

  6. 규칙 저장을 선택합니다.

AWS CLI를 사용하여 보안 그룹 규칙을 업데이트하려면

modify-security-group-rules, update-security-group-rule-descriptions-ingressupdate-security-group-rule-descriptions-egress 명령을 사용합니다.

보안 그룹 규칙 태깅

리소스에 태그를 추가하면 용도, 소유자 또는 환경과 같은 기준으로 태그를 구성하고 식별할 수 있습니다. 보안 그룹 규칙에 태그를 추가할 수 있습니다. 태그 키는 각 보안 그룹 규칙별로 고유해야 합니다. 보안 그룹 규칙에 이미 연결된 키로 태그를 추가하면 해당 태그의 값이 업데이트됩니다.

콘솔을 사용하여 규칙을 태깅하려면
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 보안 그룹을 선택합니다.

  3. 보안 그룹을 선택합니다.

  4. 인바운드 규칙 또는 아웃바운드 규칙 탭에서 해당 규칙의 확인란을 선택한 다음 태그 관리를 선택합니다.

  5. [태그 관리(Manage tags)] 페이지에는 해당 규칙에 할당된 모든 태그가 표시됩니다. 태그를 추가하려면 태그 추가(Add tag)를 선택한 다음 태그 키와 값을 입력합니다. 태그를 삭제하려면 삭제할 태그 옆에 있는 제거(Remove)를 선택합니다.

  6. Save changes(변경 사항 저장)를 선택합니다.

AWS CLI를 사용하여 규칙을 태깅하려면

create-tags 명령을 사용합니다.

보안 그룹 규칙 삭제

보안 그룹에서 규칙을 삭제할 경우 보안 그룹과 연결된 인스턴스에 해당 변경 내용이 자동으로 적용됩니다.

콘솔을 사용하여 보안 그룹 규칙을 삭제하려면
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 보안 그룹을 선택합니다.

  3. 보안 그룹을 선택합니다.

  4. [작업(Actions)]을 선택한 다음, 인바운드 규칙을 제거하려면 [인바운드 규칙 편집(Edit inbound rules)]을, 아웃바운드 규칙을 제거하려면 [아웃바운드 규칙 편집(Edit outbound rules)]을 선택합니다.

  5. 삭제할 규칙 옆에 있는 [삭제(Delete)] 버튼을 선택합니다.

  6. 규칙 저장을 선택합니다. 또는 변경 사항 미리 보기를 선택하여 변경 내용을 검토한 다음 확인을 선택합니다.

AWS CLI를 사용하여 보안 그룹 규칙을 삭제하려면

revoke-security-group-ingressrevoke-security-group-egress 명령을 사용합니다.

규칙 예

웹 서버

다음은 웹 서버의 보안 그룹에 대한 규칙의 예시입니다. 웹 서버는 IPv4 및 IPv6 주소로부터 HTTP 및 HTTPS 트래픽을 수신하고, SQL 또는 MySQL 트래픽을 데이터베이스 서버에 전송할 수 있습니다.

주의

EC2 인스턴스에 액세스할 수 있도록 포트 22(SSH) 또는 3389(RDP)에 대한 규칙을 추가하는 경우 특정 IP 주소 범위만 권한을 부여하는 것이 좋습니다. 0.0.0.0/0(IPv4)과 ::/(IPv6)를 지정하면 누구든지 지정된 프로토콜을 사용하여 모든 IP 주소에서 인스턴스에 액세스할 수 있게 됩니다.

인바운드
소스 프로토콜 포트 범위 설명

0.0.0.0/0

TCP

80

모든 IPv4 주소에서 이루어지는 인바운드 HTTP 액세스 허용

::/0 TCP 80 모든 IPv6 주소에서 이루어지는 인바운드 HTTP 액세스 허용

0.0.0.0/0

TCP

443

모든 IPv4 주소에서 이루어지는 인바운드 HTTPS 액세스 허용

::/0 TCP 443 모든 IPv6 주소에서 이루어지는 인바운드 HTTPS 액세스 허용
네트워크의 퍼블릭 IPv4 주소 범위

TCP

22

(선택 사항) 네트워크에서 IPv4 IP 주소의 인바운드 SSH 액세스 허용

네트워크의 IPv6 주소 범위 TCP 22 (선택 사항) 네트워크에서 IPv6 IP 주소의 인바운드 SSH 액세스 허용
네트워크의 퍼블릭 IPv4 주소 범위

TCP

3389

(선택 사항) 네트워크에서 IPv4 IP 주소의 인바운드 RDP 액세스 허용

네트워크의 IPv6 주소 범위 TCP 3389 (선택 사항) 네트워크에서 IPv6 IP 주소의 인바운드 RDP 액세스 허용
이 보안 그룹의 ID 모두 모두 (선택 사항) 이 보안 그룹과 연결된 다른 서버의 인바운드 트래픽 허용
아웃바운드
대상 주소 프로토콜 포트 범위 설명
Microsoft SQL Server를 실행하는 인스턴스의 보안 그룹 ID

TCP

1433

아웃바운드 Microsoft SQL Server 액세스 허용

MySQL을 실행하는 인스턴스의 보안 그룹 ID

TCP

3306

아웃바운드 MySQL 액세스 허용

데이터베이스 서버

데이터베이스 서버에는 MySQL 또는 Microsoft SQL Server와 같은 인바운드 특정 프로토콜을 허용하는 규칙이 필요합니다. 예를 들어, Amazon EC2 사용 설명서데이터베이스 서버 규칙을 참조하세요. Amazon RDS DB 인스턴스의 보안 그룹에 대한 자세한 내용은 Amazon RDS 사용 설명서보안 그룹을 통한 액세스 제어를 참조하세요.

연결 문제 해결

Reachability Analyzer는 정적 구성 분석 도구입니다. Reachability Analyzer를 사용하여 VPC의 두 리소스 간 네트워크 연결성을 분석하고 디버깅할 수 있습니다. Reachability Analyzer에서는 연결할 수 있는 경우 이러한 리소스 간 가상 경로에 대한 홉별 세부 정보가 생성되고, 그렇지 않다면 차단 구성 요소가 식별됩니다. 예를 들면 누락되거나 잘못 구성된 보안 그룹 규칙이 식별될 수 있습니다.

자세한 내용은 Reachability Analyzer 사용 설명서를 참조하십시오.