云服务器内容精选
-
解决方案 CDM 虽然不支持直接在不同集群间迁移作业,但是通过批量导出、批量导入作业的功能,可以间接实现集群间的作业迁移,方法如下: 将CDM集群1中的所有作业批量导出,将作业的JSON文件保存到本地。 由于安全原因,CDM导出作业时没有导出连接密码,连接密码全部使用“Add password here”替换。 在本地编辑JSON文件,将“Add password here”替换为对应连接的正确密码。 将编辑好的JSON文件批量导入到CDM集群2,实现集群1和集群2之间的作业同步。
-
数据库安全审计可以应用于哪些场景? 数据库安全审计采用数据库旁路部署方式,在不影响用户业务的提前下,可以对华为云上的RDS、E CS /BMS自建的数据库进行灵活的审计。 基于数据库风险操作,监视数据库登录、操作类型(数据定义、数据操作和数据控制)和操作对象,有效对数据库进行审计。 从风险、会话、SQL注入等多个维度进行分析,帮助您及时了解数据库状况。 提供审计报表模板库,可以生成日报、周报或月报审计报表(可设置报表生成频率)。同时,支持发送报表生成的实时告警通知,帮助您及时获取审计报表。 父主题: 数据库安全审计功能类
-
数据库安全审计支持数据库部署在哪些操作系统上? 您需要在数据库端、应用端或代理端安装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 父主题: 数据库安全审计功能类
-
如何判断入网流量是否经过了Anti-DDoS流量清洗服务? Anti-DDoS仅对华为云内的EIP提供DDoS攻击防护。Anti-DDoS设备部署在机房出口处,如图1所示。 图1 网络拓扑架构图 如果入网流量来自公网,则会经过Anti-DDoS流量清洗服务;如果入网流量来自华为云内部,则不会经过Anti-DDoS流量清洗服务。 如果您从公网访问EIP,入网流量会先经过公网路由。您可以在EIP所在的虚拟机上查看访问的路由,如果有经过公网路由,则经过了Anti-DDoS流量清洗服务。 如果经过了Anti-DDoS流量清洗服务,当EIP受到DDoS攻击时,会有以下信息: Anti-DDoS流量清洗服务控制台会有流量清洗记录。 您会收到告警提醒消息(短信或Email)。 如果您从华为云内部访问EIP,入网流量不会经过公网路由,不经过公网路由,则不经过Anti-DDoS流量清洗服务。 例如:您在华为云两个不同的Region分别申请了一个EIP,那么两个EIP之间相互访问,则不经过Anti-DDoS流量清洗服务。 父主题: 基本功能类
-
代码示例 使用Java调用CDM服务的REST API创建、启动、查询、删除CDM作业的代码示例如下: package cdmclient; import java.io.IOException; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.HttpHost; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; public class CdmClient { private final static String DOMAIN_NAME="云账号名"; private final static String USER_NAME="云用户名"; private final static String USER_PASSWORD="云用户密码"; private final static String PROJECT_ID="项目ID"; private final static String CLUSTER_ID="CDM集群ID"; private final static String JOB_NAME="作业名称"; private final static String FROM_LINKNAME="源连接名称"; private final static String TO_LINKNAME="目的连接名称"; private final static String IAM _ENDPOINT="IAM的Endpoint"; private final static String CDM_ENDPOINT="CDM的Endpoint"; private CloseableHttpClient httpclient; private String token; public CdmClient() { this.httpclient = createHttpClient(); this.token = login(); } private CloseableHttpClient createHttpClient() { CloseableHttpClient httpclient =HttpClients.createDefault(); return httpclient; } private String login(){ HttpPost httpPost = new HttpPost("https://"+IAM_ENDPOINT+"/v3/auth/tokens"); String json = "{\r\n"+ "\"auth\": {\r\n"+ "\"identity\": {\r\n"+ "\"methods\": [\"password\"],\r\n"+ "\"password\": {\r\n"+ "\"user\": {\r\n"+ "\"name\": \""+USER_NAME+"\",\r\n"+ "\"password\": \""+USER_PASSWORD+"\",\r\n"+ "\"domain\": {\r\n"+ "\"name\": \""+DOMAIN_NAME+"\"\r\n"+ "}\r\n"+ "}\r\n"+ "}\r\n"+ "},\r\n"+ "\"scope\": {\r\n"+ "\"project\": {\r\n"+ "\"name\": \"PROJECT_NAME\"\r\n"+ "}\r\n"+ "}\r\n"+ "}\r\n"+ "}\r\n"; try { StringEntity s = new StringEntity(json); s.setContentEncoding("UTF-8"); s.setContentType("application/json"); httpPost.setEntity(s); CloseableHttpResponse response = httpclient.execute(httpPost); Header tokenHeader = response.getFirstHeader("X-Subject-Token"); String token = tokenHeader.getValue(); System.out.println("Login successful"); return token; } catch (Exception e) { throw new RuntimeException("login failed.", e); } } /*创建作业*/ public void createJob(){ HttpPost httpPost = new HttpPost("https://"+CDM_ENDPOINT+"/cdm/v1.0/"+PROJECT_ID+"/clusters/"+CLUSTER_ID+"/cdm/job"); /**此处JSON信息比较复杂,可以先在作业管理界面上创建一个作业,然后单击作业后的“作业JSON定义”,复制其中的JSON内容,格式化为Java字符串语法,然后粘贴到此处。 *JSON消息体中一般只需要替换连接名、导入和导出的表名、导入导出表的字段列表、源表中用于分区的字段。**/ String json = "{\r\n"+ "\"jobs\": [\r\n"+ "{\r\n"+ "\"from-connector-name\": \"generic-jdbc-connector\",\r\n"+ "\"name\": \""+JOB_NAME+"\",\r\n"+ "\"to-connector-name\": \"generic-jdbc-connector\",\r\n"+ "\"driver-config-values\": {\r\n"+ "\"configs\": [\r\n"+ "{\r\n"+ "\"inputs\": [\r\n"+ "{\r\n"+ "\"name\": \"throttlingConfig.numExtractors\",\r\n"+ "\"value\": \"1\"\r\n"+ "}\r\n"+ "],\r\n"+ "\"validators\": [],\r\n"+ "\"type\": \"JOB\",\r\n"+ "\"id\": 30,\r\n"+ "\"name\": \"throttlingConfig\"\r\n"+ "}\r\n"+ "]\r\n"+ "},\r\n"+ "\"from-link-name\": \""+FROM_LINKNAME+"\",\r\n"+ "\"from-config-values\": {\r\n"+ "\"configs\": [\r\n"+ "{\r\n"+ "\"inputs\": [\r\n"+ "{\r\n"+ "\"name\": \"fromJobConfig.schemaName\",\r\n"+ "\"value\": \"sqoop\"\r\n"+ "},\r\n"+ "{\r\n"+ "\"name\": \"fromJobConfig.tableName\",\r\n"+ "\"value\": \"city1\"\r\n"+ "},\r\n"+ "{\r\n"+ "\"name\": \"fromJobConfig.columnList\",\r\n"+ "\"value\": \"code&name\"\r\n"+ "},\r\n"+ "{\r\n"+ "\"name\": \"fromJobConfig.partitionColumn\",\r\n"+ "\"value\": \"code\"\r\n"+ "}\r\n"+ "],\r\n"+ "\"validators\": [],\r\n"+ "\"type\": \"JOB\",\r\n"+ "\"id\": 7,\r\n"+ "\"name\": \"fromJobConfig\"\r\n"+ "}\r\n"+ "]\r\n"+ "},\r\n"+ "\"to-link-name\": \""+TO_LINKNAME+"\",\r\n"+ "\"to-config-values\": {\r\n"+ "\"configs\": [\r\n"+ "{\r\n"+ "\"inputs\": [\r\n"+ "{\r\n"+ "\"name\": \"toJobConfig.schemaName\",\r\n"+ "\"value\": \"sqoop\"\r\n"+ "},\r\n"+ "{\r\n"+ "\"name\": \"toJobConfig.tableName\",\r\n"+ "\"value\": \"city2\"\r\n"+ "},\r\n"+ "{\r\n"+ "\"name\": \"toJobConfig.columnList\",\r\n"+ "\"value\": \"code&name\"\r\n"+ "}, \r\n"+ "{\r\n"+ "\"name\": \"toJobConfig.shouldClearTable\",\r\n"+ "\"value\": \"true\"\r\n"+ "}\r\n"+ "],\r\n"+ "\"validators\": [],\r\n"+ "\"type\": \"JOB\",\r\n"+ "\"id\": 9,\r\n"+ "\"name\": \"toJobConfig\"\r\n"+ "}\r\n"+ "]\r\n"+ "}\r\n"+ "}\r\n"+ "]\r\n"+ "}\r\n"; try { StringEntity s = new StringEntity(json); s.setContentEncoding("UTF-8"); s.setContentType("application/json"); httpPost.setEntity(s); httpPost.addHeader("X-Auth-Token", this.token); httpPost.addHeader("X-Language", "en-us"); CloseableHttpResponse response = httpclient.execute(httpPost); int status = response.getStatusLine().getStatusCode(); if(status == 200){ System.out.println("Create job successful."); }else{ System.out.println("Create job failed."); HttpEntity entity = response.getEntity(); System.out.println(EntityUtils.toString(entity)); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("Create job failed.", e); } } /*启动作业*/ public void startJob(){ HttpPut httpPut = new HttpPut("https://"+CDM_ENDPOINT+"/cdm/v1.0/"+PROJECT_ID+"/clusters/"+CLUSTER_ID+"/cdm/job/"+JOB_NAME+"/start"); String json = ""; try { StringEntity s = new StringEntity(json); s.setContentEncoding("UTF-8"); s.setContentType("application/json"); httpPut.setEntity(s); httpPut.addHeader("X-Auth-Token", this.token); httpPut.addHeader("X-Language", "en-us"); CloseableHttpResponse response = httpclient.execute(httpPut); int status = response.getStatusLine().getStatusCode(); if(status == 200){ System.out.println("Start job successful."); }else{ System.out.println("Start job failed."); HttpEntity entity = response.getEntity(); System.out.println(EntityUtils.toString(entity)); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("Start job failed.", e); } } /*循环查询作业运行状态,直到作业运行结束。*/ public void getJobStatus(){ HttpGet httpGet = new HttpGet("https://"+CDM_ENDPOINT+"/cdm/v1.0/"+PROJECT_ID+"/clusters/"+CLUSTER_ID+"/cdm/job/"+JOB_NAME+"/status"); try { httpGet.addHeader("X-Auth-Token", this.token); httpGet.addHeader("X-Language", "en-us"); boolean flag = true; while(flag){ CloseableHttpResponse response = httpclient.execute(httpGet); int status = response.getStatusLine().getStatusCode(); if(status == 200){ HttpEntity entity = response.getEntity(); String msg = EntityUtils.toString(entity); if(msg.contains("\"status\":\"SUCCEEDED\"")){ System.out.println("Job succeeded"); break; }else if (msg.contains("\"status\":\"FAILED\"")){ System.out.println("Job failed."); break; }else{ Thread.sleep(1000); } }else{ System.out.println("Get job status failed."); HttpEntity entity = response.getEntity(); System.out.println(EntityUtils.toString(entity)); break; } } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("Get job status failed.", e); } } /*删除作业*/ public void deleteJob(){ HttpDelete httpDelte = new HttpDelete("https://"+CDM_ENDPOINT+"/cdm/v1.0/"+PROJECT_ID+"/clusters/"+CLUSTER_ID+"/cdm/job/"+JOB_NAME); try { httpDelte.addHeader("X-Auth-Token", this.token); httpDelte.addHeader("X-Language", "en-us"); CloseableHttpResponse response = httpclient.execute(httpDelte); int status = response.getStatusLine().getStatusCode(); if(status == 200){ System.out.println("Delete job successful."); }else{ System.out.println("Delete job failed."); HttpEntity entity = response.getEntity(); System.out.println(EntityUtils.toString(entity)); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException("Delete job failed.", e); } } /*关闭*/ public void close(){ try { httpclient.close(); } catch (IOException e) { throw new RuntimeException("Close failed.", e); } } public static void main(String[] args){ CdmClient cdmClient = new CdmClient(); cdmClient.createJob(); cdmClient.startJob(); cdmClient.getJobStatus(); cdmClient.deleteJob(); cdmClient.close(); } }
-
配置阻断IP的防护规则需要注意哪些? 配置阻断IP的防护规则需注意以下几点: 建议优先配置精准的IP(如192.168.10.5),减少网段配置,避免误拦截。 对于反向代理IP(如内容分发网络(CDN)、DDoS高防、 Web应用防火墙 (WAF)的回源IP),请谨慎配置阻断的防护规则,建议配置放行的防护规则或白名单。 对于正向代理IP(如公司出口IP),影响范围较大,请谨慎配置阻断的防护规则。 配置“地域”防护时,需考虑公网IP可能更换地址的情况。 父主题: 功能类
-
数据库安全服务实例所属VPC是否可以更改? 不可以。实例所属的VPC是由私网网段、路由表和至少一个子网组成,拥有独立的安全组和网络ACL来保障云资源安全,详情请参见什么是虚拟私有云。 若有VPC的变更需求,可通过申请退订变更或提交工单提交工单申请VPC对接: 退订变更:对想要变更的VPC对应实例参照如何退订数据库安全服务?进行退订,退订后在目标VPC重新购买数据库安全审计(建议)。 VPC对接:通过提交工单提交工单申请目标VPC人工对接。 父主题: 数据库安全审计功能类
-
当遭受超过5Gbps的攻击时如何处理? Anti-DDoS为普通用户免费提供2Gbps的DDoS攻击防护,最高可达5Gbps(视华为云可用带宽情况)。系统会对超过5Gbps的受攻击公网IP进行黑洞处理,正常访问流量会丢弃,建议用户购买DDoS原生高级防护或DDoS高防,提升防护能力。 有关Anti-DDoS流量清洗、DDoS原生高级防护和DDoS高防的详细介绍,请参见什么是DDoS防护?。 父主题: 基本功能类
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格