我刚刚在 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 进入堡垒主机,然后从那里连接到数据库。这次没有密钥转发,因为数据库已经从堡垒授权了密钥。
这两者之间的区别在于,用户只需要第一种方法的数据库密钥,而不需要第二种方法。
我的问题是,哪一个是最好的方法?似乎它们都可以被认为是安全的。但是第二个可能会更好,因为管理员不必将数据库密钥分发给用户。
如果您将 ssh 私钥视为标识用户,那么第二种方法只是授权同一用户访问堡垒和数据库主机。正如您所说,它稍微简化了管理,但您必须评估风险以及是否值得。
然而,第一种方法在实践中不太可能增加任何安全性。如果攻击者能够获得其中一个私钥,他们可能也能够获得另一个。
总而言之,除非您是高价值目标,否则第二种方法可能没问题。无论哪种方式,都需要仔细保护对您的数据库具有 ssh 访问权限的用户帐户。