堡垒机

堡垒机架构

  • 所有人包括运维、开发等任何需要访问业务系统的人员,只能通过堡垒机访问业务系统
    • 回收所有对业务系统的访问权限,做到除了堡垒机管理人员,没有人知道业务系统任何机器的登录密码
    • 网络上限制所有人员只能通过堡垒机的跳转才能访问业务系统 
  • 确保除了堡垒机管理员之外,所有其它人对堡垒机本身无任何操作权限,只有一个登录跳转功能
  • 确保用户的操作纪录不能被用户自己以任何方式获取到并篡改 

流程分析:

  首先,host 与remote_user相互之间没有直接关联,但是要登陆远程主机,要通过用户名密码。一个主机可以有多个远程用户,一个远程用户也可以对应多个主机,这两者之间形成了多对多的关系。就有了如下图形:

group与host之间关联,但同时又要知道对应的remote_user,所group与bind_host之间关联,group可以对应多个host,host分别对就不同remote_user,group对应多个bind_host,一个host与remote_user可以同时属于多个group组,所以group与bind_host又是多对多的关系。如下图形:

堡垒机账户user_profile想直接连某个host与对应remote_user,user_profile可以连多个bind_host,一个bind_host可以让多个user_profile连接,user_profile与bind_host形成了多对多关系。如下图形:

user_profile连接group时,可以允许连接多个group,group又可以让多个user_profile连接,user_profile与group形成多对多关系。如下图形:

联合唯一索引

__table_args__ = (UniqueConstraint('auth_type''username','password', name='_user_passwd_uc'),)

错误问题:

 sqlalchemy: 'InstrumentedList' object has no attribute 'filter'

 出现这样的问题时解决方法:uselist=False

官方文档:http://docs.sqlalchemy.org/en/latest/orm/join_conditions.html

原文地址:https://www.cnblogs.com/sshcy/p/8455307.html