URL 필터링 보안 프로필은 URL 필터를 사용하여 방화벽 엔드포인트의 보안 정책을 정의하는 레이어 7 정책 구조입니다. 이러한 프로필은 네트워크 트래픽의 도메인 이름을 평가하여 특정 매처 문자열과 우선순위에 따라 허용 또는 거부 작업을 적용합니다.
이 페이지에서는 URL 필터링 보안 프로필을 만들고 관리하는 방법을 설명합니다.
시작하기 전에
- 프로젝트에서 Network Security API를 사용 설정해야 합니다.
- 이 가이드의
gcloud명령줄 예시를 실행하려면 Google Cloud CLI를 설치합니다.
역할
보안 프로필을 생성, 보기, 업데이트 또는 삭제하는 데 필요한 권한을 얻으려면 관리자에게 조직에 필요한 ID 및 액세스 관리 (IAM) 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.
URL 필터링 보안 프로필 만들기
url-filtering 보안 프로필을 만들려면 이름을 문자열이나 고유 URL 식별자로 지정합니다.
콘솔
Google Cloud 콘솔에서 보안 프로필 페이지로 이동합니다.
프로젝트 선택기 메뉴에서 보안 프로필을 만들 조직 또는 프로젝트를 선택합니다.
보안 프로필 탭을 선택합니다.
프로필 만들기를 클릭합니다.
이름 필드에 이름을 입력합니다.
선택사항: 설명 필드에 설명을 입력합니다.
Cloud Next Generation Firewall Enterprise 보안 프로필을 만들려면 용도 섹션에서 Cloud NGFW Enterprise를 선택합니다.
URL 필터링 보안 프로필을 만들려면 유형 섹션에서 URL 필터링을 선택합니다.
URL 필터 섹션에서 URL 필터 만들기 버튼을 클릭합니다.
URL 필터 만들기 창에서 다음 세부정보를 지정합니다.
- 우선순위: URL 필터의 우선순위를 지정합니다.
- 작업: Cloud NGFW가 트래픽에 대해 실행하는 작업을 지정합니다.
- 허용: URL과 일치하는 연결을 허용합니다.
- 거부: URL과 일치하는 연결을 거부합니다.
- URL 목록: URL 또는 일치자 문자열 목록을 지정합니다. 각 URL 또는 매처 문자열 항목은 공백이나 구분 기호 없이 한 줄에 표시되어야 합니다. 각 항목은 도메인으로만 구성될 수 있습니다. 매처 문자열에 대한 자세한 내용은 URL용 매처 문자열을 참고하세요.
만들기를 클릭합니다.
gcloud
다음 콘텐츠로 YAML 파일을 만듭니다.
name: NAME type: url-filtering urlFilteringProfile: urlFilters: - filteringAction: ACTION priority: PRIORITY urls: [URL,URL,...]다음을 바꿉니다.
NAME: URL 필터링 보안 프로필의 이름입니다. 이름을 문자열이나 고유한 URL 식별자로 지정할 수 있습니다.ACTION: 다음 작업 중 하나를 지정합니다.ALLOW: URL과 일치하는 연결을 허용합니다.DENY: URL과 일치하는 연결을 거부합니다.
PRIORITY: URL 필터의 우선순위로, 0~2147483647입니다.URLs: 매처 문자열의 쉼표로 구분된 목록입니다. 예를 들면www.example.com및www.examplepetstore.com입니다.
URL 필터링 보안 프로필을 만들려면
gcloud network-security security-profiles import명령어를 실행합니다.gcloud network-security security-profiles import NAME \ --source FILE_NAME \ [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \ --location global
또는
gcloud network-security security-profiles url-filtering create명령어를 사용하여 YAML 파일 없이 URL 필터링 보안 프로필을 만들 수 있습니다.gcloud network-security security-profiles url-filtering create NAME \ [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \ --description DESCRIPTION \ --location global다음을 바꿉니다.
NAME: URL 필터링 보안 프로필의 이름입니다.이름에 고유한 URL 식별자 형식을 사용하지 않는 경우 조직 또는 프로젝트 이름과 위치를 지정해야 합니다.
FILE_NAME: YAML 파일의 이름입니다. 예를 들면url-filtering-sp.yaml입니다.ORGANIZATION_ID: 조직 ID입니다. 이 플래그를 사용하여 조직 수준 보안 프로필을 만듭니다.PROJECT_ID: 프로젝트 ID입니다. 이 플래그를 사용하여 프로젝트 수준 보안 프로필을 만듭니다.DESCRIPTION: URL 필터링 보안 프로필에 대한 선택적 설명입니다.
예를 들어 다음 코드 스니펫은
www.example.com및www.examplepetstore.com에 대한 요청을 허용하지만 다른 모든 도메인에 대한 요청을 거부하는 URL 필터링 보안 프로필의 예를 보여줍니다.urlFilteringProfile: urlFilters: - filteringAction: ALLOW priority: 1000 urls: ['www.example.com', 'www.examplepetstore.com'] # the following URL filter is implicit and will be processed last - filteringAction: DENY priority: 2147483647 urls: ['*']
암시적 거부 URL 필터
URL 필터링 보안 프로필에는 항상 우선순위가 가장 낮은 (2147483647) 기본 URL 필터가 포함되어 있으며, 이 필터는 우선순위가 높은 URL 필터와 일치하지 않는 모든 연결을 거부합니다. 다음 코드 스니펫은 암시적 거부 URL 필터의 예를 보여줍니다.
urlFilteringProfile:
urlFilters:
# user-specified URL filters
- filteringAction: DENY
priority: 1000
urls: ['www.example.com','www.examplepetstore.com']
- filteringAction: ALLOW
priority: 2000
urls: ['www.example.org','www.example.net']
# implicit deny URL filter that will be processed last
- filteringAction: DENY
priority: 2147483647
urls: ['*']
URL 필터링 보안 프로필을 보거나 내보낼 때 암시적 거부 URL 필터가 표시될 수 있습니다. 암시적 필터는 수정하거나 삭제할 수 없습니다.
예를 들어 프로필의 기본 작업을 DENY(암시적 필터에 의해 적용됨)에서 ALLOW로 변경하려면 암시적 필터 전에 Cloud NGFW가 처리하는 명시적 필터를 추가해야 합니다.
urlFilteringProfile:
urlFilters:
# user-specified filters
- filteringAction: DENY
priority: 1000
urls: ['www.example.com','www.examplepetstore.com']
# explicit allow URL filter that you can add
- filteringAction: ALLOW
priority: 2000
urls: ['*']
# implicit deny URL filter that will be processed last
- filteringAction: DENY
priority: 2147483647
urls: ['*']
URL의 일치자 문자열
매처 문자열은 URL 필터의 urls 필드에 지정하는 값입니다. URL 필터 내에 하나 이상의 일치자 문자열을 지정할 수 있습니다.
와일드 카드
URL 목록의 각 일치자 문자열은 제한된 방식으로 와일드 카드 문자 (*)를 지원합니다.
- 각 일치자 문자열은 별표가 첫 번째 또는 유일한 문자인 경우에만 별표 (*) 1개를 지원할 수 있습니다.
별표 (*)는 다음과 같이 해석될 수 있습니다.
마침표(.) 앞에 별표(*)가 있으면 도메인의 모든 하위 도메인을 나타냅니다.
예를 들어
*.example.com일치자 문자열은a.example.com및a.b.c.example.com와 일치하지만example.com와는 일치하지 않습니다.urlFilteringProfile: urlFilters: # user-specified filters - filteringAction: ALLOW priority: 1000 urls: ['*.example.com'] # implicit deny URL filter that will be processed last - filteringAction: DENY priority: 2147483647 urls: ['*']위 예시에서 Cloud NGFW는
example.com의 하위 도메인으로 향하는 트래픽은 허용하지만 나머지 아웃바운드 트래픽은 거부합니다.라벨 앞에 별표 (*)가 있으면 도메인 및 모든 하위 도메인을 나타냅니다.
예를 들어 매처 문자열
*example.com은a.example.com,a.b.c.example.com,example.com와 일치합니다.urlFilteringProfile: urlFilters: # user-specified filters - filteringAction: ALLOW priority: 1000 urls: ['*example.com'] # implicit deny URL filter that will be processed last - filteringAction: DENY priority: 2147483647 urls: ['*']위의 예에서 Cloud NGFW는
example.com및example.com의 하위 도메인으로 향하는 트래픽을 허용하지만 나머지 아웃바운드 트래픽은 거부합니다.도메인 확장자(예:
.com) 앞에 별표(*)가 있으면 도메인 확장자를 사용하는 모든 도메인 (및 하위 도메인)을 나타냅니다.예를 들어 일치자 문자열
*.com은example.com및examplepetstore.com와 모든 하위 도메인과 일치합니다.다음 코드 스니펫은
.com로 끝나는 모든 도메인 (및 하위 도메인)을 허용하지만 나머지 트래픽은 거부하는 방법을 보여줍니다.urlFilteringProfile: urlFilters: # Allow all domains (and their subdomains) that end in '.com' - filteringAction: ALLOW priority: 2000 urls: ['*.com'] # implicit deny URL filter that will be processed last - filteringAction: DENY priority: 2147483647 urls: ['*']다음 코드 스니펫은
example.com및examplepetstore.com의 모든 하위 도메인을 거부하지만.com로 끝나는 이러한 도메인과 기타 모든 도메인 (및 하위 도메인)은 허용하는 방법을 보여줍니다.urlFilteringProfile: urlFilters: # Deny all subdomains of example.com - filteringAction: DENY priority: 1000 urls: ['*.example.com'] # Deny all subdomains of examplepetstore.com - filteringAction: DENY priority: 1500 urls: ['*.examplepetstore.com'] # Allow all domains (and their subdomains) that end in '.com' - filteringAction: ALLOW priority: 2000 urls: ['*.com'] # implicit deny URL filter that will be processed last - filteringAction: DENY priority: 2147483647 urls: ['*']Cloud NGFW는 별표 (*)를 정규 표현식 와일드 카드로 해석하지 않습니다.
예를 들어
*example.test은newexample.test또는a.newexample.test과 일치하지 않습니다.example.test및example.test의 하위 도메인과만 일치합니다.다른 문자가 없는 단일 별표 (*)는 모든 요청과 일치함을 나타냅니다.
예를 들어 우선순위가 가장 낮은 명시적 허용 URL 필터의 일치자 문자열에는 별표 (*)만 포함되어 있으며
DENY의 기본 작업을 재정의하는ALLOW작업이 있습니다. 이는 암시적 거부 URL 필터가 우선순위가 높은 URL 필터와 일치하지 않는 요청에 기본DENY를 적용하기 때문입니다.가장 높은 우선순위의 URL 필터(명시적
ALLOW또는 암시적DENY)에 따라 SNI 또는 도메인 정보가 없는 경우 Cloud NGFW에서 연결을 허용할지 거부할지가 결정됩니다. 이는 암호화되지 않은 HTTP 트래픽의 경우 또는 암호화된 메시지 헤더에 대해 TLS 검사가 사용 중지된 경우에 발생할 수 있습니다.urlFilteringProfile: urlFilters: # user-specified filters - filteringAction: DENY priority: 1000 urls: ['www.example.com','www.examplepetstore.com'] # explicit allow URL filter that you can add - filteringAction: ALLOW priority: 2000 urls: ['*'] # implicit deny URL filter that will be processed last - filteringAction: DENY priority: 2147483647 urls: ['*']
제한사항
- 매처 문자열은 도메인 또는 하위 도메인을 나타냅니다.
- 일치자 문자열은 슬래시 (/) 문자를 지원하지 않습니다. 예를 들어
www.example.com/images는 사용할 수 없습니다. - 일치자 문자열은 스키마 또는 프로토콜 이름을 지원하지 않습니다. 예를 들면
http://www.example.com입니다. - 일치자 문자열은 포트 번호를 지원하지 않습니다. 예를 들면
www.example.com:80입니다. - 일치자 문자열은 ASCII 문자, 숫자, 특수문자(하이픈(-), 마침표(.), 별표(*))만 지원합니다.
ASCII 문자, 숫자, 하이픈 (-), 마침표 (.), 별표 (*) 이외의 문자가 포함된 도메인 이름을 변환하려면 Punycode를 사용해야 합니다. Punycode는 유니코드 도메인 이름을 ASCII 호환 형식으로 변환하는 인코딩 표준입니다.
라벨이 두 개 이상인 경우 마침표 (.)를 사용하여 구분합니다. 라벨에는 하나 이상의 하이픈 (-)이 포함될 수 있지만 라벨이 하이픈으로 시작하거나 끝나서는 안 됩니다. 각 라벨에는 최대 63자(영문 기준)까지 포함할 수 있습니다.
URL 필터는 도메인 이름의 시작 부분에 마침표를 사용하거나 일치자 문자열 내에 연속된 마침표를 사용하는 것을 지원하지 않습니다. URL 필터는 끝에 마침표를 허용하지만 Cloud NGFW는 URL 필터를 저장하기 전에 마침표를 삭제합니다.
Cloud NGFW는 URL 필터를 저장하기 전에 일치자 문자열을 소문자로 변환합니다. Cloud NGFW는 다른 정규화를 수행하지 않습니다.
각 도메인 이름에는 최대 255자(영문 기준)까지 포함할 수 있습니다.
다단계 하위 도메인의 URL 필터
다양한 우선순위와 작업을 사용하여 URL 필터를 사용하면 다단계 하위 도메인으로의 네트워크 트래픽을 제어할 수 있습니다. 매처 문자열에서 와일드 카드 문자 (*)를 사용하여 도메인과 하위 도메인을 지정할 수도 있습니다.
예를 들어 다음과 같은 동작을 구현하는 시나리오를 고려해 보세요.
a.b.c.example.com허용*.b.c.example.com거부 (b.c.example.com의 다른 모든 하위 도메인 거부)*.c.example.com허용 (c.example.com의 다른 모든 하위 도메인 허용)*.example.com거부 (example.com의 다른 모든 하위 도메인 거부)example.com허용- 그 외 모든 항목 허용
다음 코드 스니펫은 이 시나리오를 구현합니다.
urlFilteringProfile:
urlFilters:
# Allow 'a.b.c.example.com'
- filteringAction: ALLOW
priority: 1000
urls: ['a.b.c.example.com']
# Deny all subdomains of 'b.c.example.com'
- filteringAction: DENY
priority: 2000
urls: ['*.b.c.example.com']
# Allow all subdomains of 'c.example.com'
- filteringAction: ALLOW
priority: 3000
urls: ['*.c.example.com']
# Deny all subdomains of 'example.com'
- filteringAction: DENY
priority: 4000
urls: ['*.example.com']
# explicit allow URL filter
- filteringAction: ALLOW
priority: 5000
urls: ['*']
# implicit deny URL filter that will be processed last
- filteringAction: DENY
priority: 2147483647
urls: ['*']
URL 필터링 보안 프로필의 세부정보 나열 및 보기
조직 또는 프로젝트에서 생성된 URL 필터링 보안 프로필을 나열할 수 있습니다. 유형, 목적, 설명과 같은 프로필 세부정보도 확인할 수 있습니다.
콘솔
Google Cloud 콘솔에서 보안 프로필 페이지로 이동합니다.
보안 프로필 탭을 선택하여 구성된 보안 프로필 목록을 확인합니다.
URL 필터링 보안 프로필을 필터링하려면 필터 필드에서 프로필 유형을 URL 필터링으로 지정합니다.
탭에 URL 필터링 보안 프로필 목록이 표시됩니다.
프로필 세부정보를 보려면 URL 필터링 보안 프로필을 클릭합니다.
gcloud
모든 URL 필터링 보안 프로필을 나열하려면 gcloud network-security security-profiles url-filtering list 명령어를 사용합니다.
gcloud network-security security-profiles url-filtering list \
[ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
[--billing-project QUOTA_PROJECT_ID]
--location global
URL 필터링 보안 프로필의 세부정보를 보려면 gcloud network-security security-profiles url-filtering describe 명령어를 실행합니다.
gcloud network-security security-profiles url-filtering describe NAME \
[ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
[--billing-project QUOTA_PROJECT_ID]
--location global
다음을 바꿉니다.
NAME: 보안 프로필의 이름입니다.이름에 고유한 URL 식별자 형식을 사용하지 않는 경우 조직 또는 프로젝트 이름과 위치를 지정해야 합니다.
ORGANIZATION_ID: 보안 프로필이 있는 조직 ID입니다.PROJECT_ID: 보안 프로필이 있는 프로젝트 ID입니다.QUOTA_PROJECT_ID: 할당량 프로젝트 ID 이 플래그는 조직 수준 보안 프로필에만 사용하세요.
URL 필터링 보안 프로필 삭제
이름, 위치, 조직 또는 프로젝트를 지정하여 URL 필터링 보안 프로필을 삭제할 수 있습니다. 보안 프로필 그룹에서 보안 프로필을 참조하는 경우에는 해당 보안 프로필을 삭제할 수 없습니다.
URL 필터링 보안 프로필을 삭제하려면 Google Cloud 콘솔 또는 gcloud CLI를 사용합니다. 그러나 보안 프로필 그룹에서 보안 프로필을 참조하는 경우에는 해당 보안 프로필을 삭제할 수 없습니다.
콘솔
Google Cloud 콘솔에서 보안 프로필 페이지로 이동합니다.
보안 프로필 탭을 선택합니다. 구성된 보안 프로필 목록이 탭에 표시됩니다.
삭제하려는 보안 프로필을 선택한 후 삭제를 클릭합니다.
삭제를 다시 클릭하여 확인합니다.
gcloud
URL 필터링 보안 프로필을 삭제하려면 gcloud network-security security-profiles url-filtering delete 명령어를 사용합니다.
gcloud network-security security-profiles url-filtering delete NAME \
[ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
--location global
다음을 바꿉니다.
NAME: 보안 프로필의 이름입니다.고유한 URL 식별자 형식으로 이름을 지정하지 않으면 조직 또는 프로젝트 이름과 위치를 지정해야 합니다.
ORGANIZATION_ID: 조직 ID입니다. 조직 수준 보안 프로필에 이 플래그를 사용합니다.PROJECT_ID: 프로젝트 ID입니다. 프로젝트 수준 보안 프로필에 이 플래그를 사용합니다.QUOTA_PROJECT_ID: 할당량 프로젝트 ID 이 플래그는 조직 수준 보안 프로필에만 사용하세요.
URL 필터링 보안 프로필 가져오기
YAML 파일에서 URL 필터링 보안 프로필 (맞춤 생성 또는 이전에 내보낸 프로필)을 가져올 수 있습니다. URL 필터링 보안 프로필을 가져올 때 이름이 동일한 프로필이 이미 있는 경우 Cloud NGFW는 기존 프로필을 업데이트합니다.
YAML 파일에서 URL 필터링 보안 프로필을 가져오려면 gcloud CLI를 사용하세요. 가져올 때 이름이 같은 프로필이 이미 있으면 Cloud NGFW가 해당 프로필을 업데이트합니다.
gcloud
YAML 파일에서 URL 필터링 보안 프로필을 가져오려면 gcloud network-security security-profiles import 명령어를 사용합니다.
gcloud network-security security-profiles import NAME \
[ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
--location global \
--source FILE_NAME
다음을 바꿉니다.
NAME: 가져오려는url-filtering유형의 보안 프로필 이름입니다. 이름을 문자열이나 고유한 URL 식별자로 지정할 수 있습니다.ORGANIZATION_ID: 조직 ID입니다. 조직 수준 보안 프로필에 이 플래그를 사용합니다.PROJECT_ID: 프로젝트 ID입니다. 프로젝트 수준 보안 프로필에 이 플래그를 사용하세요.FILE_NAME: 구성 내보내기 데이터가 포함된 YAML 파일의 경로입니다.
URL 필터링 보안 프로필 내보내기
URL 필터링 보안 프로필을 YAML 파일로 내보낼 수 있습니다. 예를 들어 사용자 인터페이스를 사용하여 대규모 보안 프로필을 수정하는 대신 이 기능을 사용하여 보안 프로필을 내보내고, 빠르게 수정하고, 다시 가져올 수 있습니다.
URL 필터링 보안 프로필을 YAML 파일로 내보내려면 gcloud CLI를 사용하세요.
gcloud
URL 필터링 보안 프로필을 YAML 파일로 내보내려면 gcloud network-security security-profiles export 명령어를 사용합니다.
gcloud network-security security-profiles export NAME \
[ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
--location global \
--destination FILE_NAME
다음을 바꿉니다.
NAME: 내보내려는url-filtering유형의 보안 프로필 이름입니다. 이름을 문자열이나 고유한 URL 식별자로 지정할 수 있습니다.ORGANIZATION_ID: 조직 ID입니다. 조직 수준 보안 프로필에 이 플래그를 사용합니다.PROJECT_ID: 프로젝트 ID입니다. 프로젝트 수준 보안 프로필에 이 플래그를 사용합니다.FILE_NAME: Cloud NGFW가 구성을 내보낼 YAML 파일의 경로입니다.