注意:
- 本教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费套餐。
- 它对 Oracle Cloud Infrastructure 身份证明、租户和区间使用示例值。完成实验室后,请使用特定于云环境的那些值替换这些值。
创建和配置 Oracle Cloud Infrastructure 零信任包路由
简介
Oracle Cloud Infrastructure (OCI) Zero Trust Packet Routing 独立于底层网络架构管理网络安全策略,防止未经授权的数据访问。使用易于理解和基于意图的策略语言,安全管理员可以为数据定义特定的访问路径。策略未明确允许的流量无法在网络中传输,从而提高安全性,同时简化了安全、网络和审计团队的工作。
以下教程详细介绍了如何配置 OCI Zero Trust Packet Routing,以应用安全控制来监管 Oracle Cloud Infrastructure (OCI) 租户中的网络通信。在本教程中,已部署了以下体系结构。
在此体系结构中,配置了以下资源:
-
financeprod
是 Oracle Autonomous Database 的实例,该实例配置为生产数据库,托管在专用网络中,可通过专用端点在专用子网内访问。 -
client-prod
是模拟生产环境中的企业应用程序的计算实例。对于此方案,这是运行 Oracle Instant Client 的 Oracle Linux 实例。 -
client-dev
是一种在开发环境中模拟企业应用的计算实例。与 client-prod 一样,这是运行 Oracle Instant Client 的 Oracle Linux 实例。
此外,还为此用例配置了单独的 VCN (so-vcn-pt
),其中包括:
-
subnet-public
是包含计算实例的公共子网。 -
subnet-private
是包含数据库的专用子网。 -
sl-allow-public
是允许通过 Internet 访问 SSH 的安全列表。还配置了出站规则以允许出站流量。它被指定给subnet-public
。 -
sl-allow-private
是允许来自subnet-public
的 Oracle Instant Client 流量(端口1522
)的安全列表。还配置了出站规则以允许出站流量。此安全列表已分配给subnet-private
。 -
route-public
是将所有流量路由到 Internet 网关的路由表。这已分配给subnet-public
。 -
route-private
是用于将所有流量路由到 NAT 网关的路由表。这已分配给subnet-private
。 -
gw-internet
是route-public
中使用的 Internet 网关。 -
gw-nat
是route-private
中使用的 NAT 网关。
目标
-
为 OCI 零信任包路由配置新的安全属性。
-
创建 OCI Zero Trust Packet Routing 策略来控制网络流量流。
-
将 OCI Zero Trust Packet Routing 安全属性分配给资源。
-
测试 OCI Zero Trust Packet Routing 策略。
先决条件
-
OCI 租户的付费订阅,具有管理 OCI 零信任包路由资源的适当权限。
-
体系结构中定义的网络结构。
-
按体系结构部署在公共子网中的两个计算实例。
-
在两个计算实例上安装和配置 Oracle Instant Client(包括 SQL*Plus 客户端)。
注:从此处下载并安装 Oracle Instant Client:使用 RPM 安装 Oracle Instant Client 。
-
根据体系结构创建 Oracle Autonomous Database 实例,并使用专用子网内的专用端点部署该实例。
-
在两个计算实例上配置从 Oracle Instant Client 对数据库的访问。
任务 1:确认从客户机访问数据库
在本任务中,我们将确认两个计算实例都能够通过 Oracle Instant Client 访问数据库。
-
使用 SSH 作为
opc
用户连接到 client-prod 计算实例。 -
运行
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-dev 重复数据库连接测试。
如果 Oracle Instant Client 正常工作并且已完成所有先决条件,则应成功连接到数据库并能够运行命令。运行
show user;
命令以查看用户。
任务 2:启用 OCI 零信任包路由
如果这是您首次在租户中使用 OCI 零信任包路由,则需要启用该路由。
-
以具有适当权限的用户身份登录到 OCI 控制台,以管理 OCI Zero Trust Packet Routing 资源和本教程中使用的其他资源。
-
转到 Identity and Security(身份和安全),然后单击 Zero Trust Packet Routing(零信任包路由)。
-
单击启用 ZPR ,该按钮将灰显,并且 OCI 零信任包路由菜单将变得可访问。
任务 3:配置 OCI 零信任包路由安全属性
要配置 OCI Zero Trust Packet Routing,我们需要设置将在 OCI Zero Trust Packet Routing 策略中使用的安全属性。
在本任务中,我们将创建三个新的安全属性来表示网络、数据库和应用程序。我们将为这些安全属性创建预定义值。
-
转至 Zero Trust Packet Routing(零信任包路由),然后单击 Security Attribute Namespace(安全属性名称空间)。
-
在列表范围下,选择
root
区间。我们将提供预定义的oracle-zpr
名称空间。 -
单击
oracle-zpr
,您将看到预定义的sensitivity
安全属性。在本教程中,我们不会使用该属性。 -
选择创建安全属性以创建新的安全属性。
-
在创建安全属性中,输入以下信息。
- 名称:输入
app
。 - 说明:输入
Security attribute representing applications
。 - 安全属性值类型:选择值列表。
- 值:输入
prod
和dev
(在单独的行上)。
- 名称:输入
-
单击创建可创建新属性。
-
重复步骤 5 和 6,再创建两个安全属性。
-
使用以下信息为数据库创建安全属性:
- 名称:输入
db
。 - 说明:输入
Security attribute representing databases
。 - 安全属性值类型:选择值列表。
- 值:输入
prod
和dev
(在单独的行上)。
- 名称:输入
-
使用以下信息为网络创建安全属性:
- 名称:输入
network
。 - 说明:输入
Security attribute representing networks
。 - 安全属性值类型:选择值列表。
- 值:输入
prod
和dev
(在单独的行上)。
- 名称:输入
完成后,您应看到安全属性的列表,包括预定义的
sensitivity
属性。 -
任务 4:创建 OCI 零信任包路由策略
我们已经定义了安全属性,现在我们需要创建策略来控制网络上的信息流。
对于此用例,我们需要一个允许生产应用程序能够与生产数据库通信的策略。在本任务中,我们将配置 OCI Zero Trust Packet Routing 策略来实现这一目标。
-
转到 OCI 控制台,导航到身份和安全、零信任包路由,然后单击策略。
-
单击创建策略以创建新的 OCI 零信任包路由策略。
-
输入以下信息,然后单击添加策略语句以将策略语句添加到策略。
- 名称:输入
prod_policy
。 - 说明:输入
Policy to allow production clients in the production network to access production databases
。
- 名称:输入
-
检查用于构建策略语句的三个选项,选择手动策略构建器,输入以下策略语句,然后单击添加以保存策略语句。
- 策略语句:输入
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
的创建。注:将安全属性分配给资源后,将强制实施 OCI 零信任包路由策略,并且只允许与 OCI 零信任包路由策略匹配的流量传输网络。由于您将向两个计算实例分配安全属性,因此您将无法通过 SSH 访问这些计算实例,因为没有 OCI 零信任包路由策略来允许对客户端进行 SSH 访问。因此,您需要通过创建两个附加策略来解决此问题。
-
重复第 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 地址。
- 名称:输入
您完成的策略应如下所示:
-
任务 5:为资源分配安全属性
在此任务中,要配置 OCI Zero Trust Packet Routing,我们将为必要资源分配安全属性。
我们将 db
安全属性与数据库关联,将 app
安全属性与您的两个客户端关联,将 network
安全属性与您的 VCN 关联。
注:分配安全属性时,可以从“OCI 零信任包路由”屏幕或从各个资源执行此操作。本教程将向您展示这两种方法。
-
将安全属性分配给数据库。
-
转到 OCI 控制台,导航到 Oracle Database 和 Autonomous Database 。
注:请确保您位于创建数据库的区间中,并且应该会看到该数据库已列出。
-
从可用数据库列表中选择您的数据库(例如
Finance-PROD
)。 -
单击安全属性。您将看到它当前为空且未分配安全属性。
-
单击添加安全属性并输入以下信息。
- 名称空间:选择
oracle-zpr
。 - 关键字:选择
db
。 - 值:选择
prod
。
- 名称空间:选择
-
单击添加安全属性可将安全属性分配给数据库。数据库将更新,并将分配属性。
-
-
将安全属性分配给计算实例。
-
转到 OCI 控制台,导航到计算和实例。
注:请确保您位于创建计算实例的区间中,并且应该会看到这两个实例都已列出。
-
从可用实例列表中选择 client-prod 实例。
-
单击安全。这是空的,因为尚未将安全属性分配给实例。
-
单击添加安全属性并输入以下信息。
- 名称空间:输入
oracle-zpr
。 - 关键字:输入
app
。 - 值:输入
prod
。
- 名称空间:输入
-
单击添加安全属性可将安全属性分配给数据库。将更新计算实例并分配属性。
-
转到 OCI 控制台,导航到计算和实例。
-
从可用实例列表中选择 client-dev 实例。
-
单击安全。
-
单击添加安全属性并输入以下信息。
- 名称空间:选择
oracle-zpr
。 - 关键字:选择
app
。 - 值:选择
dev
。
- 名称空间:选择
-
单击添加安全属性可将安全属性分配给数据库。将更新计算实例并分配属性。
-
-
将安全属性分配给 VCN。
-
转到 OCI 控制台,导航到网络和虚拟云网络。
注:请确保您位于创建 VCN 的区间中,并且应当会看到该区间已列出。
-
从可用 VCN 列表中选择 so-vcn-pt VCN。
-
单击安全。
注:要分配此安全属性,您需要通过“OCI 零信任包路由”菜单(而不是资源)进行分配。这显示了分配 OCI 零信任包路由安全属性的两种不同方式。
-
转到 OCI 控制台,导航到身份和安全、零信任包路由,然后单击受保护资源。
您将看到已受保护的现有资源列表,例如,已将安全属性分配给这些资源。
-
单击将安全属性添加到资源。
-
要筛选列表,请选择您在其中创建 VCN 的区间,并将资源类型选择为
Vcn
。 -
选择 VCN ( so-vcn-pt ),然后单击下一步。
-
输入以下信息。
- 安全属性名称空间:选择
oracle-zpr
。 - 安全属性:选择
network
。 - 安全属性值:选择
prod
。
- 安全属性名称空间:选择
-
单击下一步并查看摘要。
-
单击提交和关闭以退出工作请求。几分钟后,工作请求将完成,VCN 将显示在受保护资源中。我们还可以签入 VCN 来确保已分配安全属性。
-
重复第 1 步至第 3 步,查看分配给 VCN 的安全属性。
-
任务 6:测试策略
现在,OCI Zero Trust Packet Routing 配置已完成,最终任务是测试策略。在本教程中,我们有两个测试用例。
-
第一个测试用例是确保 client-prod 仍然能够访问 financeprod 数据库。
-
使用 SSH 作为
opc
用户连接到 client-prod 计算实例。OCI Zero Trust Packet Routing 策略允许从本地计算机进行此连接,因此您的 SSH 连接应该成功。
-
运行
sqlplus
命令以连接到自治数据库。OCI Zero Trust Packet Routing 策略允许从生产客户端 ( client-prod ) 到生产数据库 ( financeprod ) 的此连接,因此您应该成功连接到数据库并能够运行
show user;
命令。
-
-
第二个测试用例是确保 client-dev 不再能够访问 financeprod 数据库。
-
使用 SSH 作为
opc
用户连接到 client-dev 计算实例。您的零信任包路由策略允许从本地计算机进行此连接,因此您的 SSH 连接应该成功。
-
运行
sqlplus
命令以连接到自治数据库。由于没有 OCI Zero Trust Packet Routing 策略允许此连接从开发客户端 ( client-dev ) 到生产数据库 ( financeprod ),因此将阻止连接。
-
相关链接
确认
- Authors -Paul Toal(现场 CISO 高级总监)
更多学习资源
浏览 docs.oracle.com/learn 上的其他实验室,或者访问 Oracle Learning YouTube 渠道上的更多免费学习内容。此外,请访问 education.oracle.com/learning-explorer 成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。
Create and Configure Oracle Cloud Infrastructure Zero Trust Packet Routing
G17491-01
October 2024