이 페이지에서는 가상 프라이빗 클라우드(VPC) 방화벽 규칙을 다루기 위한 명령어를 설명하고 몇 가지 사용 예시를 제공합니다. VPC 방화벽 규칙을 사용하면 포트 번호, 태그, 프로토콜을 기반으로 VPC 네트워크에서 가상 머신(VM) 인스턴스에 대한 트래픽을 허용하거나 거부할 수 있습니다.
시작하기 전에
기본 네트워크의 암시적 규칙 및 시스템 생성 규칙과 같은 VPC 방화벽 규칙에 대한 자세한 내용은 VPC 방화벽 규칙을 참조하세요.
방화벽 규칙을 구성하기 전에 Google Cloud에서 사용되는 방화벽 구성요소에 익숙해지도록 방화벽 규칙 구성요소를 검토하세요.
VPC 방화벽 규칙 만들기
VPC 방화벽 규칙은 네트워크 수준에서 정의되며 네트워크가 만들어진 위치에만 적용됩니다. 그러나 각각에 대해 선택한 이름은 프로젝트에 고유해야 합니다.
방화벽 규칙에는 IPv4 또는 IPv6 범위 중 하나가 포함될 수 있지만 둘 다 포함될 수는 없습니다.
방화벽 규칙을 만들 때 방화벽 규칙 로깅을 사용 설정할 수 있습니다. 로깅을 사용 설정한 경우 메타데이터 필드를 생략하여 스토리지 비용을 절약할 수 있습니다. 자세한 내용은 VPC 방화벽 규칙 로깅 사용을 참고하세요.
대상 또는 소스 서비스 계정 필드에 여러 서비스 계정을 지정하려면 Google Cloud CLI, API, 클라이언트 라이브러리를 사용합니다.
기본 네트워크 서비스는 생성 시 자동 방화벽 규칙을 제공합니다. 커스텀 및 자동 모드 네트워크를 사용하면 Google Cloud 콘솔을 사용하는 경우 네트워크 생성 중에 비슷한 방화벽을 쉽게 만들 수 있습니다. gcloud CLI 또는 API를 사용 중이고 기본 네트워크에서 제공되는 것과 비슷한 방화벽 규칙을 만들려면 일반적인 사용 사례의 방화벽 규칙 구성을 참고하세요.
콘솔
Google Cloud 콘솔에서 방화벽 정책 페이지로 이동합니다.
방화벽 규칙 만들기를 클릭합니다.
방화벽 규칙의 이름을 입력합니다.
이 이름은 프로젝트에서 고유해야 합니다.
(선택사항) 방화벽 규칙 로깅을 사용할 수 있습니다.
- 로그 > 사용을 클릭합니다.
- 메타데이터를 생략하려면 로그 세부정보 표시를 클릭한 후 메타데이터 포함 체크박스를 선택 해제합니다.
방화벽 규칙의 네트워크를 지정합니다.
규칙의 우선순위를 지정합니다.
숫자가 작을수록 우선순위가 높아집니다.
트래픽 방향에서 인그레스 또는 이그레스를 선택합니다.
일치 시 작업에서 허용 또는 거부를 선택합니다.
규칙의 대상을 지정합니다.
- 네트워크의 모든 인스턴스에 규칙을 적용하려면 All instances in the network를 선택합니다.
- 네트워크(대상) 태그별로 일부 인스턴스에 규칙을 적용하려면 지정된 대상 태그를 선택한 후 대상 태그 필드에서 규칙을 적용해야 하는 태그를 입력합니다.
- 연결된 서비스 계정별로 일부 인스턴스에 규칙을 적용하려면 지정된 서비스 계정을 선택하고 서비스 계정 범위에서 서비스 계정이 현재 프로젝트 또는 다른 프로젝트에 있는지 여부를 표시한 후 대상 서비스 계정 필드에서 서비스 계정 이름을 선택하거나 입력합니다.
인그레스 규칙의 경우 소스 필터를 지정합니다.
- 소스 IPv4 범위를 기준으로 들어오는 트래픽을 필터링하려면 IPv4 범위를 선택한 후 소스 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 소스에
0.0.0.0/0을 사용합니다. - 소스 IPv6 범위를 기준으로 들어오는 트래픽을 필터링하려면 IPv6 범위를 선택한 후 소스 IPv6 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv6 소스에
::/0을 사용합니다. - 네트워크 태그를 기준으로 들어오는 트래픽을 필터링하려면 소스 태그를 선택한 후 소스 태그 필드에 네트워크 태그를 입력합니다. 소스 태그 개수에 대한 제한은 네트워크별 한도를 참조하세요. 소스 태그별 필터링은 대상이 서비스 계정으로 지정되지 않은 경우에만 사용할 수 있습니다.
- 서비스 계정을 기준으로 들어오는 트래픽을 필터링하려면 서비스 계정을 선택하고 서비스 계정 범위에서 서비스 계정이 현재 프로젝트 또는 다른 프로젝트에 있는지 여부를 표시한 후 소스 서비스 계정 필드에서 서비스 계정 이름을 선택하거나 입력합니다. 소스 서비스 계정별 필터링은 대상이 네트워크 태그로 지정되지 않은 경우에만 사용 가능합니다.
- 원하는 경우 보조 소스 필터를 지정합니다. 보조 소스 필터는 기본 소스 필터와 동일한 필터 기준을 사용할 수 없습니다. 소스 IP 범위는 소스 태그 또는 소스 서비스 계정과 함께 사용될 수 있습니다. 유효한 소스 세트는 소스 범위 IP 주소와 네트워크 태그 또는 서비스 계정으로 식별된 인스턴스의 통합입니다. 즉, 소스 IP 범위 또는 소스 태그(또는 소스 서비스 계정)가 필터 기준과 일치하면 소스가 유효한 소스 세트에 포함됩니다.
- 소스 태그와 소스 서비스 계정은 함께 사용할 수 없습니다.
서비스 계정 및 네트워크 태그 사용에 대한 자세한 내용은 서비스 계정별 필터링 및 네트워크 태그별 필터링을 참고하세요.
- 소스 IPv4 범위를 기준으로 들어오는 트래픽을 필터링하려면 IPv4 범위를 선택한 후 소스 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 소스에
인그레스 규칙의 경우 대상 필터를 지정합니다.
- 대상 IPv4 범위를 기준으로 들어오는 트래픽을 필터링하려면 IPv4 범위를 선택하고 대상 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 대상에
0.0.0.0/0을 사용합니다. - 목적지 IPv6 범위를 기준으로 나가는 트래픽을 필터링하려면 IPv6 범위를 선택하고 목적지 IPv6 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv6 대상에
::/0을 사용합니다.
자세한 내용은 인그레스 규칙의 대상을 참고하세요.
- 대상 IPv4 범위를 기준으로 들어오는 트래픽을 필터링하려면 IPv4 범위를 선택하고 대상 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 대상에
이그레스 규칙의 경우 대상 필터를 지정합니다.
- 대상 IPv4 범위를 기준으로 나가는 트래픽을 필터링하려면 IPv4 범위를 선택하고 대상 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 대상에
0.0.0.0/0을 사용합니다. - 대상 IPv6 범위를 기준으로 나가는 트래픽을 필터링하려면 IPv6 범위를 선택하고 대상 IPv6 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv6 대상에
::/0을 사용합니다.
자세한 내용은 이그레스 규칙의 대상을 참고하세요.
- 대상 IPv4 범위를 기준으로 나가는 트래픽을 필터링하려면 IPv4 범위를 선택하고 대상 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 대상에
이그레스 규칙의 경우 소스 필터를 지정합니다.
- 소스 IPv4 범위를 기준으로 나가는 트래픽을 필터링하려면 IPv4 범위를 선택한 후 소스 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 소스에
0.0.0.0/0을 사용합니다. - 소스 IPv6 범위를 기준으로 나가는 트래픽을 필터링하려면 IPv6 범위를 선택하고 소스 IPv6 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv6 대상에
::/0을 사용합니다.
자세한 내용은 이그레스 규칙의 소스를 참고하세요.
- 소스 IPv4 범위를 기준으로 나가는 트래픽을 필터링하려면 IPv4 범위를 선택한 후 소스 IPv4 범위 필드에 CIDR 블록을 입력합니다. 모든 IPv4 소스에
규칙을 적용할 프로토콜과 포트를 정의합니다.
- 모든 프로토콜과 대상 포트에 규칙을 적용하려면 작업에 따라 모두 허용 또는 모두 거부를 선택합니다.
- 특정 프로토콜과 대상 포트를 정의하려면 지정된 프로토콜 및 포트를 선택합니다.
- TCP 프로토콜과 대상 포트를 포함하려면 TCP를 선택합니다.
all또는20-22, 80, 8080등의 쉼표로 구분된 대상 포트 목록을 입력합니다. - UDP 프로토콜과 대상 포트를 포함하려면 UDP를 선택합니다.
all또는67-69, 123등의 쉼표로 구분된 대상 포트 목록을 입력합니다. icmp,sctp또는 프로토콜 번호와 같은 프로토콜을 포함하려면 기타를 선택합니다. 예를 들어 IPv4 ICMP의 경우icmp또는 프로토콜 번호1을 사용합니다. IPv6 ICMP에는 프로토콜 번호58을 사용합니다.
- TCP 프로토콜과 대상 포트를 포함하려면 TCP를 선택합니다.
자세한 내용은 프로토콜 및 대상 포트를 참조하세요.
(선택사항) 방화벽 규칙을 만들고, 적용 상태를 사용 중지됨으로 설정하여 규칙을 시행하지 않을 수 있습니다. 규칙 사용 중지를 클릭한 다음 사용 중지됨을 선택합니다.
만들기를 클릭합니다.
gcloud
VPC 방화벽 규칙을 만들려면 gcloud compute firewall-rules create 명령어를 사용합니다.
gcloud compute firewall-rules create RULE_NAME \
[--network NETWORK; default="default"] \
[--priority PRIORITY;default=1000] \
[--direction (ingress|egress|in|out); default="ingress"] \
[--action (deny | allow )] \
[--target-tags TAG[,TAG,...]] \
[--target-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
[--source-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
[--source-tags TAG[,TAG, ...]] \
[--source-service-accounts=IAM_SERVICE_ACCOUNT[,IAM_SERVICE_ACCOUNT,...]] \
[--destination-ranges CIDR_RANGE[,CIDR_RANGE,...]] \
[--rules (PROTOCOL[:PORT[-PORT]],[PROTOCOL[:PORT[-PORT]],...]] | all ) \
[--disabled | --no-disabled] \
[--enable-logging | --no-enable-logging] \
[--logging-metadata LOGGING_METADATA]
매개변수를 다음과 같이 사용합니다. 각 항목에 대한 자세한 내용은 SDK 참조 문서에서 볼 수 있습니다.
--network규칙의 네트워크입니다. 생략할 경우default네트워크에 규칙이 생성됩니다. 기본 네트워크가 없거나 특정 네트워크에 규칙을 만들려는 경우 이 필드를 사용해야 합니다.--priority규칙의 우선순위를 나타내는 숫자 값입니다. 숫자가 작을수록 우선순위가 높아집니다.--direction트래픽의 방향(INGRESS또는EGRESS)입니다.--action일치 시 작업(allow또는deny)입니다.--rules플래그와 함께 사용해야 합니다.- 다음 방법 중 하나로 대상을 지정합니다.
인그레스 규칙의 경우 대상을 더 세분화하려면
--destination-ranges를 사용하여 IPv4 또는 IPv6 주소 범위를 CIDR 형식으로 지정합니다.--destination-ranges를 생략하면 인그레스 대상은 모든 IPv4 주소(0.0.0.0/0)입니다. 자세한 내용은 인그레스 규칙의 대상과 인그레스 규칙 대상 및 IP 주소를 참조하세요.인그레스 규칙의 경우 소스를 지정합니다.
--source-ranges소스 IPv4 또는 IPv6 주소의 범위를 CIDR 형식으로 지정하려면 이 플래그를 사용합니다.--source-ranges,source-tags,--source-service-accounts가 생략된 경우 인그레스 소스는 모든 IPv4 주소(0.0.0.0/0)입니다.--source-tags네트워크 태그별로 소스 인스턴스를 지정하려면 이 플래그를 사용합니다. 소스 태그별 필터링은 대상이 서비스 계정으로 지정되지 않은 경우에만 사용할 수 있습니다. 자세한 내용은 서비스 계정별 필터링 및 네트워크 태그별 필터링을 참조하세요.--source-ranges와--source-tags를 함께 사용할 수 있습니다. 둘 다 지정할 경우 유효한 소스 세트는 소스 범위 IP 주소와 네트워크 태그로 식별된 인스턴스의 통합입니다. 태그가 지정된 인스턴스에 소스 범위에 속하는 IP가 없더라도 마찬가지입니다.--source-service-accounts사용하는 서비스 계정별로 인스턴스를 지정하려면 이 플래그를 사용합니다. 소스 서비스 계정별 필터링은 대상이 네트워크 태그로 지정되지 않은 경우에만 사용할 수 있습니다. 자세한 내용은 서비스 계정별 필터링 및 네트워크 태그별 필터링을 참조하세요.--source-ranges와--source-service-accounts를 함께 사용할 수 있습니다. 둘 다 지정할 경우 유효한 소스 세트는 소스 범위 IP 주소와 소스 서비스 계정으로 식별된 인스턴스의 통합입니다. 소스 서비스 계정으로 식별된 인스턴스에 소스 범위에 속하는 IP가 없더라도 마찬가지입니다.
이그레스 규칙의 경우 소스를 더 세분화하려면
--source-ranges를 사용하여 IPv4 또는 IPv6 주소 범위를 CIDR 형식으로 지정합니다.--source-ranges를 생략하면 이그레스 소스는 모든 IPv4 주소(0.0.0.0/0)입니다. 자세한 내용은 이그레스 규칙의 소스 및 이그레스 규칙의 대상 및 IP 주소를 참고하세요.이그레스 규칙의 경우 대상을 지정합니다.
--destination-ranges대상 IPv4 또는 IPv6 주소의 범위를 CIDR 형식으로 지정하려면 이 플래그를 사용합니다.--destination-ranges를 생략하면 이그레스 대상은 모든 IPv4 주소(0.0.0.0/0)입니다.
--rules규칙이 적용되는 프로토콜 및 대상 포트의 목록입니다. 모든 프로토콜 및 대상 포트에 규칙을 적용할 수 있도록 하려면all을 사용합니다.--action플래그가 필요합니다.기본적으로 방화벽 규칙은 자동으로 만들어지고 적용되지만 이 동작을 변경할 수 있습니다.
--disabled와--no-disabled를 모두 생략하면 방화벽 규칙이 만들어지고 적용됩니다.--disabled방화벽 규칙을 만들지만 시행하지 않으려면 이 플래그를 추가합니다. 방화벽 규칙을 업데이트해서 사용 설정할 때까지 방화벽 규칙은 사용 중지된 상태로 유지됩니다.--no-disabled방화벽 규칙을 적용하려면 이 플래그를 추가합니다.
--enable-logging | --no-enable-logging규칙을 만들거나 업데이트할 때 방화벽 규칙 로깅을 사용 설정할 수 있습니다. VPC 방화벽 규칙 로깅을 사용하면 방화벽 규칙의 영향을 감사, 확인, 분석할 수 있습니다. 자세한 내용은 VPC 방화벽 규칙 로깅을 참고하세요.--logging-metadata로깅을 사용 설정한 경우 기본적으로 방화벽 규칙 로깅에 기본 필드와 메타데이터 필드가 포함됩니다. 메타데이터 필드를 생략하여 스토리지 비용을 절약할 수 있습니다. 자세한 내용은 VPC 방화벽 규칙 로깅 사용을 참고하세요.
Terraform
google_compute_firewall 리소스를 사용하여 방화벽 규칙을 만들 수 있습니다.
Terraform 구성을 적용하거나 삭제하는 방법은 기본 Terraform 명령어를 참조하세요.
API
VPC 방화벽 규칙을 만듭니다.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/firewalls
{
"name": "RULE_NAME",
"network": "projects/PROJECT-ID/global/networks/NETWORK",
... other fields
}
다음을 바꿉니다.
PROJECT_ID: VPC 네트워크가 있는 프로젝트의 IDNETWORK: 방화벽 규칙이 생성된 VPC 네트워크의 이름.RULE_NAME: 방화벽 규칙의 이름입니다.인그레스 방화벽 규칙의 경우 인그레스 소스 및 대상을 지정합니다.
sourceRanges,sourceTags,sourceServiceAccounts필드를 사용하여 인그레스 소스를 지정합니다.sourceRanges는 IPv4 또는 IPv6 범위일 수 있지만 이 둘의 조합일 수는 없습니다.0.0.0.0/0범위를 사용하려면 필드를 지정하지 마세요.sourceTags필드와sourceServiceAccounts필드를 함께 사용할 수 없습니다. 하지만sourceTags또는sourceServiceAccounts와 함께sourceRanges를 사용할 수 있습니다. 그러면 방화벽 규칙을 적용하기 위해 연결이 일치해야 합니다.대상 필드의 경우
sourceTags필드를 사용할 때targetServiceAccounts필드를 사용할 수 없습니다.targetTags필드를 사용하거나 대상 필드를 사용하지 않아야 합니다. 마찬가지로sourceServiceAccounts필드를 사용하는 경우targetTags필드를 사용할 수 없습니다. 대상 필드를 지정하지 않으면 규칙이 네트워크의 모든 대상에 적용됩니다.destinationRanges필드를 사용하여 인그레스 대상을 지정합니다.destinationRanges는 IPv4 또는 IPv6 범위일 수 있지만 이 둘의 조합일 수는 없습니다.
대상을 지정하지 않으면 Google Cloud 에서0.0.0.0/0을 사용합니다. 자세한 내용은 인그레스 규칙의 대상과 인그레스 규칙 대상 및 IP 주소를 참조하세요.
이그레스 방화벽 규칙의 경우 이그레스 소스 및 대상을 지정합니다.
sourceRanges필드를 사용하여 이그레스 소스를 지정합니다.sourceRange는 IPv4 또는 IPv6 범위일 수 있지만 이 둘의 조합일 수는 없습니다.
소스를 지정하지 않으면 Google Cloud 에서0.0.0.0/0을 사용합니다. 자세한 내용은 이그레스 규칙의 소스 및 이그레스 규칙의 대상 및 IP 주소를 참조하세요.destinationRanges필드를 사용하여 대상을 지정합니다.destinationRanges는 IPv4 또는 IPv6 범위일 수 있지만 이 둘의 조합일 수는 없습니다.
대상을 지정하지 않으면 Google Cloud에서0.0.0.0/0을 사용합니다.targetTags또는targetServiceAccounts필드를 사용하여 규칙을 적용할 대상을 지정합니다. 대상 필드를 지정하지 않으면 규칙이 네트워크의 모든 대상에 적용됩니다.
각 필드에 대한 자세한 내용과 설명은 firewalls.insert 메서드를 참조하세요.