注:
- 此教程需要访问 Oracle Cloud。要注册免费账户,请参阅开始使用 Oracle Cloud Infrastructure 免费层。
- 它使用 Oracle Cloud Infrastructure 身份证明、租户和区间示例值。完成实验室后,请使用特定于您的云环境的这些值替换这些值。
使用服务网关
简介
如果您是典型的 Oracle Cloud Infrastructure 客户,则您的虚拟云网络 (VCN) 中可能有需要访问 Oracle Cloud Infrastructure Object Storage 服务的资源,该服务具有可公开寻址的端点。到目前为止,您可以使用公共子网或 NAT 实例,在 VCN 中使用互联网网关访问服务。但是,由于隐私、安全或操作方面的考虑,您可能不希望使用这些选项。
通过启用以下功能,服务网关可缓解上述顾虑:
-
VCN 与对象存储之间的专用连接:您可以向 VCN 添加服务网关,并使用 VCN 的专用地址空间来访问对象存储,而不向公共互联网公开实例。VCN 中不需要公共子网、NAT 实例或互联网网关。
-
增强了对象存储桶的安全性:您可以限制从授权的 VCN 或从子网内的特定 IP 地址范围访问对象存储桶。您可以在 IAM 策略中添加对 VCN 和 IP 地址的条件引用,仅当您通过服务网关启动连接时才能满足这些条件。
要点
建议使用 Chrome 或 Edge 作为中介。同时将浏览器缩放设置为 80%。
-
Mac OS 用户应使用 ctrl+C / ctrl+V 在 OCI 控制台中复制和粘贴。
-
登录凭据将在指南后面提供(向下滚动)。每个用户必须使这些凭据变得简单。
注意:屏幕快照可能与实际 UI 不同。
先决条件
-
Oracle Cloud Infrastructure 账户身份证明(用户、密码、租户和区间)。
登录到 OCI 控制台以创建对象存储桶和 VCN
-
使用您的云租户名称、用户名和密码登录到 Oracle Cloud Infrastructure 控制台。
-
从 OCI 服务菜单中,单击对象存储。

-
在左侧导航窗格中的列表范围下方选择区间。
-
单击创建存储桶并填写对话框:
- 存储桶名称:提供名称
- 存储层:标准
- 加密:使用 ORACLE-MANAGED KEYS 压缩
-
单击创建存储桶。
-
单击工具栏中的“Apps(应用程序)”图标,然后选择 Git-Bash。

或者,打开终端窗口以运行 Git 命令。
-
将目录更改为 "Downloads"(下载)文件夹。输入命令:
$ cd /c/Users/PhotonUser/Downloads/
-
创建示例文件。输入命令:
touch samplefile这应在 Downloads 文件夹中创建名为“samplefile”的文件。
-
切换到 OCI 控制台窗口,然后单击存储桶名称。
提示:可以通过单击切换窗口在 OCI 控制台窗口和任何其他应用程序(例如 git-bash)之间进行交换。

-
时段详细信息窗口应可见。单击上载对象。

-
单击上载对象。填写对话框:
- OBJECT NAME PREFIX:提供前缀(可选)
- 计算机中的自动文件:单击 Select File(选择文件),然后浏览到创建了“Sample File(示例文件)”的位置
-
选择该文件,然后单击对话框中的上载对象。
该文件应在对象下可见。
-
从 OCI 服务菜单中,单击网络下的虚拟云网络。
在网络下的屏幕左侧的下拉菜单中选择区间,然后单击启动 VCN 向导。
注意:确保在“组件”列表中选择了正确的区间。
-
单击 VCN 与 Internet 连接,然后单击启动工作流。
-
填写对话框,然后单击 Next:
- VCN 名称:提供名称
- COMPARTMENT:确保已选择区间
- VCN CIDR 块:提供 CIDR 块 (10.0.0.0/16)
- PUBLIC SUBNET CIDR BLOCK:提供 CIDR 块 (10.0.1.0/24)
- PRIVATE SUBNET CIDR BLOCK:提供 CIDR 块 (10.0.2.0/24)
-
验证所有信息并单击创建。
这将创建具有以下组件的 VCN:VCN、公共子网、专用子网、Internet 网关 (IG)、NAT 网关 (NAT) 和服务网关 (SG)。
-
单击查看虚拟云网络可显示您的 VCN 详细信息。
-
单击创建子网。填写对话框:
- 名称:输入名称
- 子网类型:区域
- CIDR 块:输入 10.0.5.0/24
- 路由表:选择默认路由表
注意:对于生产部署,强烈建议创建单独的路由表。
- 子网访问:选择 "Private Subnet"(专用子网)
- DHCP 选项:选择默认设置
- 安全列表:选择默认安全列表
注意:对于生产部署,强烈建议创建单独的安全列表。
-
将其他所有选项保留为默认设置,然后单击 Create Subnet。

创建 SSH 密钥,使用预安装的 OCI CLI 创建两个计算实例
-
单击工具栏中的“Apps(应用程序)”图标,然后选择 Git-Bash。

或者,打开终端窗口以运行 Git 命令。
-
输入命令:
ssh-keygen提示:可以通过单击“切换窗口”图标在 OCI 控制台窗口、git-bash 会话和任何其他应用程序(记事本等)之间进行交换。

-
在要求“输入要保存密钥的文件”、“已创建的目录”、“输入密码短语”和“再次输入密码短语”时,按 Enter 键。

-
现在,您应当具有公钥和私钥:
/C/Users/ PhotonUser/.ssh/id_rsa(私钥)/C/Users/PhotonUser/.ssh/id_rsa.pub(公钥)注意:
id_rsa.pub用于创建计算实例,id_rsa用于通过 SSH 连接到计算实例。提示:输入命令:
cd /C/Users/PhotonUser/.ssh (No Spaces)然后:
ls验证这两个文件是否存在。
-
在 git-bash 中,输入命令:
cat /C/Users/PhotonUser/.ssh/id_rsa.pub突出显示密钥并复制。

-
单击“Apps(应用程序)”图标,启动记事本,然后将密钥粘贴到记事本中(作为备份)。

-
切换到 OCI 控制台。从 OCI 服务菜单中,单击计算下的实例。
-
单击创建实例。填写对话框:
-
为实例命名:输入名称
-
选择操作系统或映像源:单击更改映像源。在新窗口中,单击 Oracle Images 并选择 Oracle Cloud Developer Image。向下滚动,接受协议,然后单击选择图像。

-
可用性域:选择可用性域
-
实例类型:选择虚拟机
-
实例配置:选择 VM 配置
在“配置网络”下
-
虚拟云网络区间:选择您的区间
-
虚拟云网络:选择 VCN
-
子网区间:选择区间
-
子网:选择公共子网下的公共子网
-
使用网络安全组控制流量:保留未选中状态
-
分配公共 IP 地址:选中此选项

-
引导卷:保留默认值
-
添加 SSH 密钥:选择“粘贴 SSH 密钥”并粘贴之前保存的公钥。
-
-
单击创建。
-
记下计算实例的公共 IP 地址。
-
预先列出的步骤后,创建第二个计算实例。单击计算下的实例。
-
单击创建实例。填写对话框:
-
名称:输入名称
-
映像操作系统:单击更改映像源。在新窗口中,单击 Oracle 映像,然后选择 Oracle Cloud Developer Image。向下滚动,接受协议,然后单击选择图像。

-
可用性域:选择可用性域
-
实例类型:选择虚拟机
-
实例配置:选择 VM 配置
在“配置网络”下
- 虚拟云网络区间:选择您的区间
- 虚拟云网络:选择 VCN
- 子网区间:选择区间
- 子网:选择专用子网下的专用子网
- 使用网络安全组控制流量:保留未选中状态
- 引导卷:保留默认值
- 添加 SSH 密钥:选择“粘贴 SSH 密钥”并粘贴先前保存的公钥
-
-
单击创建。
注意:如果显示“服务限制”错误,请选择其他配置,例如 VM.Standard.E2.2 或 VM.Standard2.2。
-
实例处于运行状态后,单击实例名称并记下其专用 IP 地址。

-
要通过 SSH 连接到专用实例,我们将使用 SSH 代理命令。此命令允许我们通过堡垒主机“隧道”连接到专用实例。
建议不要在公共服务器上存储私有 SSH 密钥,例如堡垒主机(第一个计算实例)。
-
确保第二个计算具有第一个计算的公共 IP 和专用 IP。在 git-bash 窗口中,确保位于 /C/Users/PhotonUser/.ssh 目录中。输入命令:
bash ssh -t -o ProxyCommand='ssh -i <SSH_Private_Key_Name> opc@<FIRST_COMPUTE_PUBLIC_IP> -W %h:%p %r' -i <SSH_Private_Key_Name> opc@<SECOND_COMPUTE_PRIVATE_IP>
-
在安全提示符处输入“Yes(是)”。
-
检查 oci CLI 安装的版本。输入命令:
oci -v注意:版本应至少为 2.4.2X。

-
接下来,我们将配置 OCI CLI。输入命令:
oci setup config -
接受默认目录位置。
对于用户 OCI,请切换到 OCI 控制台窗口。依次单击“Human(人)”图标和用户名。在用户详细信息页面中,单击复制以复制 OCID。另请记下您的区域名称,如 OCI 控制台窗口中所示。将 OCID 粘贴到 SSH 会话中。

-
重复此步骤以查找租户 OCID(单击“Human(人)”图标,然后单击租户名称)。将 SSH 会话中的租户 OCID 粘贴到计算实例,然后提供您的区域名称(例如 us-ashburn-1, us-phoneix-1)。
-
当询问是否要生成新的 RSA 密钥对?,请回答 Y。对于问题的其余部分,按 Enter 键接受默认值。

上载 API 密钥并验证功能
-
oci setup config 还生成了一个 API 密钥。我们需要将此 API 密钥上载到我们的 OCI 账户以验证 API 调用。切换到 SSH 会话以计算实例以显示 API 密钥的内容。输入命令:
cat ~/.oci/oci_api_key_public.pem -
突出显示并复制 SSH 会话中的内容。切换到 OCI 控制台,单击“Human(人)”图标,后跟您的用户名。在用户详细信息页面中,单击添加公共密钥。在拨号框中,粘贴公共密钥内容,然后单击添加。


-
将生成新的指纹。切换到 git-bash 窗口并输入命令:
cat /home/opc/.oci/config将配置文件输出中的指纹与 OCI 控制台窗口中的指纹进行比较,并确保它们匹配。
我们现在将对象上载到对象存储,然后从第二个计算实例访问对象存储。此下载内容将使用计算实例的公共 IP。
-
切换回 OCI 控制台窗口并导航到您的对象存储桶详细信息页面。请记下名称空间和对象存储名称。

-
切换到 git-bash 窗口(Sh 会话到第二个计算实例)并下载示例文件。输入命令:
`bash oci os object get --namespace <NAME_SPACE> --bucket-name <BUCKET_NAME> --name samplefile --file ./提示:在此示例中,命令将为:
oci os object get --namespace us_training --bucket-nameService-Gateway-Bucket --name samplefile --file ./samplefile
-
不会显示任何输出,也不会下载任何文件。输入 Ctrl+C 以终止命令。输入命令:
ls并验证未下载样例文件。
由于第二个计算实例上没有公共 IP,因此不能访问对象存储。接下来,我们将初始化路由表并重新下载文件。
-
切换到 OCI 控制台。从 OCI 服务菜单中,单击网络下的虚拟云网络。找到您的 VCN 并单击 VCN 名称以显示 VCN 详细信息。
-
单击路由表,然后单击 Default Route Table for
<VCN_NAME>。
-
单击添加路由规则。填写对话框:
- TARGET TYPE:服务网关
- 测试服务:OCI IAD-ObjectStorage
- COMPARTMENT:选择区间
- TARGET SERVICE GATEWAY:选择之前创建的服务网关
-
单击添加路由规则。应创建新的路由条目。

-
在您的 VCN 中,单击安全列表,然后单击默认
<VCN_NAME>安全列表。单击添加出站规则。 -
添加以下出站规则;确保不选中 STATELESS 标志。
- 终止类型:服务
- 终止服务:OCI IAD 对象存储
- 来源端口范围:所有
- DESTINATION PORT RANGE:所有

-
单击添加出站规则。
-
切换到 git-bash 窗口(通过 SSH 连接到第二个计算实例)。
-
重新输入下载命令:
bash oci os object get --namespace <NAME_SPACE> --bucket-name <BUCKET_NAME> --name samplefile --file ./
使用服务网关,计算实例能够访问对象存储中存储的对象。这是使用 OCI 的专用主干网络而不是公共互联网完成的。
删除资源
作为练习,您需要弄清删除资源期间遇到的任何错误。
-
切换到 OCI 控制台窗口。
-
如果未显示计算实例,请在 OCI 服务菜单中单击计算下的实例。
-
找到计算实例,单击“操作”图标,然后单击终止。

-
确保选中永久删除附加的引导卷并单击终止实例。等待实例完全终止。

-
重复这些步骤以删除第二个计算实例。
-
从 OCI 服务菜单中,单击网络下的虚拟云网络。
将显示所有 VCN 的列表。
-
找到您的 VCN,单击“操作”图标,然后单击终止。在确认窗口中单击全部删除。删除 VCN 后,单击关闭。

-
从 OCI 服务菜单中,导航到 OBject Storage。单击存储桶名称。在对象下,您的文件应可见。单击“操作”图标(3 个垂直点)并单击删除以删除对象。
-
删除对象后,单击删除以删除存储桶。
致谢
- Authors-Flavio Pereira, Larry Beausoleil
- 内容提供者 - Yaisah Granillo(云解决方案工程师)
更多学习资源
在 docs.oracle.com/learn 上浏览其他实验室,或者在 Oracle Learning YouTube 渠道上访问更多免费学习内容。此外,访问 education.oracle.com/learning-explorer 以成为 Oracle Learning Explorer。
有关产品文档,请访问 Oracle 帮助中心。