堡垒机架构
堡垒机的主要作用权限控制和用户行为审计,堡垒机就像一个城堡的大门,城堡里的所有建筑就是你不同的业务系统 , 每个想进入城堡的人都必须经过城堡大门并经过大门守卫的授权,每个进入城堡的人必须且只能严格按守卫的分配进入指定的建筑,且每个建筑物还有自己的权限访 问控制,不同级别的人可以到建筑物里不同楼层的访问级别也是不一样的。还有就是,每个进入城堡的人的所有行为和足迹都会被严格的监控和纪录下来,一旦发生 犯罪事件,城堡管理人员就可以通过这些监控纪录来追踪责任人。
堡垒要想成功完全记到他的作用,只靠堡垒机本身是不够的, 还需要一系列安全上对用户进行限制的配合,堡垒机部署上后,同时要确保你的网络达到以下条件:
-
所有人包括运维、开发等任何需要访问业务系统的人员,只能通过堡垒机访问业务系统
- 回收所有对业务系统的访问权限,做到除了堡垒机管理人员,没有人知道业务系统任何机器的登录密码
- 网络上限制所有人员只能通过堡垒机的跳转才能访问业务系统
- 确保除了堡垒机管理员之外,所有其它人对堡垒机本身无任何操作权限,只有一个登录跳转功能
- 确保用户的操作纪录不能被用户自己以任何方式获取到并篡改
堡垒机表结构设计
对象分析:
需要堡垒机管理的对象包括:人员、人员组、系统账户+登录认证+账户权限(唯一通道)、主机、主机组、操作日志(命令、上传、下载)
对象之间的关系如下图所示:
人员想登陆到host需要通过唯一确定的通道,这个通道就是需要登陆的系统账户+登陆认证方式与信息+所属账户的sudo权限(默认是普通用户)
人员组与主机组是对人员与主机的管理对象
红色与紫色的连接线表示了绑定的含义,通过绑定五类对象(人员、人员组、"通道"、主机、主机组)实现用户登录授权
而绑定后构成的通路中会有用户的操作请求数据和主机的结果响应数据,这两类数据构成了审计的主体内容
未完待续,持续更新中...
PyYaml模块的使用
1 import yaml 2 3 try: 4 from yaml import CLoader as Loader, CDumper as Dumper 5 except ImportError: 6 from yaml import Loader, Dumper 7 8 9 def print_err(msg, quit=False): 10 output = "\033[31;1mError: %s\033[0m" % msg 11 if quit: 12 exit(output) 13 else: 14 print(output) 15 16 17 def yaml_parser(yml_filename): 18 ''' 19 load yaml file and return 20 :param yml_filename: 21 :return: 22 ''' 23 # yml_filename = "%s/%s.yml" % (settings.StateFileBaseDir,yml_filename) 24 try: 25 yaml_file = open(yml_filename, 'r') 26 data = yaml.load(yaml_file) 27 return data 28 except Exception as e: 29 print_err(e)