容器时代的堡垒机 LAIN Entry

MIT
Google Go
跨平台
2018-05-02
h4cd

LAIN 是宜信大数据创新中心开发的一款私有云平台(PaaS),面向技术栈多样、寻求高效运维方案的高速发展中的组织、DevOps人力缺乏的创业公司以及个人开发者,提供了从编译、部署和扩容到日志、监控和报警的整体解决方案。

Entry 是 LAIN 的 layer2 的一个特殊应用,允许开发者通过 lain enter 命令或者 console 的 web 界面远程登录到具有本人管理权限的容器中。

该效果等同于在 LAIN 的节点上执行 docker exec -it $container_id /bin/bash

对于没有权限登录节点的开发者,使用 Entry 远程进入自己的容器调试是不错的选择。

使用前要注意

Entry 由于需要访问集群的特殊资源,必须要由集群管理员部署,Entry的管理员也必须只能是集群管理员。

Entry 使用前要确保集群的 sso 验证机制已经打开,否则客户端可以通过构造 http(s) 的 header 进入其他应用的容器。

整体架构

整体架构如下图所示:

整体架构

  • LAIN 应用所有者可以通过 lain-cli 或者 console 进入除 entry 之外的 LAIN 应用

  • 系统管理员可以在 https://entry.${LAIN_DOMAIN}/web 搜索、回放用户会话或者搜索用户命令

审计

Entry 设计了完善的审计框架:

  • Entry 审计所有经自己建立的用户会话

  • 系统管理员还可以从 LAIN 节点进入所有的 LAIN 应用(包括 entry),这时由堡垒机负责审计

如下图所示:

审计框架

数据库

Entry 将用户会话和命令存储于数据库,数据表如下图所示:

数据表

部署

配置

请参考 example.json 编写配置文件,并上传到 lvault:

lain secret add ${LAIN-Domain} web /lain/app/prod.json -f example.json


  • smtp.address 需要包含端口,如:${mail-address}:25

  • smtp.password 可选,为空时不使用 auth

开发

  • server/gen 下除 server/gen/restapi/configure_entry.go 外均由 go-swagger 生成,请不要手动修改

  • server/gen/restapi/configure_entry.go 包含初始化逻辑以及后端 API 配置

  • server/handler 包含后端 API 的实际逻辑

由 swagger.yml 生成代码:

go get -u github.com/go-swagger/go-swagger/cmd/swagger  # 安装 swagger
swagger generate server -f ./swagger.yml -t server/gen  # 生成代码
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

4
回答
为什么update 方法,也会报 Duplicate entry '2222' for key 'PRIMARY'; nes

org.springframework.dao.DuplicateKeyException: ### Error updating database. C...

08/29 15:57
2
回答
java.util.ConcurrentModificationException: null 为啥会突然空map
kakai 的回答 07/03 12:02
最佳答案
HashMap转 Iterator 好像只是一种模式转换,数据结构还是一样的,你不能在对HashMap循环迭代的时候进行删除操作,不然就会报这个错误。
2
回答
javaWeb项目卡死,求帮忙分析原因。

2019-03-28 10:23:22 Full thread dump Java HotSpot(TM) 64-Bit Server VM (24.79...

03/28 10:34

没有更多内容

加载失败,请刷新页面

没有更多内容

Oracle分析函数比较

select * from IMD_WMQ_SF_OUT where rownum<5; select entry_station, entry_lane, sum(total_toll) from IMD_WMQ_SF_OUT where rownum<20 group by grouping sets(entry_station, entry_la...

2015/07/07 10:14
5
0
Solr在Weblogic中部署遇到的问题

weblogic.descriptor.DescriptorException: VALIDATION PROBLEMS WERE FOUND problem: cvc-complex-type.2.4a...

2015/12/31 12:33
123
0
内置双向list和外置双向list_entry的使用

list和list_entry都是双向链表的容器,也都支持迭代器模式和算法操作,区别就在元素的维护上。 如果要做比喻的话,list就是傻瓜式操作,list_entry就是定制化操作。。。...

2015/10/22 10:28
33
0
收付款单提交时分录自动清空

问题:标准产品收付款单加字段后,提交时分录自动清空。 必须在EditUI增加以下代码方能解决: public void storeFields() { // TODO Auto-generated method stub super.storeFields(); for(...

2016/05/27 11:21
7
0
Mule ESB中entry-point-resolver的使用(9) Entry Point Resolver Set和 Legacy Entry Point Resolver Set

本文介绍了Entry Point Resolver Set和Legacy Entry Point Resolver Set

2016/08/16 16:42
35
0
使用linux 内核中代码之--list

修改了一下linux 内核3.3 中的list.h, 可以在自己的程序中直接使用; list 直接上代码比较实在。 #ifndef _LINUX_LIST_H #define _LINUX_LIST_H #ifdef __cplusplus extern "C" { #endif #if...

2012/04/16 10:05
255
0
HashMap深入学习

面试的时候,面试官通常爱问HashMap的源码问题和实现原理。

2016/05/19 17:13
71
2
Django 的数据库查询

Python代码 class Blog(models.Model): name = models.CharField(max_length=100) tagline = models.TextField() def __unicode__(self): return self.name class Author(models.Model): nam...

2016/08/17 17:47
3
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部