IBM Cloud Docs
소스 및 대상 IP 주소에 보안 그룹 규칙 적용

소스 및 대상 IP 주소에 보안 그룹 규칙 적용

보안 그룹 규칙은 이제 로컬 IP 주소를 지원합니다. 이는 규칙이 모든 로컬 IP 주소를 허용하는 대신 특정 로컬 IP 주소를 허용할 수 있음을 의미합니다. 보안 그룹 규칙은 유입 및 유출 규칙 모두에 대해 로컬 IP 주소를 지원합니다.

보안 그룹 규칙을 사용하여 특정 로컬 IP 주소 또는 주소 범위를 허용하는 것은 다음과 같은 경우에 유용합니다.

  • 단일 가상 네트워크 인터페이스와 연관된 보조 사설 IP 주소가 있습니다.
  • IP 스푸핑이 허용된 인터페이스로 패킷을 전달하는 사용자 정의 라우트가 있습니다.

특정 로컬 대상 IP 주소만 허용하는 인바운드 보안 그룹 규칙을 적용할 수 있습니다. 특정 로컬 소스 IP 주소만 허용하는 아웃바운드 보안 그룹 규칙을 적용할 수도 있습니다.

콘솔, CLI, API 및 Terraform을 사용하여 보안 그룹 규칙(인바운드 및 아웃바운드)을 적용할 수 있습니다.

팁:

  • 추가된 순서에 관계없이 모든 규칙이 평가됩니다.
  • 규칙은 Stateful이며, 이는 허용된 트래픽에 대한 응답인 리턴 트래픽이 자동으로 허용됨을 의미합니다. 예를 들어, 포트 80에서 인바운드 TCP 트래픽을 허용하는 규칙을 작성했습니다. 이 규칙에서는 다른 규칙을 작성할 필요 없이 포트 80을 통해 원래 호스트로 다시 응답하는 아웃바운드 TCP 트래픽을 보낼 수 있습니다.
  • Windows 이미지의 경우 인스턴스와 연결된 보안 그룹이 인바운드 및 아웃바운드 원격 데스크톱 프로토콜 트래픽(TCP 포트 3389)을 허용하는지 확인합니다.

유스 케이스

보안 그룹 규칙을 작성할 때 특정 로컬 IP 주소 또는 CIDR을 허용하도록 선택할 수 있습니다. 원격 특성과 유사하게 다음 중 하나일 수 있는 로컬 특성이 있습니다.

  • IP 주소-규칙은 특정 대상 IP 주소 (인바운드 규칙의 경우) 또는 소스 IP 주소 (아웃바운드 규칙의 경우) 에 적용됩니다.
  • CIDR-규칙이 특정 대상 CIDR (인바운드 규칙의 경우) 또는 소스 CIDR (아웃바운드 규칙의 경우) 에 적용됩니다.

그림 1은 local IP 주소가 있는 보안 그룹 아웃바운드 규칙을 보여줍니다. 로컬 IP 주소 10.243.0.1 에서 10.243.200.0/24 범위의 원격 주소로 트래픽이 허용됩니다. 녹색 데이터 경로 선은 허용되는 트래픽을 표시하고, 빨간색 선은 허용되지 않는 트래픽을 표시합니다.

아웃바운드 트래픽을 처리하는 보안 그룹 규칙 그림
트래픽을 처리하는 보안 그룹 규칙

그림 2는 local IP 주소가 있는 보안 그룹 인바운드 규칙을 보여줍니다. 10.243.200.0/24 범위의 원격 주소에서 로컬 IP 주소 10.243.0.1 (으) 로 향하는 트래픽이 허용됩니다. 다른 로컬 IP 주소에 대한 트래픽은 허용되지 않습니다.

인바운드 트래픽을 처리하는 보안 그룹 규칙 그림
처리하는 보안 그룹 규칙을 보여주는 그림 *인바운드 트래픽을 처리하는 보안 그룹 규칙

콘솔에서의 보안 그룹 규칙 작성

보안 그룹을 프로비저닝하는 동안 또는 프로비저닝한 후에 인바운드 및 아웃바운드 규칙을 작성할 수 있습니다.

  1. 브라우저에서 IBM Cloud 콘솔을 여십시오.

  2. 탐색 메뉴 메뉴 아이콘을 선택한 다음 인프라 > 네트워크 > 보안 그룹을 클릭합니다.

  3. VPC의 보안 그룹 테이블에서 다음 중 하나를 선택하십시오.

    • 새 보안 그룹을 프로비저닝할 때 규칙을 작성하려면 작성을 클릭한 후 자원에 대한 보안 그룹 설정 의 지시사항을 따르십시오.
    • 기존 보안 그룹에 대한 규칙을 작성하려면 보안 그룹의 이름을 클릭하여 해당 세부사항 페이지를 본 후 4단계를 계속하십시오.
  4. 규칙을 작성하고 관리하려면 규칙 탭을 선택하십시오.

  5. 다음 중 하나를 선택하세요:

    • 인바운드 규칙을 작성하려면 인바운드 규칙 테이블에서 작성 을 선택하고 다음 필드를 완료하십시오. 그런 다음 작성을 클릭하십시오.

      • 프로토콜-적용할 프로토콜을 지정합니다 (TCP, UDP, ICMP 또는 ALL).
      • 포트-규칙이 적용되는 포트를 지정하십시오. 임의 를 선택하거나 포트 범위 (최소 및 최대 포트 값) 를 지정하십시오. TCPUDP 의 포트 값은 1-65535사이의 숫자여야 합니다. ICMP 에 유효한 포트 값은 0-254입니다.
      • 소스 유형 - 이 규칙이 트래픽을 허용하는 네트워크 인터페이스 집합을 선택합니다. 인바운드 허용 트래픽에 대해 모두, IP 주소또는 CIDR 블록 을 선택할 수 있습니다. 동일한 VPC에서 보안 그룹을 지정하여 선택된 보안 그룹에 연결된 모든 인스턴스의 송수신 트래픽을 허용할 수도 있습니다.
      • 대상 유형- 임의, IP 주소또는 CIDR 블록을 선택하십시오.
    • 아웃바운드 규칙을 작성하려면 아웃바운드 규칙 테이블에서 작성 을 선택하고 다음 필드를 완료하십시오. 그런 다음 작성을 클릭하십시오.

      • 프로토콜-적용할 프로토콜을 지정합니다 (TCP, UDP, ICMP 또는 ALL).
      • 포트-규칙이 적용되는 포트를 지정하십시오. 임의 를 선택하거나 포트 범위 (최소 및 최대 포트 값) 를 지정하십시오. TCPUDP 의 포트 값은 1-65535사이의 숫자여야 합니다. ICMP 에 유효한 포트 값은 0-254입니다.
      • 대상 유형- 임의, IP 주소, CIDR 블록또는 보안 그룹을 선택하십시오.
      • 소스 유형- 임의, IP 주소또는 CIDR 블록을 선택하십시오.

CLI에서의 보안 그룹 규칙 작성

CLI를 사용하여 보안 그룹 규칙 (인바운드 및 아웃바운드) 을 작성하려면 다음 명령을 입력하십시오.

ibmcloud is security-group-rule-add GROUP DIRECTION PROTOCOL [--vpc VPC] [--local LOCAL_ADDRESS | CIDR_BLOCK] [--remote REMOTE_ADDRESS | CIDR_BLOCK | SECURITY_GROUP] [--icmp-type ICMP_TYPE [--icmp-code ICMP_CODE]] [--port-min PORT_MIN] [--port-max PORT_MAX] [--output JSON] [-q, --quiet]

여기서:

GROUP
보안 그룹의 ID 또는 이름입니다.
DIRECTION
적용할 트래픽의 방향. 중 하나입니다: inbound, outbound.
PROTOCOL
규칙이 적용되는 프로토콜입니다. tcp, udp, icmp 또는 all 중 하나입니다.
--vpc
VPC의 ID 또는 이름. 이 옵션은 이 VPC 내에서 이름으로 고유 리소스를 지정하는 경우에만 필요합니다.
--local
이 규칙이 인바운드 트래픽을 허용하는(또는 아웃바운드 트래픽의 경우 이 규칙에서 출발하는) 로컬 IP 주소 또는 로컬 IP 주소의 범위입니다. IP 주소 또는 CIDR 블록으로 지정할 수 있습니다. 중 하나입니다: LOCAL_ADDRESS, CIDR_BLOCK. 0.0.0.0/0 의 CIDR 블록은 모든 로컬 IP 주소(또는 아웃바운드 규칙의 경우 모든 로컬 IP 주소로부터의 트래픽)로의 트래픽을 허용합니다.
--remote
이 규칙이 트래픽을 허용하는 네트워크 인터페이스 세트입니다. REMOTE_ADDRESS, CIDR_BLOCK 또는 SECURITY_GROUP 로 지정할 수 있습니다. 지정하지 않으면 모든 소스로부터의(또는 아웃바운드 규칙의 경우 모든 소스로의) 트래픽이 허용됩니다.
--icmp-type
허용되는 ICMP 트래픽 유형. 유효한 값은 0 에서 254 까지 입니다. 이 옵션은 프로토콜이 icmp 으로 설정된 경우에만 지정됩니다. 지정하지 않으면 모든 유형이 허용됩니다.
--icmp-code
허용되는 ICMP 트래픽 코드. 유효한 값은 0 에서 255 까지 입니다. 이 옵션은 프로토콜을 icmp로 설정한 경우에만 지정됩니다. 지정하지 않으면 모든 코드가 허용됩니다.
-port-min
최소 포트 번호입니다. 유효한 값은 1 에서 65535 까지입니다. 이 옵션은 프로토콜이 tcp 또는 udp 으로 설정된 경우에만 지정됩니다. 지정하지 않으면 모든 포트가 허용됩니다(기본값: 1).
--port-max
최대 포트 번호. 유효한 값은 1 에서 65535 까지입니다. 이 옵션은 프로토콜이 tcp 또는 udp 으로 설정된 경우에만 지정됩니다. 지정하지 않으면 모든 포트가 허용됩니다(기본값: 65535).
--output
결과 형식입니다. 중 하나 JSON.
--q, --quiet
상세 출력이 표시되지 않도록 합니다.

CLI 예제

  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound all
  • ibmcloud is security-group-rule-add my-sg inbound all
  • ibmcloud is security-group-rule-add my-sg inbound all --vpc my-vpc
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound icmp --icmp-type 8 --icmp-code 0
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound all --remote 12.3.2.4
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3 inbound all --remote 72b27b5c-f4b0-48aa-b954-5becc7c1dcb3
  • ibmcloud is security-group-rule-add my-sg inbound all --remote my-sg
  • ibmcloud is security-group-rule-add 72b27b5c-f4b0-48aa-b954-5beaa7c1dcb3 inbound tcp --port-min 4 --port-max 22 --output JSON
  • ibmcloud is security-group-rule-add --sg 72b27b5c-f4b0-48bb-b954-5beaa7c1dcb3 --direction inbound --protocol all --local 192.176.3.0

API를 사용하여 보안 그룹 규칙 작성

보안 그룹 규칙 POST 요청은 두 개의 특성이 있는 local 라는 선택적 특성을 승인합니다.

address
이 규칙이 인바운드 트래픽을 허용하는 (또는 아웃바운드 규칙에 대해 허용하는) IP 주소입니다.
cidr_block
이 규칙이 인바운드 트래픽을 허용하는 (또는 아웃바운드 규칙에 대해 인바운드 트래픽을 허용하는) IP 주소 범위입니다.

local 특성이 지정되지 않은 경우 기본값은 cidr_block: 0.0.0.0/0 입니다.

API를 사용하여 보안 그룹 규칙을 작성할 수 있습니다.

  1. 올바른 변수를 사용하여 API 환경을 설정하십시오.

  2. API 명령에서 사용할 변수에 보안 그룹 ID를 저장하십시오.

    export security_group_id=<security_group_id>
    
  3. 원격 주소 범위 10.1.2.0/24 에서 로컬 IP 주소 192.168.1.100 로의 인바운드 TCP 트래픽을 허용하는 보안 그룹 규칙을 작성하려면 다음 명령을 실행하십시오.

       curl -sX POST "$vpc_api_endpoint/v1/security_groups/$security_group_id/rules?version=$version&generation=2" \
         -H "Authorization: Bearer ${iam_token}" \
         -d '{
               "direction": "inbound",
               "local": {
                 "address": "192.168.1.100"
               }
               "protocol": "tcp",
               "remote": {
                 "cidr_block": "10.1.2.0/24"
               }
             }'
    

    샘플 출력:

    {
      "direction": "inbound",
      "href": "https://us-south.iaas.cloud.ibm.com/v1/security_groups/r006-568b4cc2-b6d1-4ee4-898a-841be283a4cd/rules/r006-8d123cf9-9a4e-48d9-ad5e-dabf1e5b5773",
      "id": "r006-8d123cf9-9a4e-48d9-ad5e-dabf1e5b5773",
      "ip_version": "ipv4",
      "local": {
        "address": "192.168.1.100"
      }
      "protocol": "tcp",
      "remote": {
        "cidr_block": "10.1.2.0/24"
      }
    }
    

Terraform을 사용하여 보안 그룹 규칙 작성

Terraform을 사용하려면 Terraform CLI를 다운로드하고 IBM Cloud 제공자 플러그인을 구성하십시오. 자세한 정보는 Terraform 시작하기를 참조하십시오.

다음 Terraform 예제는 인바운드 보안 그룹 규칙을 작성하는 방법을 보여줍니다. 자원의 local 매개변수는 IP 주소 또는 CIDR 블록을 허용하며 또한 데이터 소스 ibm_is_security_group_rulesibm_is_security_group_rule 의 응답 상태 및 응답 상태에 있습니다.

resource "ibm_is_security_group_rule" "example2" {
  group     = ibm_is_security_group.example.id
  direction = "inbound"
  remote    = "127.0.0.1"
  local = "192.168.3.0/24"
  udp {
    port_min = 805
    port_max = 807
  }
}