zoukankan      html  css  js  c++  java
  • Python_堡垒机开发基础

    1. 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。 重新封存了用户的SSH代码,使得堡垒机变成了监视器。 

    2. 堡垒机的两个功能: 1, 记录操作,2,权限控制。 

    3,实现多对多的功能。 

    user_m2m_bindhost = Table('user_m2m_bindhost', Base.metadata,
                            Column('userprofile_id', Integer, ForeignKey('user_profile.id')),
                            Column('bindhost_id', Integer, ForeignKey('bind_host.id')),
                            )
    bindhost_m2m_hostgroup = Table('bindhost_m2m_hostgroup', Base.metadata,
                              Column('bindhost_id', Integer, ForeignKey('bind_host.id')),
                              Column('hostgroup_id', Integer, ForeignKey('host_group.id')),
                              )
    
    user_m2m_hostgroup = Table('userprofile_m2m_hostgroup', Base.metadata,
                                   Column('userprofile_id', Integer, ForeignKey('user_profile.id')),
                                   Column('hostgroup_id', Integer, ForeignKey('host_group.id')),
                                   )

    4. 创建多个表结构:

    class Host(Base):
        __tablename__ = 'host'
        id = Column(Integer,primary_key=True)
        hostname = Column(String(64),unique=True)
        ip = Column(String(64),unique=True)
        port = Column(Integer,default=22)
    
        def __repr__(self):
            return self.hostname
    
    class HostGroup(Base):
        __tablename__ = 'host_group'
        id = Column(Integer, primary_key=True)
        name = Column(String(64), unique=True)
        bind_hosts = relationship("BindHost",secondary="bindhost_m2m_hostgroup",backref="host_groups")
    
        def __repr__(self):
            return self.name
    
    class RemoteUser(Base):
        __tablename__ = 'remote_user'
        __table_args__ = (UniqueConstraint('auth_type', 'username','password', name='_user_passwd_uc'),)
    
        id = Column(Integer, primary_key=True)
        AuthTypes = [
            ('ssh-password','SSH/Password'),
            ('ssh-key','SSH/KEY'),
        ]
        auth_type = Column(ChoiceType(AuthTypes))
        username = Column(String(32))
        password = Column(String(128))
    
        def __repr__(self):
            return self.username
    
    class BindHost(Base):
        '''
        192.168.1.11    web
        192.168.1.11    mysql
    
        '''
        __tablename__ = "bind_host"
        __table_args__ = (UniqueConstraint('host_id','remoteuser_id', name='_host_remoteuser_uc'),)
    
        id = Column(Integer, primary_key=True)
        host_id = Column(Integer,ForeignKey('host.id'))
        #group_id = Column(Integer,ForeignKey('group.id'))
        remoteuser_id = Column(Integer, ForeignKey('remote_user.id'))
        host = relationship("Host",backref="bind_hosts")
        #host_group = relationship("HostGroup",backref="bind_hosts")
        remote_user = relationship("RemoteUser",backref="bind_hosts")

    5. 比较复杂,后期再复盘。 

  • 相关阅读:
    使用POI读取excel文件内容
    有序链表
    jQuery Validate验证框架详解
    怎样在VS2010中打开VS2012的项目
    在Win8.1系统下如何安装运行SQL Server 2005
    SQL2005 2008配置错误,无法识别的配置节 system.serviceModel machine.config配置文件有问题
    深入浅出学Spring Data JPA
    Java 学习摘要
    JFinal
    spring 4 + jpa(hibernate 3/4) + spring mvc 多数据源配置
  • 原文地址:https://www.cnblogs.com/spencersun/p/9397229.html
Copyright © 2011-2022 走看看