为什么要有CMDB?

CMDB --Configuration Management Database 配置管理数据库.

1.为了实现资产的自动采集,资产的自动更新,

为了搭建公司自动化平台的基础则需要资产的管理.

2.优点减少了人工干预,降低人员成本.

CMDB三种工作方式

1.Agent

Agent工作流程:

1.首先在每台服务器都装上agent. agent定时执行指令

2.agent将处理过的数据通过requests发给API

3.再由API更新到数据库中.

Ageng优点:

速度快;

缺点:

每一台服务器都需要Agent

2.ssh类

ssh类的工作方式:

1.资产采集器(中控机)先向API获取未采集的服务器列表

2.中控机通过paramiko模块里的ssh远程连接到服务器.(主机名,密码,命令)获取服务器的数据

3.获取完所有未采集的服务器后,将数据发送给API.

优点:无agent

缺点:速度慢

适合用在服务器少的情况下.

3.salt-stack

salt-stack流程:

1.安装了saltstack-master的中控机先去API获取未采集的主机名列表.

2.通过RPC的模式来获取数据.

(RPC模式:

将主机名,密码,命令放在a消息队列里

装有salstack-slave的服务器会去a消息队列里拿命令,检查是否是自己需要执行的.

服务器执行完命令后将数据放在b消息队列里,中控机去b消息队列里获取数据

zeromq软件)

3.将获取的数据发送给API,API存数数据库.

优点:速度快,开发成本低

缺点:依赖saltstack

4.puppet

1.要用ruby写.

2.有点自动汇报数据

缺点:必须用ruby

为什么要有API

1.提供接口.系统调用数据的时候,提供接口.不让外界直接接触数据库

2.对提交的数据进行统一化的管理.

3.比较安全.如果没有API如果服务器给黑了,可能会把数据库删表.

连接API的安全认证

1.API和服务器端各有一个相同的key

2.当服务器端想连接API的时候,将key进行md5加密,发给API

APi的key也进行MD5加密,两个密文对比.,相同则代表通过.

?存在问题. 如果这个key给别人截取了,那么其他的人就可以向API发无用的数据.

3.那么就让key动态起来,我利用了本地的时间和key组合成一个字符串,用md5加密同时也要将本地的时间发给API

因为API接收到的时间会延迟. 然后APIkey和服务端的时间,md5加密 然后两个密文对比.

?存在问题,发现有更多的key可以进入到API

4.将第一次发送的密文放在一个列表里.第二次判断是否在该列表里,在则登录失败.

?那么需要存放的密文很多

5.失效.让服务器发的这个key10秒钟后时间,每次密文判断之前,先判断是否超时了.

清空失效的密文

def api_auth_method(request):
auth_key = request.META.get('HTTP_AUTH_KEY')
if not auth_key:
return False
sp = auth_key.split('|')
if len(sp) != 2:
return False
encrypt, timestamp = sp
timestamp = float(timestamp)
limit_timestamp = time.time() - ASSET_AUTH_TIME
print(limit_timestamp, timestamp)
if limit_timestamp > timestamp:
return False
ha = hashlib.md5(ASSET_AUTH_KEY.encode('utf-8'))
ha.update(bytes("%s|%f" % (ASSET_AUTH_KEY, timestamp), encoding='utf-8'))
result = ha.hexdigest()
print(result, encrypt)
if encrypt != result:
return False exist = False
del_keys = []
for k, v in enumerate(ENCRYPT_LIST):
print(k, v)
m = v['time']
n = v['encrypt']
if m < limit_timestamp:
del_keys.append(k)
continue
if n == encrypt:
exist = True
for k in del_keys:
del ENCRYPT_LIST[k] if exist:
return False
ENCRYPT_LIST.append({'encrypt': encrypt, 'time': timestamp})
return True

CMDB的四种模式的更多相关文章

  1. Hibernate 查询MatchMode的四种模式

    Hibernate 查询MatchMode的四种模式 MatchMode.START:字符串在最前面的位置.相当于"like 'key%'" MatchMode.END:字符串在最 ...

  2. Android 文件访问权限的四种模式

    Linux文件的访问权限* 在Android中,每一个应用是一个独立的用户* drwxrwxrwx* 第1位:d表示文件夹,-表示文件* 第2-4位:rwx,表示这个文件的拥有者(创建这个文件的应用) ...

  3. 对称加密和分组加密中的四种模式(ECB、CBC、CFB、OFB)

    一. AES对称加密: AES加密 分组 二. 分组密码的填充 分组密码的填充 e.g.: PKCS#5填充方式 三. 流密码:   四. 分组密码加密中的四种模式: 3.1 ECB模式 优点: 1. ...

  4. Asp.net的sessionState四种模式配置方案

    sessionState节点的配置 web.config关于sessionState节点的配置方案,sessionState有四种模式:off,inProc,StateServer,SqlServer ...

  5. OAuth2简易实战(一)-四种模式

    1. OAuth2简易实战(一)-四种模式 1.1. 授权码授权模式(Authorization code Grant) 1.1.1. 流程图 1.1.2. 授权服务器配置 配置授权服务器中 clie ...

  6. LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)

    参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...

  7. AES加密的四种模式详解

    对称加密和分组加密中的四种模式(ECB.CBC.CFB.OFB) 一. AES对称加密:                                                       A ...

  8. 第164天:js方法调用的四种模式

    js方法调用的四种模式 1.方法调用模式 function Persion() { var name1 = "itcast", age1 = 19, show1 = functio ...

  9. 小知识:SPI四种模式区别【转】

    转自:http://home.eeworld.com.cn/my/space-uid-80086-blogid-119198.html spi四种模式SPI的相位(CPHA)和极性(CPOL)分别可以 ...

随机推荐

  1. ECSHOP生成缩略图模糊

    原因是因为ECSHOP生成缩略图时,用到的函数 imagejpeg()  没有设置质量参数.注释:质量参数为可选项,范围从 0(最差质量,文件更小)到 100(最佳质量,文件最大).如果没有设置质量参 ...

  2. [SCSS] Create a gradient with a Sass loop

    In this lesson, you will learn how to iteratively generate CSS selectors and attributes using Sass l ...

  3. JAVA Eclipse如何重命名包

    选中某个包之后按F2即可   注意,重命名包不能有大写,而且必须有至少两级(xxx.xxx就是两级)   重命名包之后,你要修改manifest.xml文件  

  4. SecureCRT如何调整好看的黄色

    1.常规 →默认会话→编辑默认编辑→白黑 字体为console 2.全局选项 ANSI颜色有一个 把黄色 拖过去即可

  5. STL学习笔记(第二章 C++及其标准程序库简介)

    本章重点是介绍与C++标准程序库相关的几个最重要的语言新特性 template(模板) 程序库中几乎所有东西都被设计成template形式.所谓templates,是针对“一个或多个尚未明确的型别”所 ...

  6. excel表格快捷键

    CTRL+A   全选     CTRL+B   加粗       CTRL+C   复制      CTRL+D   下拉(复制上一个单元格的格式和内容)    CTRL+G   定位 CTRL+F ...

  7. CSS实现绝对定位居中

    我们经常用margin:0 auto来实现水平居中,而一直认为margin:auto不能实现垂直居中……实际上,实现垂直居中仅需要声明元素高度和下面的CSS: .Absolute-Center { m ...

  8. 第二章:核心C#

    变量 如果在一条语句中声明和初始化了多个变量,那么所有的变量都具有相同的数据类型 Int x=10,y=20: 变量使用前需要赋初始值 声明不同类型的变量需要单独的语句. 变量的初始化 变量时类或者结 ...

  9. Junit内部解密之四: Junit单元测试最佳实践

    我们做使用Junit工具来做单页测试或接口测试时,需要注意一些问题,包括我们的编码规范,test规范,以及编写测试代码的策略,以下个人的总结. 1.为还没有实现的测试代码抛出一个异常.这就避免了该测试 ...

  10. 一家O2O社区App公司的随笔

    近两年,O20是业内最火爆的关键词之一,去年拿到1亿天使投资的叮咚小区都引起了各方的关注. 一个月之前我入职了一家以做O2O社区产品的创业公司,此文会把这段时间和后边所见所想都写出来,总结创业公司和创 ...