数据库作为企业的核心业务,其运维操作是安全管控的重点。堡垒机企业双擎版和国密版支持对MySQL、SQL Server、PostgreSQL类型的RDS和MySQL、PostgreSQL、PostgreSQL(兼容Oracle)的PolarDB以及MySQL、SQL Server、PostgreSQL、Oracle类型的自建数据库进行运维和审计。本文以具体案例介绍如何通过堡垒机进行数据库运维。
背景信息
企业资产中,除了Windows服务器、Linux服务器外,还有大量的数据库资产。数据库作为核心业务资产包含大量敏感信息,如何保证运维安全、防止越权访问、违规操作等更是企业的重点关注需求。
数据库业务比较多样化,有云原生数据库如RDS、以及自建数据库,并包含MySQL、SQL Server、PostgreSQL、Oracle多种类型,且很多大型企业数据库业务也通常会分布在多跨账号、跨VPC以及线下IDC或异构云等混合场景下,那么如何实现对如上混合场景的统一运维管控、方便运维安全团队的集中管理也是堡垒机的重点。
阿里云堡垒机企业双擎版或国密版支持Windows服务器、Linux服务器以及数据库的运维管控,针对多种类型数据库均可实现运维权限划分及事后审计追溯,最大化保证数据库运维安全。另外还提供混合场景运维能力,通过网络域运维能力将跨账号、线下IDC、异构云混合场景下的资产进行统一平台接入,便于安全团队的一站式管控。
同时,企业双擎版和国密版具有可靠底层架构保障,双引擎部署,双活架构运行,对于数据库的运维高要求操作提供更稳定的业务保障。详细信息,请参见版本功能对比。
数据库运维流程
使用堡垒机进行数据库运维时,管理员先通过堡垒机对资产进行管理,以及运维人员进行权限划分。运维人员再通过客户端、运维门户等方式建立到堡垒机的SSH隧道,并在堡垒机管控下登录数据库资产进行运维。
运维方式及步骤
客户端运维
前提条件
-
已在堡垒机中新建数据库和用户,并授权用户资产和资产账户。具体操作,请参见新建数据库、管理用户及授权资产及资产账户。
下文以MySQL和本地用户为例介绍。
-
已在本地系统安装支持SSH隧道的数据库运维工具。关于客户端工具及版本推荐,请参见客户端远程连接工具及版本推荐。
下文以Windows系统+Navicat Premium工具、Linux系统+命令行两种方式介绍运维流程。
步骤一:获取堡垒机运维地址和数据库运维令牌
登录运维门户。具体操作,请参见登录运维门户。
在左侧导航栏,单击数据库。
-
在数据库页面,定位到目标数据库,在远程连接列,将登录方式选择为查看运维令牌,单击登录。
-
在运维令牌对话框,单击申请运维令牌(首次登录需要申请运维令牌)。
申请成功后,对话框显示两部分信息:客户端数据库常规信息配置项(包含数据库地址、账户名称、端口)和客户端SSH隧道配置项(包含运维令牌、公网运维地址、私网运维地址、堡垒机运维端口 SSH: 60022 / RDP: 63389、令牌过期时间)。请将运维令牌复制并填入客户端密码处。如需延长有效期,可单击 更新令牌 或 续期令牌。
登录运维门户获取运维令牌时,如果当前数据库账户未在堡垒机上托管,则需要在运维令牌对话框配置数据库账户的基本信息后,才能获取运维令牌。关于新建数据库账户的更多信息,请参见数据库管理。
运维令牌需要在有效期内使用,管理员可以在堡垒机设置令牌有效期。若开启运维审批,则以管理员审批通过时设置的有效期为准。
如果管理员设置允许运维员自主续期,则令牌过期前,运维员可以自主为令牌续期,过期之后需要重新申请令牌。若已开启运维审批,则运维员不可进行续期。运维令牌配置修改后需要重新申请或更新令牌才可生效。
若令牌在有效期内但运维连接失败,可能为运维并发已达到上限,请联系管理员升配堡垒机规格或释放空闲连接;或管理员限制了该来源IP和时间段导致无法运维,请联系管理员解除限制。
审计记录的运维用户信息为申请令牌的用户,与客户端中所填用户名和资产账户无关。
步骤二:通过客户端工具或者命令行建立SSH隧道
下文以Navicat Premium工具和终端命令行工具介绍通过堡垒机运维数据库资产的流程。
Navicat Premium工具
-
打开Navicat Premium工具,新建MySQL连接。
-
在SSH页签,勾选SSH隧道,并配置登录堡垒机的相关信息(步骤一获取的客户端SSH隧道配置项)。
关键配置项
说明
主机
堡垒机运维地址,即填写步骤一客户端SSH隧道配置项中的公网或私网运维地址。
端口
堡垒机SSH运维端口。默认为60022。
用户名
运维员登录堡垒机的用户名。
密码
数据库运维令牌,即填写步骤一客户端SSH隧道配置项中的运维令牌。
-
在常规页签,配置数据库的相关信息。
其中端口设置为
3306,连接名称可自定义(如mysqltest)。关键配置项
说明
主机
数据库连接地址。
用户名
数据库账户登录名。
密码
-
如果管理员已在堡垒机中托管了数据库账户密码,则密码处可留空。
-
如果管理员未在堡垒机中托管数据库账户密码,则密码处需填写数据库账户的登录密码。
说明 建议您勾选保存密码,如果未勾选,客户端可能会要求您填写账户密码,您可以将运维令牌填写在密码处。 -
-
-
在Navicat Premium工具中,双击新创建的数据库连接,连接成功后进行运维。
终端命令行
-
打开命令行工具,执行以下命令。
-
命令格式:
ssh -N -L <localport>:<databaseAddress>:<databasePort> <bastionusername>@<bastionAddress> -p <bastionPort> -
参数说明:
参数
说明
localport
建立隧道后自定义本地监听的端口。请确认与本地已有监听端口不存在冲突。
databaseAddress
需要运维的数据库资产的地址。
databasePort
需要运维的数据库资产的端口。
bastionusername
云堡垒机的用户名。
bastionAddress
云堡垒机的运维地址。
bastionPort
云堡垒机SSH运维的端口。默认为60022。
-
命令示例:
ssh -N -L 33061:rm-******m020h.mysql.rds.aliyuncs.com:3306 bastuser@******-public.bastionhost.aliyuncs.com -p 60022
-
-
在密码认证步骤,输入数据库运维令牌,然后按回车键等待。
[root@xxx ~]# ssh -N -L 3 :rm-xxx0h.mysql.rds.aliyuncs.com:3306 doc01@uxxx-public.bastionhost.aliyuncs.com -p 60022 The authenticity of host '[uxxx public.bastionhost.aliyuncs.com]:60022 ([xxx.7.15]:60022)' can't be established. RSA key fingerprint is SHA256:xxx. RSA key fingerprint is MD5:9x:xx:xx:xx:b0:56:0b:bb:58:e6:46:ec. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '[uxxx.bastionhost.aliyuncs.com]:60022,[xxx.15]:60022' (RSA) to the list of known hosts. doc01@uxxx ic.bastionhost.aliyuncs.com's password: -
另起一个命令行,确认本地自定义端口是否处于已监听状态,LISTEN表示已监听。
[root@iZtxxx:jwtg98zqZ ~]# ss -an | grep 33 tcp ESTAB 0 0 127.0.0.1:48012 127.0.0.1:3xxx tcp LISTEN 0 128 [::1]:3… [::1]:* -
执行以下命令,成功连接数据库后进行运维。
[root@iZ_xxx jwtg98zqZ lib]# mysql -h 127.0.0.1 -u roxxx -P 3xxx Welcome to the MariaDB monitor. Commands end with ; or \g. Your MySQL connection id is 3151064 Server version: 8.0.13 Source distribution Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MySQL [(none)]>-
命令格式
mysql -h 127.0.0.1 -u <accountname> -P <localport> -
参数说明
-
accountname为运维的数据库登录账户名。 -
localport为连接堡垒机时自定义的本地监听端口。
-
-
Web运维
堡垒机支持通过运维门户或Web控制台运维数据库。下文以运维门户为例数据运维流程。
前提条件
已在堡垒机中新建数据库和用户,并授权用户资产和资产账户。具体操作,请参见新建数据库、管理用户及授权资产及资产账户。
下文以MySQL和本地用户为例介绍。
操作步骤
-
登录堡垒机运维门户。具体操作,请参见登录运维门户。
-
在左侧导航栏,单击数据库。
-
找到目标数据库,并在远程连接列,选择Web远程连接登录方式,单击登录。
在弹出的登录对话框中,数据库账户选择 root,可勾选设为默认方式。
SSO单点登录运维
运维人员可通过Web页面使用单点登录器自动调用本地客户端以建立会话,从而省去单独配置客户端的步骤。下文以堡垒机运维门户为例,介绍如何使用SSO单点登录运维MySQL数据库。
前提条件
-
已在堡垒机中新建数据库和用户,并授权用户资产和资产账户。具体操作,请参见新建数据库、管理用户及授权资产及资产账户。
下文以MySQL和本地用户为例介绍。
-
已在本地系统安装单点登录器支持的客户端。关于支持的客户端说明,请参见单点登录器支持的客户端。
下文以Windows系统、Dbeaver 23为例介绍。
步骤一:获取运维门户地址
登录堡垒机控制台,在顶部菜单栏,选择堡垒机所在的地域。
在堡垒机实例列表,定位到目标实例,单击管理。
-
在左侧导航栏,单击概览,获取运维门户地址。
在右侧堡垒机实例信息面板中,可获取公网运维门户地址和私网运维门户地址。
步骤二:在本地系统安装单点登录器
-
在浏览器中,输入获取到的运维门户地址。
-
在云盾堡垒机登录页面,输入堡垒机用户名和密码,单击登录。
-
在运维门户页面,单击单点登录器下载。
本文下载的是Windows系统适用的单点登录器。
-
下载完成后安装成功即可(安装后无需打开)。
步骤三:设置运维终端
-
在运维门户的左侧导航栏,单击终端设置。
-
在MySQL页签,选择Dbeaver客户端,并单击保存。
-
在弹出的usmsso.exe提示框中,单击打开,并按照页面指引配置运维数据库的客户端。
步骤四:运维数据库
-
在运维门户的左侧导航栏,单击数据库。
-
找到目标数据库,并在远程连接列,单击下拉列表,将登录方式设置为本地客户端登录,单击登录。
数据库运维审计
运维人员通过堡垒机进入数据库资产之后,堡垒机可对运维人员的操作进行审计,包括会话审计、实时监控、操作日志等,实现事后追溯。
登录堡垒机控制台,在顶部菜单栏,选择堡垒机所在的地域。
在堡垒机实例列表,定位到目标实例,单击管理。
在左侧导航栏,选择。
-
在会话审计页面,查看会话记录。