注:
- 此教程需要访问 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 帮助中心。