![堡垒主机说明](https://linux22.com/image/759438/%E5%A0%A1%E5%9E%92%E4%B8%BB%E6%9C%BA%E8%AF%B4%E6%98%8E.png)
我刚刚在 AWS 中设置了我的第一个堡垒主机,这让我开始思考访问问题。例如:
user --> bastion (public) --> database (will only allow access from bastion IP on port 22)
看来我可以通过两种方式来做到这一点:
第一的
用户将拥有两个私钥,分别是其个人密钥和数据库密钥。使用 添加ssh-add -K
。因此,为了通过 ssh 进入数据库,用户将执行以下操作:ssh -A user@bastion
然后,一旦登录到堡垒主机,他只需执行另一个 ssh 即可进入数据库。
第二
用户只有一个私钥,即他的个人密钥。他将使用该密钥通过 ssh 进入堡垒主机,然后从那里连接到数据库。这次没有密钥转发,因为数据库已授权堡垒的密钥。
两者的区别在于,对于第一种方法,用户只需要数据库的密钥,而对于第二种方法,用户不需要。
我的问题是,哪一种是实现这一目标的最佳方法?看起来这两种方式都可以被认为是安全的。但第二种方式可能更好,因为管理员不必将数据库密钥分发给用户。
答案1
如果您认为 ssh 私钥可以识别用户,那么第二种方法就相当于授权同一个用户访问堡垒和数据库主机。正如您所说,这可以稍微简化管理,但您必须评估风险以及是否值得。
然而第一种方法在实践中不太可能增加任何安全性。如果攻击者能够获得其中一个私钥,他们可能也能获得另一个私钥。
总而言之,除非您是高价值目标,否则第二种方法可能没问题。无论哪种方式,需要小心保护具有数据库 ssh 访问权限的用户帐户。