华为云用户手册

  • 检查安装节点的Agent程序运行状态 Linux操作系统 使用跨平台远程访问工具(例如PuTTY)以root用户通过SSH方式,登录Agent的安装节点。 执行以下命令,查看Agent程序的运行状态。 service audit_agent status 如果界面回显以下信息,说明Agent程序运行正常,请执行效果验证。 1 audit agent is running. 如果界面无回显信息,说明Agent程序运行异常,请执行以下命令,重新启动Agent后,再执行效果验证。 service audit_agent restart Windows操作系统 打开任务管理器。 查看“dbss_audit_agent”进程运行状态。 如果进程正在运行,请执行效果验证。 如果进程停止,请进入Agent安装文件的目录,双击“start.bat”执行文件,开启审计进程后,再执行效果验证。
  • 检查数据库安全审计实例的安全组规则 单击数据库左侧的展开Agent的详细信息,并记录“安装节点IP”。 在数据库列表的上方,单击“添加安全组规则”。 在弹出的弹框中,记录数据库安全审计实例的“安全组名称”(例如default),如图1所示。 图1 添加安全组规则 单击“前往处理”,进入“安全组”列表界面。 在列表右上方的搜索框中输入安全组“default”后,单击或按“Enter”,列表显示“default”安全组信息。 单击“default”,进入“入方向规则”页面。 检查“default”安全组的入方向规则。 请检查该安全组的入方向规则是否已为1中的安装节点IP配置了TCP协议(端口为8000)和UDP协议(端口为7000-7100)规则。 如果该安全组已配置入方向规则,请执行检查安装节点的Agent程序运行状态。 如果该安全组未配置入方向规则,请执行8。 添加数据库安全审计实例安全组的入方向规则。 单击“添加规则”。 在“添加入方向规则”对话框中,为1中安装节点IP添加TCP协议(端口为8000)和UDP协议(端口为7000-7100)规则。 单击“确定”。 如果问题已解决,结束操作。 如果问题仍存在,请执行检查安装节点的Agent程序运行状态。
  • 支持的数据库类型 数据库安全审计支持数据库类型及版本如表1所示。 表1 数据库安全审计支持的数据库类型和版本 数据库类型 版本 MySQL 5.0、5.1、5.5、5.6、5.7 8.0(8.0.11及以前的子版本) 8.0.30 8.0.35 8.1.0 8.2.0 Oracle (因Oracle为闭源协议,适配版本复杂,如您需审计Oracle数据库,请先联系客服人员) 11g 11.1.0.6.0 、11.2.0.1.0 、11.2.0.2.0、11.2.0.3.0、11.2.0.4.0 12c 12.1.0.2.0 、12.2.0.1.0 19c PostgreSQL 7.4 8.0、8.1、8.2、8.3、8.4 9.0、9.1、9.2、9.3、9.4、9.5、9.6 10.0、10.1、10.2、10.3、10.4、10.5 11 12 13 14 SQL Server 2008 2012 2014 2016 2017 GaussDB (for MySQL) MySQL 8.0 DWS 1.5 8.1 DAMENG DM8 KINGBASE V8 SHENTONG V7.0 GBase 8a V8.5 GBase 8s V8.8 Gbase XDM Cluster V8.0 Greenplum V6.0 HighGo V6.0 GaussDB 1.3企业版 1.4企业版 2.8企业版 3.223企业版 MongoDB V5.0 DDS 4.0 Hbase (华为 云审计 实例:23.02.27.182148 及其之后的版本支持) 1.3.1 2.2.3 Hive (华为云审计实例:23.02.27.182148 及其之后的版本支持) 1.2.2 2.3.9 3.1.2 3.1.3 MariaDB 10.6 TDSQL 10.3.17.3.0 父主题: 数据库安全审计功能类
  • 关闭SQL SERVER协议的强行加密 打开SQL Server Configuration Manager配置管理器。 选择“SQL Server网络配置”。 右键单击“MSSQLSERVER的协议”,选择“属性”。 在弹出的弹框中,选择“标志”页签,关闭数据库的强行加密。 重启SQL Server服务,使得修改的配置生效。 输入一条SQL语句后,在SQL语句列表页面搜索执行的语句。 搜索SQL语句的详细操作,请参见查看SQL语句详细信息。 如果可以搜索到输入的SQL语句信息,说明问题已解决。 如果不能搜索到输入的SQL语句信息,说明问题仍存在,请联系技术支持。
  • 关闭数据库SSL 以MySQL数据库自带的客户端为例说明,操作步骤如下: 使用MySQL数据库自带的客户端,以root用户登录MySQL数据库。 执行以下命令,查看MySQL数据库连接的方式。 \s 如果界面回显类似以下信息,说明MySQL数据库已关闭SSL,请执行4。 1 SSL: Not in use 如果界面回显类似以下信息,说明MySQL数据库已开启SSL,请执行3。 1 SSL: Cipher in use is XXX-XXX-XXXXXX-XXX 以SSL模式登录MySQL数据库。 执行以下命令,退出MySQL数据库。 exit 以root用户重新登录MySQL数据库。 在登录命令后添加以下参数: --ssl-mode=DISABLED 或 --ssl=0 以SSL模式登录MySQL数据库,只能关闭本次SSL。当需要使用数据库安全审计功能时,请以3.b方式登录MySQL数据库。 执行以下命令,查看MySQL数据库连接的方式。 \s 如果界面回显类似以下信息,说明MySQL数据库已关闭SSL。请执行4。 1 SSL: Not in use 输入一条SQL语句后,在SQL语句列表页面搜索执行的语句。 搜索SQL语句的详细操作,请参见查看SQL语句详细信息。 如果可以搜索到输入的SQL语句信息,说明问题已解决。 如果不能搜索到输入的SQL语句信息,说明问题仍存在,请执行关闭SQL SERVER 协议的强行加密。
  • 检查数据库的Agent程序运行状态 使用跨平台远程访问工具(例如PuTTY)以root用户通过SSH方式,登录Agent的安装节点。 执行以下命令,查看Agent程序的运行状态。 ps -ef|grep audit_agent 如果界面回显以下信息,说明Agent程序运行正常,请执行4。 1 /opt/dbss_audit_agent/bin/audit_agent 如果界面无回显信息,说明Agent程序运行异常,请执行3。 执行以下命令,重新启动Agent。 service audit_agent restart 如果问题已解决,结束操作。 如果问题仍存在,请执行4。 执行以下命令,检查Agent与数据库安全审计实例之间的通信状态。 tailf /opt/dbss_audit_agent/log/audit_agent.log 如果界面回显类似以下信息,说明Agent与数据库安全审计实例之间通信正常,请执行效果验证。 图1 通信正常 如果界面回显类似以下信息,说明Agent与数据库安全审计实例之间通信异常,请检查数据库安全审计实例安全组规则是否开放。 图2 通信异常
  • 数据库安全审计的Agent可以安装在哪些Linux操作系统上? 使用数据库安全审计功能,必须在数据库节点或应用节点安装Agent。 数据库安全审计的Agent支持安装在Linux64位操作系统,系统版本说明如表1所示。 表1 Agent支持的Linux系统版本说明 系统名称 系统版本 CentOS CentOS 7.0 (64bit) CentOS 7.1 (64bit) CentOS 7.2 (64bit) CentOS 7.3 (64bit) CentOS 7.4 (64bit) CentOS 7.5 (64bit) CentOS 7.6 (64bit) CentOS 7.8 (64bit) CentOS 7.9 (64bit) CentOS 8.0 (64bit) CentOS 8.1 (64bit) CentOS 8.2 (64bit) Debian Debian 7.5.0 (64bit) Debian 8.2.0 (64bit) Debian 8.8.0 (64bit) Debian 9.0.0 (64bit) Debian 10.0.0 (64bit) Fedora Fedora 24 (64bit) Fedora 25 (64bit) Fedora 29 (64bit) Fedora 30 (64bit) OpenSUSE SUSE 13 (64bit) SUSE 15 (64bit) SUSE 42 (64bit) SUSE SUSE 11 SP4 (64bit) SUSE 12 SP1 (64bit) SUSE 12 SP2 (64bit) Ubuntu Ubuntu 14.04 (64bit) Ubuntu 16.04 (64bit) Ubuntu 18.04 (64bit) Ubuntu 20.04 (64bit)(华为云审计实例:23.02.27.182148 及其之后的版本支持) EulerOS Euler 2.2 (64bit) Euler 2.3 (64bit) Euler 2.5 (64bit) OpenEuler OpenEuler 20.03 (64bit) Oracle Linux Oracle Linux 6.9 (64bit) Oracle Linux 7.4 (64bit) Red Hat Red Hat Enterprise Linux 7.4 (64bit) Red Hat Enterprise Linux 7.6 (64bit) NeoKylin NeoKylin 7.0 (64bit) Kylin Kylin Linux Advanced Server release V10 (64bit) Uniontech OS Uniontech OS Server 20 Enterprise (64bit) Huawei Cloud Euler Huawei Cloud Euler 2.0 (64bit) KylinSec KylinSec 3.4(64bit) Anolis OS 7.9(64bit) 8.4(64bit) 8.6(64bit) 父主题: 数据库安全审计Agent相关
  • 操作示例 HBase数据库包含一个主Master,一个备Master和2个RegionServer节点。 主Master节点IP为192.168.0.1,其服务端口为16000。 备Master节点IP为192.168.0.2,其服务端口为16000。 RegionServer1节点IP为192.168.0.3,其服务端口为16020。 RegionServer1节点IP为192.168.0.4,其服务端口为16020。 添加该HBase数据库进行审计时,需添加4个数据库,其IP和端口分别为: 192.168.0.1:16000(对应主Master节点)。 192.168.0.2:16000(对应备Master节点)。 192.168.0.3:16020(对应RegionServer1节点)。 192.168.0.4:16020(对应RegionServer2节点)。
  • 数据库安全审计支持数据库部署在哪些操作系统上? 您需要在数据库端、应用端或代理端安装Agent,将添加的数据库连接到数据库安全审计实例。 数据库安全审计的Agent可运行在Linux64位和Windows64位操作系统上,安装节点的操作系统说明如下所示。 数据库安全审计的Agent支持的Linux系统版本如表1所示。 表1 Agent支持的Linux系统版本说明 系统名称 系统版本 CentOS CentOS 7.0 (64bit) CentOS 7.1 (64bit) CentOS 7.2 (64bit) CentOS 7.3 (64bit) CentOS 7.4 (64bit) CentOS 7.5 (64bit) CentOS 7.6 (64bit) CentOS 7.8 (64bit) CentOS 7.9 (64bit) CentOS 8.0 (64bit) CentOS 8.1 (64bit) CentOS 8.2 (64bit) Debian Debian 7.5.0 (64bit) Debian 8.2.0 (64bit) Debian 8.8.0 (64bit) Debian 9.0.0 (64bit) Debian 10.0.0 (64bit) Fedora Fedora 24 (64bit) Fedora 25 (64bit) Fedora 29 (64bit) Fedora 30 (64bit) OpenSUSE SUSE 13 (64bit) SUSE 15 (64bit) SUSE 42 (64bit) SUSE SUSE 11 SP4 (64bit) SUSE 12 SP1 (64bit) SUSE 12 SP2 (64bit) Ubuntu Ubuntu 14.04 (64bit) Ubuntu 16.04 (64bit) Ubuntu 18.04 (64bit) Ubuntu 20.04 (64bit)(华为云审计实例:23.02.27.182148 及其之后的版本支持) EulerOS Euler 2.2 (64bit) Euler 2.3 (64bit) Euler 2.5 (64bit) OpenEuler OpenEuler 20.03 (64bit) Oracle Linux Oracle Linux 6.9 (64bit) Oracle Linux 7.4 (64bit) Red Hat Red Hat Enterprise Linux 7.4 (64bit) Red Hat Enterprise Linux 7.6 (64bit) NeoKylin NeoKylin 7.0 (64bit) Kylin Kylin Linux Advanced Server release V10 (64bit) Uniontech OS Uniontech OS Server 20 Enterprise (64bit) Huawei Cloud Euler Huawei Cloud Euler 2.0 (64bit) KylinSec KylinSec 3.4(64bit) Anolis OS 7.9(64bit) 8.4(64bit) 8.6(64bit) 数据库安全审计的Agent支持的Windows系统版本如下所示: Windows Server 2008 R2(64bit) Windows Server 2012 R2(64bit) Windows Server 2016(64bit) Windows Server 2019(64bit) Windows 7(64bit) Windows 10(64bit) DBSS Agent的运行依赖Npcap,如果安装过程中提示"Npcap not found,please install Npcap first",请安装Npcap后,再安装DBSS Agent。 Npcap下载链接:https://npcap.com/#download 图1 Npcap not found 父主题: 数据库安全审计功能类
  • 在Linux操作系统上卸载Agent 使用跨平台远程访问工具(例如PuTTY)以root用户通过SSH方式,登录已安装Agent的节点。 执行以下命令,进入Agent安装包“xxx.tar.gz”解压后所在目录。 cd Agent安装包解压后所在目录 执行以下命令,查看是否有卸载脚本“uninstall.sh”的执行权限。 ll 如果有卸载脚本的执行权限,请执行4。 如果没有卸载脚本的执行权限,请执行以下操作: 执行以下命令,添加卸载脚本执行权限。 chmod +x uninstall.sh 确认有安装脚本执行权限后,请执行4。 执行以下命令,卸载Agent。 sh uninstall.sh 如果界面回显以下信息,说明卸载成功。 1 2 3 4 5 6 7 uninstall audit agent... exist os-release file stopping audit agent audit agent stopped stop audit_agent success service audit_agent does not support chkconfig uninstall audit agent completed!
  • Go 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" dbss "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dbss/v1" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dbss/v1/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/dbss/v1/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := dbss.NewDbssClient( dbss.DbssClientBuilder(). WithRegion(region.ValueOf("cn-north-4")). WithCredential(auth). Build()) request := &model.CreateInstancesPeriodOrderRequest{} var listTagsbody = []model.KeyValueBean{ { Key: "key_test", Value: "1", }, } var listProductInfosbody = []model.CreateInstancePeriodRequestProductInfos{ { ProductId: "00301-225396-0--0", CloudServiceType: "hws.service.type.dbss", ResourceType: "hws.resource.type.dbss", ResourceSpecCode: "dbss.bypassaudit.low", ProductSpecDesc: "test", }, } var listSecurityGroupsbody = []model.CreateInstancePeriodRequestSecurityGroups{ { Id: "04088976-9c63-4e6b-9070-84e6a30c782b", }, } var listNicsbody = []model.CreateInstancePeriodRequestNics{ { SubnetId: "6201dcf2-1374-43ec-ae8b-78b4081572d3", }, } isAutoRenewCreateInstancePeriodRequest:= int32(0) promotionInfoCreateInstancePeriodRequest:= "" commentCreateInstancePeriodRequest:= "" request.Body = &model.CreateInstancePeriodRequest{ IsAutoRenew: &isAutoRenewCreateInstancePeriodRequest, PromotionInfo: &promotionInfoCreateInstancePeriodRequest, Tags: &listTagsbody, ProductInfos: listProductInfosbody, SubscriptionNum: int32(1), PeriodNum: int32(1), PeriodType: int32(2), ChargingMode: int32(0), CloudServiceType: "hws.service.type.dbss", Region: "cn-north-7", Comment: &commentCreateInstancePeriodRequest, SecurityGroups: listSecurityGroupsbody, Nics: listNicsbody, EnterpriseProjectId: "0", AvailabilityZone: "cn-north-7c", VpcId: "4c035747-f77b-4c6d-b23b-cb3a2b96c7e6", Name: "DBSS-acc3", FlavorRef: "st6.xlarge.4", } response, err := client.CreateInstancesPeriodOrder(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } }
  • Python 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 # coding: utf-8 from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkdbss.v1.region.dbss_region import DbssRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkdbss.v1 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.getenv("CLOUD_SDK_AK") sk = os.getenv("CLOUD_SDK_SK") credentials = BasicCredentials(ak, sk) \ client = DbssClient.new_builder() \ .with_credentials(credentials) \ .with_region(DbssRegion.value_of("cn-north-4")) \ .build() try: request = CreateInstancesPeriodOrderRequest() listTagsbody = [ KeyValueBean( key="key_test", value="1" ) ] listProductInfosbody = [ CreateInstancePeriodRequestProductInfos( product_id="00301-225396-0--0", cloud_service_type="hws.service.type.dbss", resource_type="hws.resource.type.dbss", resource_spec_code="dbss.bypassaudit.low", product_spec_desc="test" ) ] listSecurityGroupsbody = [ CreateInstancePeriodRequestSecurityGroups( id="04088976-9c63-4e6b-9070-84e6a30c782b" ) ] listNicsbody = [ CreateInstancePeriodRequestNics( subnet_id="6201dcf2-1374-43ec-ae8b-78b4081572d3" ) ] request.body = CreateInstancePeriodRequest( is_auto_renew=0, promotion_info="", tags=listTagsbody, product_infos=listProductInfosbody, subscription_num=1, period_num=1, period_type=2, charging_mode=0, cloud_service_type="hws.service.type.dbss", region="cn-north-7", comment="", security_groups=listSecurityGroupsbody, nics=listNicsbody, enterprise_project_id="0", availability_zone="cn-north-7c", vpc_id="4c035747-f77b-4c6d-b23b-cb3a2b96c7e6", name="DBSS-acc3", flavor_ref="st6.xlarge.4" ) response = client.create_instances_period_order(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg)
  • 响应参数 状态码: 200 表8 响应Body参数 参数 参数类型 描述 description String 描述 code String 返回码 order_id String 订单ID 状态码: 400 表9 响应Body参数 参数 参数类型 描述 error Object 错误信息返回体。 表10 ErrorDetail 参数 参数类型 描述 error_code String 错误请求返回的错误码。 error_msg String 错误请求返回的错误信息。 状态码: 403 表11 响应Body参数 参数 参数类型 描述 error Object 错误信息返回体。 表12 ErrorDetail 参数 参数类型 描述 error_code String 错误请求返回的错误码。 error_msg String 错误请求返回的错误信息。 状态码: 500 表13 响应Body参数 参数 参数类型 描述 error Object 错误信息返回体。 表14 ErrorDetail 参数 参数类型 描述 error_code String 错误请求返回的错误码。 error_msg String 错误请求返回的错误信息。
  • 请求示例 创建一个包周期计费"chargin_mode : 0"的实例,版本为基础版:"resource_spec_code" : "dbss.bypassaudit.low"。 /v2/{project_id}/dbss/audit/charge/period/order { "flavor_ref" : "st6.xlarge.4", "name" : "DBSS-acc3", "vpc_id" : "4c035747-f77b-4c6d-b23b-cb3a2b96c7e6", "availability_zone" : "cn-north-7c", "comment" : "", "region" : "cn-north-7", "nics" : [ { "subnet_id" : "6201dcf2-1374-43ec-ae8b-78b4081572d3" } ], "security_groups" : [ { "id" : "04088976-9c63-4e6b-9070-84e6a30c782b" } ], "cloud_service_type" : "hws.service.type.dbss", "charging_mode" : 0, "period_type" : 2, "period_num" : 1, "subscription_num" : 1, "is_auto_renew" : 0, "product_infos" : [ { "product_id" : "00301-225396-0--0", "cloud_service_type" : "hws.service.type.dbss", "resource_type" : "hws.resource.type.dbss", "resource_spec_code" : "dbss.bypassaudit.low", "product_spec_desc" : "{\"specDesc\":{\"zh-cn\":{\"key1\":\"value1\"},\"en-us\":{\"key1\":\"value1\"}}}" } ], "promotion_info" : "", "enterprise_project_id" : "0", "tags" : [ { "key" : "key_test", "value" : "1" } ] } 创建一个包周期计费"chargin_mode : 0"的实例,版本为专业版:"resource_spec_code" : "dbss.bypassaudit.medium"。 { "flavor_ref": "c6.2xlarge.2", "name": "DBSS-test", "vpc_id": "4c035747-f77b-4c6d-b23b-cb3a2b96c7e6", "availability_zone": "cn-north-7b", "comment": "", "region": "cn-north-7", "nics": [ { "subnet_id": "6201dcf2-1374-43ec-ae8b-78b4081572d3" } ], "security_groups": [ { "id": "59c45017-a484-481b-8440-18c2214ccb06" } ], "cloud_service_type": "hws.service.type.dbss", "charging_mode": 0, "period_type": 2, "period_num": 1, "subscription_num": 1, "is_auto_renew": 0, "product_infos": [ { "product_id": "00301-225396-0--0", "cloud_service_type": "hws.service.type.dbss", "resource_type": "hws.resource.type.dbss", "resource_spec_code": "dbss.bypassaudit.medium", "product_spec_desc": "{\"specDesc\":{\"zh-cn\":{\"key1\":\"value1\"},\"en-us\":{\"key1\":\"value1\"}}}" } ], "promotion_info": "", "enterprise_project_id": "0" }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token 表3 请求Body参数 参数 是否必选 参数类型 描述 flavor_ref 是 String 云服务器使用的规格ID name 是 String 云服务器名称。 取值范围: 只能由中文字符、英文字母、数字、下划线、中划线组成,且长度小于等于64个字符。 创建的云服务器数量大于1时,长度小于等于59个字符 vpc_id 是 String VPC的ID availability_zone 是 String 云服务器对应可用分区信息。(两个主备分区,中间用“,”分割,例如az1.dc1,az2.dc2) enterprise_project_id 是 String 企业项目ID nics 是 Array of nics objects 云服务器对应的网卡信息 security_groups 是 Array of security_groups objects 云服务器对应安全组信息 comment 否 String 备注信息 region 是 String 云服务器所在区域ID cloud_service_type 是 String 服务类型: 默认hws.service.type.dbss charging_mode 是 Integer 计费模式: 0:包周期计费 1:按需计费 period_type 是 Integer 订购周期类型: 0:天; 1:周; 2:月; 3:年; 4:小时; 5:绝对时间 period_num 是 Integer 订购周期数 subscription_num 是 Integer 订购数量: DBSS只支持订购1套,不支持多套 product_infos 是 Array of product_infos objects 产品信息列表 tags 否 Array of KeyValueBean objects 资源标签 promotion_info 否 String 折扣信息 is_auto_renew 是 Integer 自动续费 1表示自动续费,0表示不自动续费 表4 nics 参数 是否必选 参数类型 描述 subnet_id 是 String 网卡对应的子网ID ip_address 否 String IP地址,不填或空字符串为自动分配 表5 security_groups 参数 是否必选 参数类型 描述 id 是 String 云服务器对应的安全组ID,会对创建云服务器中配置的网卡生效 表6 product_infos 参数 是否必选 参数类型 描述 product_id 是 String 产品ID cloud_service_type 是 String 服务类型: 默认hws.service.type.dbss resource_type 是 String 资源类型: 默认hws.resource.type.dbss resource_spec_code 是 String 资源规格:dbss.bypassaudit.low、dbss.bypassaudit.medium、dbss.bypassaudit.high product_spec_desc 是 String 产品规格描述, json字符串格式 :{"specDesc":{"zh-cn":{"key1":"value1"},"en-us":{"key1":"value1"}}} 表7 KeyValueBean 参数 是否必选 参数类型 描述 key 是 String 键 value 是 String 值
  • 步骤七:查看审计结果 验证成功后,您可参照本节内容在总览界面查看审计结果信息,同时也可根据需求在报表界面进行设置生成报表、下载或预览报表。 查看总览信息。 进入总览入口,如图10所示,查看总览信息。 在总览界面,展示了该实例的审计时长、SQL语句总量、风险总量以及今日语句、今日风险、今日会话量 您可以选择“语句”或“会话”页签,分别查看SQL语句信息和会话分布图。 图10 进入总览入口 生成报表、下载或预览报表。 参照图11进入报表管理界面。 图11 进入报表管理入口 在左侧导航树中,选择“报表”。 在“选择实例”下拉列表框中,选择需要生成审计报表的实例。选择“报表管理”页签。 在需要生成报表的模板所在行的“操作”列,单击“立即生成报表”。 在弹出的对话框中,单击,设置报表的开始时间和结束时间,选择生成报表的数据库。 单击“确定”。 系统跳转到“报表结果”页面,您可以查看报表的生成进度。报表生成后,您可以“预览”或“下载”报表,如图12所示。 如果您需要在线预览报表,请使用Google Chrome或Mozilla FireFox浏览器。 图12 预览或下载报表
  • 步骤六:验证Agent与数据库安全审计实例之间的网络通信正常 待审计的数据库与数据库安全审计实例连接成功后,您需要验证Agent与数据库安全审计实例之间的网络通信是否正常。 在安装Agent的节点执行一条SQL语句或对数据库进行操作(例如,“Select 1;”)。 在左侧导航树中,选择“总览”,进入“总览”界面。 在“选择实例”下拉列表框中,选择需要查看数据库慢SQL语句信息的实例。 选择“语句”页签。 SQL语句列表将显示登录数据库操作的记录,如图9所示。 如果不能查询到SQL语句,请您参照如何处理Agent与数据库安全审计实例之间通信异常?进行排查。 图9 查看SQL语句
  • 场景说明 假设您在华为云的弹性云服务器(Elastic Cloud Server ,以下简称E CS )上自建了一个数据库,数据库的详细信息如表1所示,您需要对该数据库内部违规和不正当操作进行定位追责,满足等保测评数据库审计需求。本章节详细介绍该场景下,在数据库端安装Agent,开启数据库安全审计功能和验证审计结果的操作。 表1 ECS自建数据库信息说明 数据库类型 MySQL 数据库版本 5.7 数据库IP地址 192.168.1.5 端口 3306 操作系统 LINUX64
  • 步骤五:安装Agent 添加安全规则后,您需要下载Agent包并将下载的Agent安装包上传到待安装Agent的节点上进行安装。使添加的数据库连接到数据库安全审计实例,数据库安全审计才能对添加的数据库进行审计。 每个Agent都有唯一的AgentID,是Agent连接数据库安全审计实例的重要密钥。若您将添加的Agent删除,在重新添加Agent后,请重新下载Agent和安装Agent。 登录控制台进入数据库安全服务。 在左侧导航树中,选择“数据库列表”,进入数据库列表界面。 在“选择实例”下拉框中,选择需要下载Agent的数据库所属实例。 单击该数据库左侧的展开Agent的详细信息,在Agent所在行的“操作”列,单击“下载agent”,如图8所示。 将Agent安装包下载到本地。 图8 下载Agent 使用跨平台传输工具(例如WinSCP),将下载的Agent安装包“xxx.tar”上传到待安装Agent的节点(即图8中的“安装节点IP”)。 使用跨平台远程访问工具(例如PuTTY)以root用户通过SSH方式,登录该安装节点。 执行以下命令,进入Agent安装包“xxx.tar”所在目录。 cd Agent安装包所在目录 执行以下命令,解压缩“xxx.tar”安装包。 tar -xvf xxx.tar 执行以下命令,进入“install.sh”脚本所在目录。 cd install.sh脚本所在目录 执行以下命令,安装Agent。 sh install.sh 如果界面回显以下信息,说明安装成功。 1 2 3 4 5 start agent starting audit agent audit agent started start success install dbss audit agent done!
  • 步骤四:添加安全组规则 Agent添加完成后,您需要为数据库安全审计实例所在的安全组添加入方向规则TCP协议(8000端口)和UDP协议(7000-7100端口),使Agent与审计实例之间的网络连通,数据库安全审计才能对添加的数据库进行审计。 如果该安全组已配置安装节点的入方向规则,请执行步骤五:安装Agent。 如果该安全组未配置安装节点的入方向规则,请按照本节内容进行配置。 安全组规则也可以在成功安装Agent后进行添加。 获取安装节点IP地址。 在数据库列表的上方,单击“添加安全组规则”。 在弹出的弹框中,记录数据库安全审计实例的“安全组名称”(例如default),如图5所示。 图5 添加安全组规则 单击“前往处理”,进入“安全组”界面。 在列表右上方的搜索框中输入安全组“default”后,单击或按“Enter”,列表显示“default”安全组信息。 单击“default”,进入“基本信息”页面。 选择“入方向规则”页签,单击“添加规则”,如图6所示。 图6 添加规则 在“添加入方向规则”对话框中,为安装节点IP添加TCP协议(端口为8000)和UDP协议(端口为7000-7100)规则,如图7所示。 图7 “添加入方向规则”对话框(ECS) 单击“确定”,完成添加入方向规则。
  • 步骤六:验证Agent与数据库安全审计实例之间的网络通信正常 待审计的数据库与数据库安全审计实例连接成功后,您需要验证Agent与数据库安全审计实例之间的网络通信是否正常。 在安装Agent的节点执行一条SQL语句或对数据库进行操作(例如,“Select 1;”)。 在左侧导航树中,选择“总览”,进入“总览”界面。 在“选择实例”下拉列表框中,选择需要查看数据库慢SQL语句信息的实例。 选择“语句”页签。 SQL语句列表将显示登录数据库操作的记录,如图10所示。 如果不能查询到SQL语句,请您参照如何处理Agent与数据库安全审计实例之间通信异常?进行排查。 图10 查看SQL语句
  • 步骤七:查看审计结果 验证成功后,您可参照本节内容在总览界面查看审计结果信息,同时也可根据需求在报表界面进行设置生成报表、下载或预览报表。 查看总览信息。 进入总览入口,如图11所示,查看总览信息。 在总览界面,展示了该实例的审计时长、SQL语句总量、风险总量以及今日语句、今日风险、今日会话量 您可以选择“语句”或“会话”页签,分别查看SQL语句信息和会话分布图。 图11 进入总览入口 生成报表、下载或预览报表。 参照图12进入报表管理界面。 图12 进入报表管理入口 在左侧导航树中,选择“报表”。 在“选择实例”下拉列表框中,选择需要生成审计报表的实例。选择“报表管理”页签。 在需要生成报表的模板所在行的“操作”列,单击“立即生成报表”。 在弹出的对话框中,单击,设置报表的开始时间和结束时间,选择生成报表的数据库。 单击“确定”。 系统跳转到“报表结果”页面,您可以查看报表的生成进度。报表生成后,您可以“预览”或“下载”报表,如图13所示。 如果您需要在线预览报表,请使用Google Chrome或Mozilla FireFox浏览器。 图13 预览或下载报表
  • 步骤三:添加Agent 在数据库所在行的“Agent”列,单击“添加Agent”,如图3所示。 图3 添加Agent 在弹出的对话框中,选择添加方式。 方式一:选择“创建Agent” 如果数据库安全审计实例的数据库未添加Agent,您需要创建新的Agent。 “安装节点类型”选择“应用端”,“安装节点IP”输入表2所示的应用端IP地址,如图4所示。 图4 在应用端添加Agent 方式二:“选择已有Agent”如图5所示。 在什么场景下需要选择“选择已有Agent”添加方式的详细介绍,请参见在什么场景下需要选择“选择已有Agent”添加方式?。 选择“选择已有Agent”添加方式,如果您已在应用端安装了Agent,该数据库添加Agent后,数据库安全审计即可对该数据库进行审计。 图5 选择已有Agent 单击“确定”,Agent添加成功。
  • 方案架构 数据库安全审计采用旁路部署模式,通过在访问数据库的应用系统服务器上部署数据库安全审计Agent,获取访问数据库流量,Agent将获取的流量数据上传到审计系统、接收审计系统配置命令和上报数据库状态监控数据,实现对数据库的安全审计。 图1 审计RDS关系型数据库(安装Agent)架构图 本文以POSTGRESQL 7.4版本的关系型数据库为例,详细信息如表1所示,您需要对该数据库内部违规和不正当操作进行定位追责,满足等保测评数据库审计需求。本节详细介绍该场景下开启数据库安全审计功能和验证审计结果的具体操作。 表2 数据库示例信息说明 数据库类型 POSTGRESQL 数据库版本 7.4 数据库IP地址 192.168.1.31 应用端IP地址 (安装节点IP地址) 192.168.1.132 端口 8000 操作系统 LINUX64
  • 步骤五:安装Agent 添加安全组规则后,您需要下载Agent包并将下载的Agent安装包上传到待安装Agent的节点上进行安装。使添加的数据库连接到数据库安全审计实例,数据库安全审计才能对添加的数据库进行审计。 每个Agent都有唯一的AgentID,是Agent连接数据库安全审计实例的重要密钥。若您将添加的Agent删除,在重新添加Agent后,请重新下载Agent和安装Agent。 登录控制台进入数据库安全服务。 在左侧导航树中,选择“数据库列表”,进入数据库列表界面。 在“选择实例”下拉框中,选择需要下载Agent的数据库所属实例。 单击该数据库左侧的展开Agent的详细信息,在Agent所在行的“操作”列,单击“下载agent”,如图9所示。 将Agent安装包下载到本地。 图9 下载Agent 使用跨平台传输工具(例如WinSCP),将下载的Agent安装包“xxx.tar”上传到待安装Agent的节点(即图9中的“安装节点IP”)。 使用跨平台远程访问工具(例如PuTTY)以root用户通过SSH方式,登录该安装节点。 执行以下命令,进入Agent安装包“xxx.tar”所在目录。 cd Agent安装包所在目录 执行以下命令,解压缩“xxx.tar”安装包。 tar -xvf xxx.tar 执行以下命令,进入“install.sh”脚本所在目录。 cd install.sh脚本所在目录 执行以下命令,安装Agent。 sh install.sh 如果界面回显以下信息,说明安装成功。 1 2 3 4 5 start agent starting audit agent audit agent started start success install dbss audit agent done!
  • 步骤四:添加安全组规则 Agent添加完成后,您需要为数据库安全审计实例所在的安全组添加入方向规则TCP协议(8000端口)和UDP协议(7000-7100端口),使Agent与审计实例之间的网络连通,数据库安全审计才能对添加的数据库进行审计。 如果该安全组已配置安装节点的入方向规则,请执行步骤五:安装Agent。 如果该安全组未配置安装节点的入方向规则,请按照本节内容进行配置。 安全组规则也可以在成功安装Agent后进行添加。 获取安装节点IP地址。 在数据库列表的上方,单击“添加安全组规则”。 在弹出的弹框中,记录数据库安全审计实例的“安全组名称”(例如default),如图6所示。 图6 添加安全组规则 单击“前往处理”,进入“安全组”界面。 在列表右上方的搜索框中输入安全组“default”后,单击或按“Enter”,列表显示“default”安全组信息。 单击“default”,进入“基本信息”页面。 选择“入方向规则”页签,单击“添加规则”,如图7所示。 图7 添加规则 在弹出的“添加入方向规则”对话框中,为表2中的安装节点IP添加TCP协议(端口为8000)和UDP协议(端口为7000-7100)规则,如图8所示。 图8 “添加入方向规则”对话框 单击“确定”,完成添加入方向规则。
  • 方案概述 本文档介绍了如何对关系型数据库(应用部署于ECS)进行安全审计。对于部分关系型数据库,DBSS服务支持免安装Agent模式,无需安装Agent,即可开启数据库安全审计。 如果您需要安全审计的数据库类型如表1所示,请参见审计RDS关系型数据库(免安装Agent)。 表1 支持免Agent安装的关系型数据库 数据库类型 支持的版本 GaussDB for MySQL 默认都支持 RDS for SQLServer (华为云审计实例:23.02.27.182148 及其之后的版本支持) 默认都支持 RDS for MySQL 5.6(5.6.51.1及以上版本) 5.7(5.7.29.2及以上版本) 8.0(8.0.20.3及以上版本) GaussDB(DWS) 8.2.0.100及以上版本 PostgreSQL (华为云审计实例:23.04.17.123301 及其之后的版本支持) 14(14.4及以上版本) 13(13.6及以上版本) 12(12.10及上版本) 11(11.15及以上版本) 9.6(9.6.24及以上版本) 9.5(9.5.25及以上版本) RDS for MariaDB 默认都支持 如果您需要安全审计的数据库类型不在表1范围内,请参见本节内容。
  • 操作场景 数据库安全审计默认提供一条“数据库拖库检测”的风险操作,用于检测原始审计日志疑似拖库的SQL语句,及时发现数据安全风险。 通过数据库拖库检测,您可获知执行耗时长、影响行数、执行该SQL语句的数据库信息。 数据库安全审计支持以下执行语句类型检测: 数据定义(DDL): CREATE TABLE CREATE TABLESPACE DROP TABLE DROP TABLESPACE 数据操作(DML): INSERT UPDATE DELETE SELECT SELECT FOR UPDATE 数据控制(DCL): CREATE USER DROP USER GRANT
  • 场景三:解决SQL注入风险的告警误报 DBSS提供SQL注入检测功能,并内置了一些SQL注入检测规则。您也可以自行添加SQL注入检测规则。 示例:若某些语句命中了SQL注入规则,但是经分析发现该语句并不是一条攻击语句,是自己程序生成的合法语句,如图7所示。 图7 SQL注入误报 为了避免DBSS对误报SQL的持续告警,您可以通过设置白名单来解决该误报问题。 风险规则的优先级高于SQL注入规则。 如图7所示,执行的SQL语句如下: SELECT COUNT(*) FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'adventureworks' UNION SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = 'adventureworks' UNION SELECT COUNT(*) FROM information_schema.ROUTINES WHERE ROUTINE_SCHEMA = 'adventureworks' 分析语句关键信息:该语句用SELECT语句访问information_schema库的TABLES表。 配置操作 进入风险操作页面。 图8 进入风险操作 单击添加风险操作,填写规则信息。 图9 填写规则信息 如图9所示,填写的规则表示:在information_schema库的TABLES表执行的SELECT语句为无风险。 添加“操作对象”时,单击“添加操作对象”,填写“目标数据库”和“目标表”,单击“确认”,完成添加。 图10 添加SQL注入白名单操作对象 单击下方“确认”,添加规则成功。 设置完成后,再次检测到该语句时,优先命中该条规则,识别为无风险将不再告警。
  • 场景二:利用DBSS进行应用程序的SQL语句性能优化 示例:某应用上线之后发现当用户执行某些操作时总会出现界面长时间卡顿。经定位,发现后台应用访问数据库时出现好几秒的时延,但未定位到具体是哪些语句导致。 此时可利用DBSS的“数据库慢SQL检测”规则进行辅助定位,帮助开发人员进行性能优化。 操作步骤如下: 登录DBSS控制台,进入风险操作页面。 图4 进入风险操作页面 单击“数据库慢SQL检测”项“操作”列的“编辑”,在编辑页面的底部设置执行时长规则设置为大于1000毫秒。 图5 设置执行时长 单击“确认”,完成设置。 设置完成后,待运行一段时间,在语句页面下的规则名称搜索框中填入“数据库慢SQL检测”对检测情况进行检索。 图6 检索慢SQL检索情况 您可对检索的结果进行分析,对可进行优化的SQL进行优化。 若需要进行多轮优化,您可对规则中的“执行时长”字段进行修改,逐步缩小时间,直到达成性能提升的目标。
共100000条