创建和管理网址过滤安全配置文件

网址过滤安全配置文件是第 7 层政策结构,使用网址过滤条件为防火墙端点定义安全政策。这些配置文件会评估网络流量中的网域名称,以根据特定的匹配器字符串和优先级强制执行允许或拒绝操作。

本页介绍了如何创建和管理 网址 过滤安全配置文件

准备工作

角色

如需获得创建、查看、更新或删除安全配置文件所需的权限,请让您的管理员向您授予组织的必要 Identity and Access Management (IAM) 角色。如需详细了解如何授予角色,请参阅管理访问权限

创建网址过滤安全配置文件

如需创建 url-filtering 安全配置文件,请将名称指定为字符串或唯一网址标识符。

控制台

  1. 在 Google Cloud 控制台中,前往安全配置文件页面。

    前往“安全配置文件”

  2. 在项目选择器菜单中,选择您要在其中创建安全配置的组织或项目。

  3. 选择安全配置文件标签页。

  4. 点击创建配置文件

  5. 名称字段中输入名称。

  6. 可选:在说明字段中输入说明。

  7. 如需创建 Cloud Next Generation Firewall Enterprise 安全配置文件,请在用途部分中选择 Cloud NGFW Enterprise

  8. 如需创建网址过滤安全配置文件,请在类型部分中选择网址过滤

  9. 网址过滤条件部分,点击创建网址过滤条件按钮。

  10. 创建网址过滤条件窗格中,指定以下详细信息:

    • 优先级:指定网址过滤条件的优先级。
    • 操作:指定 Cloud NGFW 对流量执行的操作。
      • 允许:允许与网址匹配的连接。
      • 拒绝:拒绝与网址匹配的连接。
    • 网址列表:指定网址列表或匹配器字符串。每个网址或匹配器字符串条目必须独占一行,且不得包含任何空格或分隔符。每个条目只能包含一个网域。如需详细了解匹配器字符串,请参阅网址的匹配器字符串
  11. 点击创建

gcloud

  1. 创建一个包含以下内容的 YAML 文件:

    name: NAME
    type: url-filtering
    urlFilteringProfile:
      urlFilters:
        - filteringAction: ACTION
          priority: PRIORITY
          urls: [URL,URL,...]
    

    替换以下内容:

    • NAME:网址过滤安全配置文件的名称;您可以将名称指定为字符串或唯一网址标识符。

    • ACTION:指定以下操作之一:

      • ALLOW:允许与网址匹配的连接
      • DENY:拒绝与网址匹配的连接
    • PRIORITY:网址过滤条件的优先级,范围为 0 到 2147483647。

    • URLs:逗号分隔列表形式的匹配器字符串。例如,www.example.comwww.examplepetstore.com

  2. 如需创建网址过滤安全配置文件,请运行 gcloud network-security security-profiles import 命令

    gcloud network-security security-profiles import NAME \
      --source FILE_NAME \
      [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
      --location global
    

    或者,您也可以不使用 YAML 文件,而是使用 gcloud network-security security-profiles url-filtering create 命令创建网址过滤安全配置文件:

    gcloud network-security security-profiles url-filtering create NAME \
        [ --organization ORGANIZATION_ID | --project PROJECT_ID ] \
        --description DESCRIPTION \
        --location global
    

    替换以下内容:

    • NAME:网址过滤安全配置文件的名称。

      如果您不使用名称的唯一网址标识符格式,则必须指定组织或项目名称以及位置。

    • FILE_NAME:YAML 文件的名称。例如 url-filtering-sp.yaml

    • ORGANIZATION_ID:组织 ID。使用此标志可创建组织级安全配置文件。

    • PROJECT_ID:项目 ID。 使用此标志可创建项目级安全配置文件。

    • DESCRIPTION:网址过滤安全配置文件的可选说明。

    例如,以下代码段展示了一个网址过滤安全配置文件的示例,该配置文件允许向 www.example.comwww.examplepetstore.com 发出请求,但拒绝向所有其他网域发出请求:

    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: ['*']
    

隐式拒绝网址过滤条件

网址过滤安全配置文件始终包含一个优先级最低 (2147483647) 的默认网址过滤条件,该过滤条件会拒绝所有与优先级较高的网址过滤条件不匹配的连接。以下代码段展示了隐式拒绝网址过滤器的示例:

  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: ['*']
  

在查看或导出网址过滤安全配置文件时,您会看到隐式拒绝网址过滤条件。您无法修改或移除隐式过滤条件。 例如,如果您想将配置文件的默认操作从 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: ['*']
  

网址的匹配器字符串

匹配器字符串是指您在网址过滤条件的 urls 字段中指定的值。您可以在网址过滤条件中指定一个或多个匹配器字符串。

通配符

网址列表中的每个匹配器字符串都以有限的方式支持通配符 (*)。

  • 每个匹配字符串只能支持一个星号 (*),星号要么是第一个字符,要么是唯一的字符。
  • 星号 (*) 可具有以下含义:

    • 星号 (*) 位于英文句点 (.) 前表示相应网域的所有子网域。

      例如,匹配器字符串 *.example.com 可与 a.example.coma.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.coma.example.coma.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.comexamplepetstore.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.comexamplepetstore.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.testnewexample.testa.newexample.test 不匹配。而仅与 example.test 及其子网域匹配。example.test

    • 单独一个星号 (*) 而不含其他字符表示匹配所有请求。

      例如,优先级最低的显式允许网址过滤条件中的匹配字符串仅包含一个星号 (*),并且具有 ALLOW 操作,该操作会替换默认的 DENY 操作。之所以会发生这种情况,是因为隐式拒绝网址过滤器会针对任何与较高优先级网址过滤器不匹配的请求强制执行默认的 DENY

      当 Cloud NGFW 缺少 SNI 或网域信息时,最高优先级的网址过滤条件(显式 ALLOW 或隐式 DENY)会决定 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 字母、数字和特殊字符:连字符 (-)、英文句点 (.) 和星号 (*)。

您必须使用 Punycode 来转换包含除 ASCII 字母、数字、连字符 (-)、英文句点 (.) 或星号 (*) 以外的字符的域名。Punycode 是一种编码标准,可将 Unicode 域名转换为 ASCII 兼容格式。

  • 如果您有多个标签,请使用英文句点 (.) 分隔它们。标签可以包含一个或多个连字符 (-),但不得以连字符开头或结尾。每个标签最多可包含 63 个字符。

  • 网址过滤条件不支持在域名开头使用英文句点,也不支持在匹配器字符串中使用连续的英文句点。网址过滤条件允许结尾包含英文句点,不过 Cloud NGFW 会在保存网址过滤条件之前将其移除。

  • Cloud NGFW 会在保存网址过滤条件之前将匹配器字符串转换为小写。Cloud NGFW 不会执行任何其他归一化操作。

  • 每个域名最多可包含 255 个字符。

多级子网域的网址过滤条件

您可以使用具有不同优先级和操作的网址过滤条件来控制多级子网域的网络流量。您还可以在匹配器字符串中使用通配符 (*) 来指定网域和子网域。

例如,假设您实现了以下行为:

  • 允许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: ['*']
  

列出并查看网址过滤安全配置文件的详细信息

您可以列出组织或项目中创建的网址过滤安全配置文件。您还可以查看配置文件的详细信息,例如类型、用途和说明。

控制台

  1. 在 Google Cloud 控制台中,前往安全配置文件页面。

    前往“安全配置文件”

  2. 选择安全配置文件标签页,以查看已配置的安全配置文件的列表。

  3. 如需过滤网址过滤安全配置文件,请在过滤条件字段中将配置文件类型指定为网址过滤

    该标签页会显示网址过滤安全配置文件的列表。

  4. 如需查看配置文件的详细信息,请点击网址过滤安全配置文件。

gcloud

如需列出所有网址过滤安全配置文件,请使用 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

如需查看网址过滤安全配置文件的详细信息,请运行 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:安全配置文件的名称。

    如果您不使用名称的唯一网址标识符格式,则必须指定组织或项目名称以及位置。

  • ORGANIZATION_ID:安全配置文件所在的组织 ID。

  • PROJECT_ID:安全配置文件所在的项目 ID。

  • QUOTA_PROJECT_ID:您的配额项目 ID。 此标志仅适用于组织级安全配置文件。

删除网址过滤安全配置文件

您可以通过指定网址过滤安全配置文件的名称、位置和组织或项目来删除它。如果安全配置文件被安全配置文件组引用,则无法删除该安全配置文件。

如需删除网址过滤安全配置文件,请使用 Google Cloud 控制台或 gcloud CLI。但是,如果安全配置文件组引用了安全配置文件,则无法删除该安全配置文件。

控制台

  1. 在 Google Cloud 控制台中,前往安全配置文件页面。

    前往“安全配置文件”

  2. 选择安全配置文件标签页。该标签页会显示已配置的安全配置文件的列表。

  3. 选择要删除的安全配置文件,然后点击删除

  4. 再次点击删除进行确认。

gcloud

如需删除网址过滤安全配置文件,请使用 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:安全配置文件的名称。

    如果您未以唯一网址标识符格式指定名称,则必须指定组织或项目名称以及位置。

  • ORGANIZATION_ID:组织 ID。针对组织级安全配置文件使用此标志。

  • PROJECT_ID:您的项目 ID。此标志用于项目级安全配置文件。

  • QUOTA_PROJECT_ID:您的配额项目 ID。 此标志仅适用于组织级安全配置文件。

导入网址过滤安全配置文件

您可以从 YAML 文件导入网址过滤安全配置文件(无论是自定义创建的还是之前导出的)。导入网址过滤安全配置文件时,如果已存在同名配置文件,Cloud NGFW 会更新现有配置文件。

如需从 YAML 文件导入网址过滤安全配置文件,请使用 gcloud CLI。如果您在导入时发现已存在同名配置文件,Cloud NGFW 会更新该配置文件。

gcloud

如需从 YAML 文件导入网址过滤安全配置文件,请使用 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 的安全配置文件的名称;您可以将名称指定为字符串或唯一网址标识符。

  • ORGANIZATION_ID:组织 ID。针对组织级安全配置文件使用此标志。

  • PROJECT_ID:项目 ID。 将此标志用于项目级安全配置文件。

  • FILE_NAME:包含配置导出数据的 YAML 文件的路径。

导出网址过滤安全配置文件

您可以将网址过滤安全配置文件导出到 YAML 文件。例如,您可以使用此功能导出安全配置文件,快速修改该文件,然后将其重新导入,而无需使用界面来修改大型安全配置文件。

如需将网址过滤安全配置文件导出到 YAML 文件,请使用 gcloud CLI。

gcloud

如需将网址过滤安全配置文件导出到 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 的安全配置文件的名称;您可以将名称指定为字符串或唯一网址标识符。

  • ORGANIZATION_ID:组织 ID。将此标志用于组织级安全配置文件。

  • PROJECT_ID:项目 ID。 此标志用于项目级安全配置文件。

  • FILE_NAME:Cloud NGFW 将配置导出到的 YAML 文件的路径。

后续步骤