【腾讯云云上实验室】探索向量数据库背后的安全监控机制_向量数据库与数据中心

本人从事网路安全工作12年,曾在2个大厂工作过,安全服务、售后服务、售前、攻防比赛、安全讲师、销售经理等职位都做过,对这个行业了解比较全面。

最近遍览了各种网络安全类的文章,内容参差不齐,其中不伐有大佬倾力教学,也有各种不良机构浑水摸鱼,在收到几条私信,发现大家对一套完整的系统的网络安全从学习路线到学习资料,甚至是工具有着不小的需求。

最后,我将这部分内容融会贯通成了一套282G的网络安全资料包,所有类目条理清晰,知识点层层递进,需要的小伙伴可以点击下方小卡片领取哦!下面就开始进入正题,如何从一个萌新一步一步进入网络安全行业。

学习路线图

其中最为瞩目也是最为基础的就是网络安全学习路线图,这里我给大家分享一份打磨了3个月,已经更新到4.0版本的网络安全学习路线图。

相比起繁琐的文字,还是生动的视频教程更加适合零基础的同学们学习,这里也是整理了一份与上述学习路线一一对应的网络安全视频教程。

网络安全工具箱

当然,当你入门之后,仅仅是视频教程已经不能满足你的需求了,你肯定需要学习各种工具的使用以及大量的实战项目,这里也分享一份我自己整理的网络安全入门工具以及使用教程和实战。

项目实战

最后就是项目实战,这里带来的是SRC资料&HW资料,毕竟实战是检验真理的唯一标准嘛~

面试题

归根结底,我们的最终目的都是为了就业,所以这份结合了多位朋友的亲身经验打磨的面试题合集你绝对不能错过!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以点击这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

client = tcvectordb.VectorDBClient(
url=‘http://lb-3f6goz65-9qzaxduhtkf…’,
username=‘root’,
key=‘xzxazMkko5…Gekb02I’,
read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY,
timeout=30
)
db = client.create_database(database_name=‘db-test-by_ye’)

print(db.database_name)


最终我们可以看到控制台打印了我们创建的数据库的名称:


![](https://img-blog.csdnimg.cn/direct/a6acd3ea11314da7885822fdbb43ffc1.png)


回到控制台我们可以看到我们创建的数据库名称,在向量数据库当中已经呈现:


![](https://img-blog.csdnimg.cn/direct/3133c868da754bbcb038f17ac763441c.png)


因为向量数据库这里也是兼容java语言来连接向量数据库的,这里我们也可以采用java进行连接:



import com.tencent.tcvectordb.client.VectorDBClient;
import com.tencent.tcvectordb.model.param.database.ConnectParam;
import com.tencent.tcvectordb.model.param.enums.ReadConsistencyEnum;

public class VDBClient {

public static VectorDBClient createClient() {
    ConnectParam param = getConnectParam();
    return new VectorDBClient(param, ReadConsistencyEnum.EVENTUAL_CONSISTENCY);
}

private static ConnectParam getConnectParam() {
    return ConnectParam.newBuilder()
            .withUrl("url")
            .withUsername("username")
            .withKey("key")
            .withTimeout(30)
            .build();
}

}


文档的后面也提供了一个比较详细的问答系统结合向量数据库的实现过程:


![](https://img-blog.csdnimg.cn/b56c0d57e8b94a63a3a512d10285866f.png)


这么详细的文档和示例代码,可以帮助开发者快速上手并集成到他们的项目中。同时,腾讯云的技术支持团队也会为开发者提供及时的帮助和支持,确保在不同的开发环境下能够顺利使用腾讯云向量数据库。


#### 四、数据可视化和数据安全


官方文档给我们讲解了关于腾讯云向量数据的具体操作,我们通过腾讯云提供的可视化界面,用户可以轻松地创建新的数据库,


![](https://img-blog.csdnimg.cn/7e24c14a4ef94e97b50906b165dd3103.png)


进行数据操作以及数据查询分析等各种操作:


![](https://img-blog.csdnimg.cn/942cf9fec2864628a319dc8bbb88edf3.png)


当然我们也可以借助代码将相应本地的文件上传到向量数据库当中进行检索,这里我们使用py进行相应的操作,这里我们先创建一个集合,并将一个相应的数据进行插入到向量数据库当中:



指定数据库

db = client.database(‘db-test-by_ye’)

第一步,设计索引(不是设计 Collection 的结构)

index = Index(
FilterIndex(name=‘id’, field_type=FieldType.String, index_type=IndexType.PRIMARY_KEY),
FilterIndex(name=‘question’, field_type=FieldType.String, index_type=IndexType.FILTER),
FilterIndex(name=‘answer’, field_type=FieldType.String, index_type=IndexType.FILTER),
VectorIndex(name=‘vector’, dimension=3, index_type=IndexType.HNSW,
metric_type=MetricType.COSINE, params=HNSWParams(m=16, efconstruction=200))
)

第二步,创建 Collection

coll = db.create_collection(
name=‘intelligent’,
shard=1,
replicas=0,
description=‘this is a collection of test embedding’,
index=index
)

写入数据

res = coll.upsert(
documents=[
Document(id=‘0001’, vector=[
0.2123, 0.23, 0.213],
question=‘请问车险理赔时,全责一方和无责任一方收到待遇的区别’,
answer=‘这位朋友提问的有些过于笼统了不是很详细,理论上来讲,从商业险的角度分析,有责任,保险公司才会…’, page=21),
Document(id=‘0002’, vector=[
0.2123, 0.22, 0.213],
question=‘买保险,一定要找代理人吗,直接去保险公司买不可以吗?’,
answer=‘可以的。可以自行去保险公司进行投保,也可以选择在网上投保。不过有代理人的好处在于可以为被保险…’, page=22),
Document(id=‘0003’, vector=[
0.2123, 0.21, 0.213],
question=‘机动车撞伤人至骨折保险公司该怎么赔偿’,
answer=‘交通事故赔偿是有标准的,因交通事故造成损失,肇事者向受害者、保险公司对承保车辆造成的损失进行…’, page=23)
],
build_index=True
)


这里我们在向量数据库的控制台处进行相应的数据查询,可以看到我们的数据已经写入到我们的向量数据库当中:


![](https://img-blog.csdnimg.cn/direct/8427cc24efce4973aaef487cc50a05b5.png)


当然我们也可以进行相应的相似度进行查询,代码如下:



import tcvectordb
from tcvectordb.model.enum import FieldType, IndexType, MetricType, ReadConsistency
from tcvectordb.model.index import Index, VectorIndex, FilterIndex, HNSWParams
from tcvectordb.model.collection import UpdateQuery
from tcvectordb.model.document import Document, SearchParams, Filter

client = tcvectordb.VectorDBClient(
url=‘http://lb-3f6goz65-9q…om:20000’,
username=‘root’,
key=‘xzxazMkko50V…cpUYGekb02I’,
read_consistency=ReadConsistency.EVENTUAL_CONSISTENCY,
timeout=30
)

指定数据库

db = client.database(‘db-test-by_ye’)

指定集合

coll = db.collection(‘intelligent’)

doc_lists = coll.searchById(
document_ids=[‘0001’,‘0002’],
filter=Filter(Filter.In(“question”,[“请问车险理赔时,全责一方和无责任一方收到待遇的区别”, “买保险,一定要找代理人吗,直接去保险公司买不可以吗?”])),
params=SearchParams(ef=200),
limit=3,
retrieve_vector=True,
output_fields=[‘question’,‘answer’]
)

for i, docs in enumerate(doc_lists):
print(i)
for doc in docs:
print(doc)


查询的相似度的数据如下:


![](https://img-blog.csdnimg.cn/direct/e23f1644be5f4fcfa7c8a87c6d63fda4.png)


当然我们也可以在网上找些问答系统的数据集进行测试,那法律问题的回答我们可以采用Elasticsearch进行搜索:



def create_mapping(self):
# 定义索引的映射关系
node_mappings = {
“mappings”: {
self.doc_type: { # 索引中的类型
“properties”: {
“question”: { # 问题字段
“type”: “text”, # 字段类型为text(文本)
“analyzer”: “ik_max_word”, # 分词器为ik_max_word(中文分词器)
“search_analyzer”: “ik_smart”, # 搜索时使用的分词器为ik_smart(中文分词器)
“index”: “true” # 控制该字段的值是否被索引
},
“answers”: { # 答案字段
“type”: “text”, # 字段类型为text(文本)
“analyzer”: “ik_max_word”, # 分词器为ik_max_word(中文分词器)
“search_analyzer”: “ik_smart”, # 搜索时使用的分词器为ik_smart(中文分词器)
“index”: “true” # 控制该字段的值是否被索引
},
}
}
}
}

# 如果索引不存在,则创建索引
if not self.es.indices.exists(index=self._index):
    self.es.indices.create(index=self._index, body=node_mappings)
    print("Create {} mapping successfully.".format(self._index))
else:
    print("index({}) already exists.".format(self._index))

得到的结果如下:



question:昨天把人家车刮了,要赔多少
answers: [‘您好,建议协商处理,如果对方告了你们,就只能积极应诉了。’, ‘您好,建议尽量协商处理,协商不成可起诉’]


question:最近丈夫经常家暴,我受不了了
answers: [‘报警要求追究刑事责任。’, ‘您好,建议起诉离婚并请求补偿。’, ‘你好!可以起诉离婚,并主张精神损害赔偿。’]


question:毕业生拿了户口就跑路可以吗
answers: 您好,对于此类问题,您可以咨询公安部门


question:孩子离家出走,怎么找回来
answers: [‘孩子父母没有结婚,孩子母亲把孩子带走了?这样的话可以起诉要求抚养权的。毕竟母亲也是孩子的合法监护人,报警警察一般不受理。’]



在数据安全方面腾讯云采用的是API 密钥访问作为身份验证的方式,API 密钥通常是由 API 提供者生成的一串字符串,用于标识 API 的调用者。在使用 API 时,调用者需要将 API 密钥作为参数传递给 API,以便 API 可以验证调用者的身份。腾讯云向量数据库使用 API 密钥来保护 API 访问的安全性,在发送 API 请求时,携带密钥 ID 和签名信息,以便腾讯云可以验证请求的合法性。


![](https://img-blog.csdnimg.cn/93f522f0095a480dbb08ccfb80fa6b71.png)


当恶意用户在不知道我们的API密钥情况下,访问我们的向量数据库就会产生与向量数据库通信发生故障,产生中断。


![](https://img-blog.csdnimg.cn/direct/4c0c81e234994b9e8eee29ca5a84de17.png)


然后在外面的实例列表中找到相应的密钥管理来作为对于username和key的参数,密钥作为能够识别我们身份的令牌,腾讯云将密钥进行了加密处理,如下:


![](https://img-blog.csdnimg.cn/9d9667af3d264e2489ded2cdcfbf9e95.png)


这里我们可以看到腾讯云设置的API密钥的长度,可以说是杜绝了黑客进行暴力破解的可能:


![](https://img-blog.csdnimg.cn/direct/06ccdcc13647419ba5090b7b0fc52b81.png)


#### 五、安全监控机制实操过程


腾讯云向量数据库如何进行网络流量、日志数据等表示为向量的安全监控,我们在探讨其在异常检测、模式识别和发现潜在安全威胁时应该采取什么措施,或者说未雨绸缪应该搭配腾讯云向量数据库设置怎样的防护手段呢?如下:


**配置告警**:腾讯云向量数据库在实例实时监控方面下了很大的功夫,当我们打开控制台的管理面板时,可以看到相当多的资源监控画面:


![](https://img-blog.csdnimg.cn/7d98698ff43c45baab83fbce91a8023c.png)


很人性化的一点就是,当我们的网站数据被恶意请求时,当前的面板能够实时的监听出来,而且给我们还设置了一些报警的阈值,比如说当用户恶意请求网站大量的流量时,控制台将会根据我们设置的阈值进行相应的报警处理,我们可以在想要监听用户访问资源的面板处进行报警设置:


![](https://img-blog.csdnimg.cn/78539e86887f4f87a14200660f805f5d.png)


配置相应的告警规则后,当用户恶意攻击我们的时候,就会触发告警规则,及时通知我们目前我数据正在被攻击,这样就给我们一个处理被攻击的一个机会,而不是等到已经被攻击完毕之后,我们才后知后觉的发现网站数据被攻击:


![](https://img-blog.csdnimg.cn/682f882f7cf24657b1a45f51496f33a5.png)


我们可以下载相应的开源工具 ann-benchmark-dev 进行向量数据库的性能测试,具体方式可以参考官网的性能白皮书,我们根据官网的提示配置相应的探索参数:


![](https://img-blog.csdnimg.cn/25cf58d6d20a45c9a54dec7bab51e649.png)


然后在终端执行如下命令:



python3 run.py --dataset sift-128-euclidean --local --force --parallelism 1 --algorithm vector_db --definitions=mytest.yml --runs 1


首先要cd到当前的工具目录下执行命令进行测试:


![](https://img-blog.csdnimg.cn/b000d07de7b344929c0f38209c366c60.png)


我们在资源监控的位置就可以看到外面的资源正在被请求当中,这里设置阈值来进行安全告警完全是可以的:


![](https://img-blog.csdnimg.cn/a42d29062def4fee8ce4b92899e99c2c.png)


**安全组**:简单介绍如何防止网站被黑客攻击的有效方式,提升自己网站的安全级别,防止被黑的有效的方式可以备份!定时备份就算被攻击了也不慌!配置安全组,也是最有效的防护方式!


借助安全组我们可以限制某个ip段只能访问我们的服务器或者数据库,拿服务器举例来说,如果一个服务器不做任何限制的话是最容易被黑客攻击的,也就是说如果我们的所有端口都是开放的话就很容易被黑客入侵,如下:


![](https://img-blog.csdnimg.cn/eaf712fa1b1b45eea020570838d220c3.png)


在向量数据库当中也是可以进行配置相应的安全组的,我们在腾讯云向量数据库后台点击安全组,默认其给我们的是一个摩恩的安全组规则,其默认开放的也是80端口,这里如果我们可以根据需求进行一个规则的修改:


![](https://img-blog.csdnimg.cn/53b0d5a580ba4c4382ffd5d53509a3e3.png)


进行安全组规则的设置界面之后,我们进行添加规则的设置,可以根据需求添加相应的协议端口,如果我们本来已经存在的端口删掉的话,再次进行连接的话是已经连接不上了。


![](https://img-blog.csdnimg.cn/6ec408e51ab44a66a2bc7168ca07c835.png)


比如我们百度搜索ip,然后就会出现你当前所处地区的ip地址,我们可以将该ip地址添加到安全组规则当中:


![](https://img-blog.csdnimg.cn/e46af38438714783b5ef2b2450dd19be.png)


然后给其编辑其入站规则即可:


![](https://img-blog.csdnimg.cn/14e4775101264c059cf148abafbac8d8.png)


**重置API密钥**:API密钥涉及的范围很大,一旦有人掌握了我们的密钥,我们的向量数据库中的数据就会完完全全的暴露给别人,因为我们需要定期更新我们的密钥防止因为用户的操作失误从而导致API密钥泄露:


![](https://img-blog.csdnimg.cn/direct/8be9259ef5ca4ec6ad74451a039dbcc7.png)


**私有网络**: 我们在上文初识腾讯云向量数据库的时候,已经简单介绍了一下关于安全监控机制涉及的网络层面上的事,在腾讯云数据库当中也是采用相应的私有网络进行安全防范,私有网络为云上逻辑隔离的网络空间,不同私有网络间相互隔离,保障业务安全:


![](https://img-blog.csdnimg.cn/649f0b826e2f448f9847120dbabb9e87.png)


目前腾讯云提供了数据库安全防护的可视化工具,不单单只是向量数据库,当我们使用其他数据库的时候也可以采用这个便利的可视化工具,可以大大加强我们的项目的防护:


![](https://img-blog.csdnimg.cn/direct/7ff62e359b064b6690d664c70d6d402b.png)


#### 六、个人总结及其未来展望


通过上文学习我们了解到了腾讯云向量数据库的安全监控机制在保护数据安全和隐私方面发挥着重要作用。其在实时监控、异常检测、审计日志、访问控制等方面都有很简便的操作性。当然除了安全方面,其应用场景也十分广泛,包括构建大型知识库、推荐系统、智能问答系统以及文本/图像检索等。


![](https://img-blog.csdnimg.cn/6c6c48c33a0a4dde8854bd65935ab111.png)


但是关于腾讯云向量数据库安全防范方面功能也不是很齐全,要知道数据库被黑客攻击的方式有很多,像SQL注入、跨站脚本攻击、未经授权的访问、拒绝服务攻击、密码破解等。我们不仅仅要实施严格的访问控制策略、启用审计日志并监控异常活动等操作还要定期备份数据库,并将备份文件存储在安全的位置、对用户输入数据进行验证和过滤,确保输入的数据符合预期的格式和范围等常规操作。宝塔面板就考虑多方面的因素


![](https://img-blog.csdnimg.cn/ff9be04573bf41fa9c09d3d1232b7b64.png)


智者千虑,必有一失。再安全的防范如果连操作的员工都不知道基本的安全意识的话,也是无用的,所以建立安全意识培训计划,教育员工有关数据库安全的最佳实践和常见的安全威胁,这也是非常重要的一环。


总之,腾讯云向量数据库在保护数据安全和隐私方面已经做得很好,未来也可以不断优化和完善安全监控机制,以满足用户在安全性和合规性方面的不断提升的需求。具体的信息大家也可以查看一下官方对腾讯云数据库的见解:


![](https://img-blog.csdnimg.cn/75e096f6eff9460dbb345b5945a8d2d3.png)


## 学习路线:

这个方向初期比较容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。不过,要想从脚本小子变成黑客大神,这个方向越往后,需要学习和掌握的东西就会越来越多以下是网络渗透需要学习的内容:  
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/7a04c5d629f1415a9e35662316578e07.png#pic_center)





**网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

**[需要这份系统化资料的朋友,可以点击这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**

**一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值