UDN-企业互联网技术人气社区

板块导航

浏览  : 1443
回复  : 0

[讨论交流] 细谈 Oracle Cloud 中关于网络配置那些事儿

[复制链接]
瞌睡虫的头像 楼主
  
1.webp.jpg


  张乐奕(Kamus)

  云和恩墨副总经理,ACOUG联合创始人,OracleACE总监

  对于OracleDBA而言,网络上的配置可能都是短板,而如果在公有云中进行Oracle数据库的部署,那么几乎要求一个DBA变成全栈工程师,因为已经不需要你进行网络基础架构的安装,那么对整个环境进行简单的网络设定配置就成为必不可少的技能之一。

  本文会着重介绍OracleCloud中关于网络设定的概念和设置方法。

  在这之前要先简单介绍OracleCloud.

2.webp.jpg



  也许你已经听说过AmazonAWS、MicrosoftAzure,甚至你已经在使用阿里云、华为云、腾讯云、青云,而Oracle无疑是这场云大战中的迟到者,但是从过去的2015年看,Oracle在Cloud市场上的表现却是不俗的,Oracle一直宣称自己是全球唯一最全面、最集成的一朵完整的云,提供了IaaS,PaaS,SaaS三个层面的所有产品,而让OracleCloud特别引人注意的,无疑是在RDBMS全球市场中占据霸主地位的Oracle数据库的云化。

  OracleDatabase在OracleCloud中目前有以下几种产品方式。

  1.DatabaseasaService提供一个客户独占的虚拟机,可以选择在其上安装的是11g还是12c数据库,包括可以选择安装一个2节点的RAC;客户对于虚拟机和运行在其上的数据库有完全的管理权限,包括操作系统的root权限,还有数据库的SYSDBA权限,提供一键备份和一键打补丁等简便的管理功能。

  2.ExadataService提供一个运行在Exadata上的11.2.0.4或者12.1.0.2的数据库,客户可以选择是全配、半配还是四分之一配,还可以选择是否是RAC,同样有操作系统的root权限和数据库的SYSDBA权限。

  3.DatabaseSchemaService提供一个在11g数据库中的Schema,客户可以选择存储空间大小(5GB-50GB),只能通过RESTful网络服务接口来访问该Schema中的表数据,毫无疑问,没有数据库的SYSDBA权限,操作系统也是完全不可见的。

  4.DatabaseasaService–Managed(该服务产品目前还没有正式发布)提供一个Oracle数据库给客户,客户拥有SYSDBA权限,可以以包括SQL*Net在内的各种方式访问数据库,操作系统不可见,Oracle原厂承担必要的维护工作,比如备份和PITR恢复、打补丁和升级。

  本文中使用的产品是DatabaseasaService,一套Oracle12.1.0.2RAC。CDB架构,初始化创建时候设定了一个PDB。

3.webp.jpg



  在数据库创建完毕以后,Oracle也默认创建了承载Oracle数据库的虚拟机,也就是底层的IaaS架构,在本文中是两台2CPU4核,15GB内存的虚拟机,每台机器有161GB存储空间(这其中包括了安装操作系统和Oracle软件的75GB本地空间,以及ASM使用的66GB共享空间)。

4.webp.jpg



  以上这些都不是本文的重点,我们要介绍的是OracleCloud的网络设定。要知道,新创建完的虚拟机虽然可以通过SSH来访问,但是数据库默认是无法通过监听来远程访问的,必须要进行网络设定的修改。

  在OracleCloud中网络层面的设定要涉及到以下几个概念,我们从管理界面中可以看到这些名词。

5.webp.jpg



  SecurityLists每个SecurityList包含了一组OracleComputeCloudService实例(每个OracleComputeCloudService实例可以简单地认为就是一台OracleCloud虚拟机,用AWS的语言说是一个EC2实例,用阿里云的语言说是一个ECS实例,以下简称为OCCS),在同一个SecurityList中的机器可以无障碍地通过任何网络端口进行数据交互,但是与外界的机器进行交互就要看这个SecurityList中对于inbound和outbound的策略定义了。Inbound策略控制了想进入这个SecurityList中的网络防火墙定义,Outbound策略控制了想传出这个SecurityList中的网络防火墙定义。inbound和outbound的策略都有3种,分别是permit,reject和deny。

  permit:允许任何数据包传输(在inbound策略中就是传入,在outbound策略中就是传出)

  reject:丢弃所有数据包,但是有回传信息告知数据包被丢弃

  deny:丢弃所有数据包,并且不回传任何信息

  如下这张图清晰地表现了不同SecurityList中不同的inbound和outbound策略下数据的可能流向。

6.webp.jpg



  默认创建的SecurityList的inbound策略都是deny,下图中有关联实例的命名为oracle-cloud-enmotech/1/db_1/ora_db的SecurityList是正在使用的,可以看到inbound策略是deny。

7.webp.jpg



  也就意味着所有的数据包不能传入到新建的机器上和数据库里。那么为什么新建的机器可以通过SSH访问,而又确实无法通过数据库监听来远程访问?这就需要提到下面这个概念-SecurityRules。

  不过在解释SecurityRules之前,需要先解释另外两个概念,SecurityApplications和SecurityIPLists。

  SecurityApplicationsSecurityApplication就是一组网络协议和端口的组合,从下图中可以清晰地看出来。

  命名为ssh的SecurityApplication就是tcp协议的22端口,这就是ssh默认的端口。

8.webp.jpg



  命名为ora_scan_listener的SecurityApplication就是tcp协议的1521端口,这就是数据库SCAN监听默认的端口。

9.webp.jpg



  再比如命名为ora_monitor_12c的SecurityApplication就是tcp协议的5500端口,这就是12c新的EMExpress默认使用的端口。

10.webp.jpg



  SecurityIPLists另外一个关键的概念,就是SecurityIPList,这里定义的是一组IP地址或者子网,也就是防火墙设置中在源(source)和目标(destination)中设置的值。比如在如下图的默认设置中,public-internet就表示了所有的IP地址。

11.webp.jpg



  最后,进入SecurityRules的解释。

  SecurityRules一个SecurityRule实际上就是一个防火墙规则,用于定义对于特定的应用访问OCCS的防火墙策略。这些防火墙是在SecurityList之上设置的特例。简单地说,SecurityList的inbound策略是deny的话,那么只有在SecurityRule中明确设置可以通过的端口才被允许通过;如果SecurityList的inbound策略是permit的话,就不需要再设置任何SecurityRule,因为所有端口都被允许了。很明显,Oracle强烈建议第一种设置方法,而不要轻易设置SecurityList的inbound策略是permit.

  为什么新建的机器可以通过SSH访问?因为SSH的SecurityRule是默认打开的(Status=Enabled)。

12.webp.jpg



  解读一下,图中的各个设定的含义。SecurityApplication=ssh,是这个防火墙规则针对的是tcp协议的22端口;Source=public-internet,是这个防火墙规则的源定义,是一个SecurityIPList的值,表示任何一个IP;Destination=oracle-cloud-enmotech/1/db_1/ora_db,是这个防火墙规则的目标定义,是一个SecurityList的值,就是上面提到的inbound策略为deny的那个SecurityList,这表示在这个SecurityList中的所有OCCS都是目标。

  再通俗易懂地解释一下,就是该防火墙定义允许任何一个IP通过22端口访问本次创建的Database之下的所有OCCS,也就是允许通过SSH来访问RAC的2个节点。

  为什么无法通过数据库监听来远程访问?因为跟SCANListener相关的SecurityRule是默认关闭的(Status=Disabled)。

13.webp.jpg



  修改很简单,将状态从Disabled修改为Enabled即可。

  剩下在网络设定管理界面中的另外两个名词,就比较简单了。

  IPReservations为虚拟主机保留的公网IP,可以通过这个IP直接访问主机。

14.webp.jpg



  SSHPublicKeys登录OCCS,不是通过用户名和密码,而必须要通过SSHKey,在创建Database的过程中就会要求上传PublicKey,也可以在这个界面再次更新或者上传新的Public Key.

15.webp.jpg



  结论:通过以上的设置,OracleCloud基本上组成了一套完善的网络防火墙体系,可以细粒度的控制哪些IP通过哪些端口访问数据库或者数据库主机。

文章来源:云和恩墨
文章作者:张乐奕(Kamus)

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部