注意:

创建和配置 Oracle Cloud Infrastructure 零信任包路由

简介

Oracle Cloud Infrastructure (OCI) Zero Trust Packet Routing 独立于底层网络架构管理网络安全策略,防止未经授权的数据访问。使用易于理解和基于意图的策略语言,安全管理员可以为数据定义特定的访问路径。策略未明确允许的流量无法在网络中传输,从而提高安全性,同时简化了安全、网络和审计团队的工作。

以下教程详细介绍了如何配置 OCI Zero Trust Packet Routing,以应用安全控制来监管 Oracle Cloud Infrastructure (OCI) 租户中的网络通信。在本教程中,已部署了以下体系结构。

图中显示了此 ZPR 用例的体系结构。

在此体系结构中,配置了以下资源:

此外,还为此用例配置了单独的 VCN (so-vcn-pt ),其中包括:

目标

先决条件

任务 1:确认从客户机访问数据库

在本任务中,我们将确认两个计算实例都能够通过 Oracle Instant Client 访问数据库。

  1. 使用 SSH 作为 opc 用户连接到 client-prod 计算实例。

  2. 运行 sqlplus 命令以连接到自治数据库。

    根据先决条件,应安装和配置 Oracle Instant 客户机。以下是设置步骤的摘要:

    • 下载并安装 Oracle Instant Client。

    • 配置 Oracle Instant Client。

    • 从 OCI 下载自治数据库的连接 wallet。

    • 将 wallet 提取到文件夹中。

    • 配置 wallet 文件夹中的 sqlnet.ora 文件以指向您的 wallet 位置。

    • 导出变量 TNS_ADMIN 以指向提取的 wallet 位置。例如,export TNS_ADMIN=/opt/wallet

    • 运行 sqlplus 命令,例如 sqlplus admin@financeprod_low,并在出现提示时输入密码。

    如果 Oracle Instant Client 正常工作并且已完成所有先决条件,则应成功连接到数据库并能够运行命令。运行 show user; 命令以查看用户。

    屏幕抓图中显示了对 client-prod 的 SSH 访问。

  3. client-dev 重复数据库连接测试。

    屏幕截图中显示了对 client-dev 的 SSH 访问。

    如果 Oracle Instant Client 正常工作并且已完成所有先决条件,则应成功连接到数据库并能够运行命令。运行 show user; 命令以查看用户。

任务 2:启用 OCI 零信任包路由

如果这是您首次在租户中使用 OCI 零信任包路由,则需要启用该路由。

  1. 以具有适当权限的用户身份登录到 OCI 控制台,以管理 OCI Zero Trust Packet Routing 资源和本教程中使用的其他资源。

  2. 转到 Identity and Security(身份和安全),然后单击 Zero Trust Packet Routing(零信任包路由)

  3. 单击启用 ZPR ,该按钮将灰显,并且 OCI 零信任包路由菜单将变得可访问。

    屏幕截图中显示了 ZPR 已启用。

任务 3:配置 OCI 零信任包路由安全属性

要配置 OCI Zero Trust Packet Routing,我们需要设置将在 OCI Zero Trust Packet Routing 策略中使用的安全属性。

在本任务中,我们将创建三个新的安全属性来表示网络、数据库和应用程序。我们将为这些安全属性创建预定义值。

  1. 转至 Zero Trust Packet Routing(零信任包路由),然后单击 Security Attribute Namespace(安全属性名称空间)

  2. 列表范围下,选择 root 区间。我们将提供预定义的 oracle-zpr 名称空间

    屏幕截图中显示了 ZPR 安全属性名称空间。

  3. 单击 oracle-zpr,您将看到预定义的 sensitivity 安全属性。在本教程中,我们不会使用该属性。

  4. 选择创建安全属性以创建新的安全属性。

  5. 创建安全属性中,输入以下信息。

    • 名称:输入 app
    • 说明:输入 Security attribute representing applications
    • 安全属性值类型:选择值列表
    • 值:输入 proddev(在单独的行上)。

    屏幕截图中显示了应用程序的 ZPR 安全属性。

  6. 单击创建可创建新属性。

  7. 重复步骤 5 和 6,再创建两个安全属性。

    • 使用以下信息为数据库创建安全属性:

      • 名称:输入 db
      • 说明:输入 Security attribute representing databases
      • 安全属性值类型:选择值列表
      • 值:输入 proddev(在单独的行上)。
    • 使用以下信息为网络创建安全属性:

      • 名称:输入 network
      • 说明:输入 Security attribute representing networks
      • 安全属性值类型:选择值列表
      • 值:输入 proddev(在单独的行上)。

    完成后,您应看到安全属性的列表,包括预定义的 sensitivity 属性。

    屏幕抓图中显示了 "Zero Trust Packet Routing"(零信任包路由)安全属性的列表。

任务 4:创建 OCI 零信任包路由策略

我们已经定义了安全属性,现在我们需要创建策略来控制网络上的信息流。

对于此用例,我们需要一个允许生产应用程序能够与生产数据库通信的策略。在本任务中,我们将配置 OCI Zero Trust Packet Routing 策略来实现这一目标。

  1. 转到 OCI 控制台,导航到身份和安全零信任包路由,然后单击策略

  2. 单击创建策略以创建新的 OCI 零信任包路由策略。

  3. 输入以下信息,然后单击添加策略语句以将策略语句添加到策略。

    • 名称:输入 prod_policy
    • 说明:输入 Policy to allow production clients in the production network to access production databases
  4. 检查用于构建策略语句的三个选项,选择手动策略构建器,输入以下策略语句,然后单击添加以保存策略语句。

    • 策略语句:输入 in network:prod VCN allow app:prod endpoints to connect to db:prod endpoints with protocol = 'tcp/1522'

    注:策略语句易于理解,即使没有说明也是如此。但是,为了清楚起见,您告诉 OCI Zero Trust Packet Routing,您希望分配有安全属性 app:prod 的任何资源能够与通过 TCP 协议 1522 在 network:prod VCN 中分配有 db:prod 安全属性的任何资源通信。

    屏幕截图中显示了 prod_policy 语句。

    您完成的策略应如下所示:

    屏幕截图中显示了 prod_policy。

  5. 单击创建策略以完成 prod_policy 的创建。

    注:将安全属性分配给资源后,将强制实施 OCI 零信任包路由策略,并且只允许与 OCI 零信任包路由策略匹配的流量传输网络。由于您将向两个计算实例分配安全属性,因此您将无法通过 SSH 访问这些计算实例,因为没有 OCI 零信任包路由策略来允许对客户端进行 SSH 访问。因此,您需要通过创建两个附加策略来解决此问题。

  6. 重复第 2 步至第 5 步,创建另外两个 OCI 零信任包路由策略,以便通过 SSH 连接到计算实例。

    • 允许通过 SSH 访问 client-prod 的策略:

      • 名称:输入 prod_client_access_policy
      • 说明:输入 Policy to allow SSH access to the production clients in the production network
      • 策略语句:输入 in network:prod VCN allow 'x.x.x.x/32' to connect to app:prod endpoints with protocol='tcp/22'
    • 允许通过 SSH 访问 client-dev 的策略:

      • 名称:输入 dev_client_access_policy
      • 说明:输入 Policy to allow dev clients in the production network to access production databases
      • 策略语句:输入 in network:prod VCN allow 'x.x.x.x/32' to connect to app:dev endpoints with protocol='tcp/22'

      注:

      • x.x.x.x 替换为您的 IP 地址。

      • 在生产方案中,通常通过 OCI 堡垒主机访问客户端。但是,为了使本教程保持简单,访问是直接的。因此,需要包括通过 SSH 连接到客户端的源计算机的外部 IP 地址。

    您完成的策略应如下所示:

    屏幕截图中显示了 ZPR 策略列表。

任务 5:为资源分配安全属性

在此任务中,要配置 OCI Zero Trust Packet Routing,我们将为必要资源分配安全属性。

我们将 db 安全属性与数据库关联,将 app 安全属性与您的两个客户端关联,将 network 安全属性与您的 VCN 关联。

注:分配安全属性时,可以从“OCI 零信任包路由”屏幕或从各个资源执行此操作。本教程将向您展示这两种方法。

  1. 将安全属性分配给数据库。

    1. 转到 OCI 控制台,导航到 Oracle DatabaseAutonomous Database

      注:请确保您位于创建数据库的区间中,并且应该会看到该数据库已列出。

      屏幕截图中显示了 Autonomous Database。

    2. 从可用数据库列表中选择您的数据库(例如 Finance-PROD)。

    3. 单击安全属性。您将看到它当前为空且未分配安全属性。

      屏幕截图中显示了 "Security Attributes" 选项卡。

    4. 单击添加安全属性并输入以下信息。

      • 名称空间:选择 oracle-zpr
      • 关键字:选择 db
      • 值:选择 prod

      屏幕截图中显示了安全属性的选择。

    5. 单击添加安全属性可将安全属性分配给数据库。数据库将更新,并将分配属性。

      屏幕截图中显示了已填充的“Security Attributes(安全属性)”选项卡。

  2. 将安全属性分配给计算实例。

    1. 转到 OCI 控制台,导航到计算实例

      注:请确保您位于创建计算实例的区间中,并且应该会看到这两个实例都已列出。

      屏幕截图中显示了计算实例。

    2. 从可用实例列表中选择 client-prod 实例。

    3. 单击安全。这是空的,因为尚未将安全属性分配给实例。

      屏幕截图中显示了 "Security Attributes" 选项卡。

    4. 单击添加安全属性并输入以下信息。

      • 名称空间:输入 oracle-zpr
      • 关键字:输入 app
      • 值:输入 prod

      屏幕截图中显示了安全属性的选择。

    5. 单击添加安全属性可将安全属性分配给数据库。将更新计算实例并分配属性。

      屏幕截图中显示了已填充的“Security Attributes(安全属性)”选项卡。

    6. 转到 OCI 控制台,导航到计算实例

      屏幕抓图中显示了计算面包屑菜单。

    7. 从可用实例列表中选择 client-dev 实例。

    8. 单击安全

      屏幕截图中显示了 "Security Attributes" 选项卡。

    9. 单击添加安全属性并输入以下信息。

      • 名称空间:选择 oracle-zpr
      • 关键字:选择 app
      • 值:选择 dev

      屏幕截图中显示了安全属性的选择。

    10. 单击添加安全属性可将安全属性分配给数据库。将更新计算实例并分配属性。

      屏幕截图中显示了已填充的“Security Attributes(安全属性)”选项卡。

  3. 将安全属性分配给 VCN。

    1. 转到 OCI 控制台,导航到网络虚拟云网络

      注:请确保您位于创建 VCN 的区间中,并且应当会看到该区间已列出。

      屏幕抓图中显示了 VCN。

    2. 从可用 VCN 列表中选择 so-vcn-pt VCN。

    3. 单击安全

      屏幕截图中显示了 "Security Attributes" 选项卡。

      注:要分配此安全属性,您需要通过“OCI 零信任包路由”菜单(而不是资源)进行分配。这显示了分配 OCI 零信任包路由安全属性的两种不同方式。

    4. 转到 OCI 控制台,导航到身份和安全零信任包路由,然后单击受保护资源

      您将看到已受保护的现有资源列表,例如,已将安全属性分配给这些资源。

      屏幕抓图中显示了受 ZPR 保护的资源。

    5. 单击将安全属性添加到资源

    6. 要筛选列表,请选择您在其中创建 VCN 的区间,并将资源类型选择为 Vcn

      屏幕抓图中显示了受 ZPR 保护的资源。

    7. 选择 VCN ( so-vcn-pt ),然后单击下一步

    8. 输入以下信息。

      • 安全属性名称空间:选择 oracle-zpr
      • 安全属性:选择 network
      • 安全属性值:选择 prod

      屏幕截图中显示了 ZPR 保护的资源属性选择。

    9. 单击下一步并查看摘要。

      屏幕截图中显示了 ZPR 保护的资源属性选择摘要。

    10. 单击提交关闭以退出工作请求。几分钟后,工作请求将完成,VCN 将显示在受保护资源中。我们还可以签入 VCN 来确保已分配安全属性。

    11. 重复第 1 步至第 3 步,查看分配给 VCN 的安全属性。

      屏幕截图中显示了分配给 VCN 的安全属性。

任务 6:测试策略

现在,OCI Zero Trust Packet Routing 配置已完成,最终任务是测试策略。在本教程中,我们有两个测试用例。

  1. 第一个测试用例是确保 client-prod 仍然能够访问 financeprod 数据库。

    1. 使用 SSH 作为 opc 用户连接到 client-prod 计算实例。

      OCI Zero Trust Packet Routing 策略允许从本地计算机进行此连接,因此您的 SSH 连接应该成功。

    2. 运行 sqlplus 命令以连接到自治数据库。

      OCI Zero Trust Packet Routing 策略允许从生产客户端 ( client-prod ) 到生产数据库 ( financeprod ) 的此连接,因此您应该成功连接到数据库并能够运行 show user; 命令。

      屏幕抓图中显示了对 client-prod 的 SSH 访问。

  2. 第二个测试用例是确保 client-dev 不再能够访问 financeprod 数据库。

    1. 使用 SSH 作为 opc 用户连接到 client-dev 计算实例。

      您的零信任包路由策略允许从本地计算机进行此连接,因此您的 SSH 连接应该成功。

    2. 运行 sqlplus 命令以连接到自治数据库。

      由于没有 OCI Zero Trust Packet Routing 策略允许此连接从开发客户端 ( client-dev ) 到生产数据库 ( financeprod ),因此将阻止连接。

      屏幕截图中显示了从 client-dev 对数据库的 SQL 访问失败。

确认

更多学习资源

浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。

有关产品文档,请访问 Oracle 帮助中心