也许对您的情况更好的解决方案是设计系统,即使您被公共汽车撞到,并且您的凭据永远丢失,也不会发生任何不好的事情。
也许最好把这个问题看作两个问题,身份验证和授权。
身份验证确定您就是您声称的身份。某些系统可以知道它确实来自您的请求,因为只有拥有您凭据的人才能提出请求,并且只有您知道凭据。
授权确定您被允许做某件事。请求可以是真实的但未经授权。
如果至少有两个人被授权做一件事,那么其中一个人是否被公共汽车撞到也没关系。爱丽丝可能会被一辆公共汽车撞死,而她的凭证知识将永远丢失。但是 Bob 知道他自己的凭据,并且他有权做 Alice 可以做的任何事情。
如果系统的设计方式是任何人都可能被公共汽车撞死,这也意味着有可能撤销一个人的凭据。前雇员,尤其是那些以不良条件离开的雇员,是一种安全责任。您不能强迫前员工忘记密码,因此为了安全起见,您应该在员工离开时更改所有共享密码。在实践中,这太痛苦了,而且还没有完成。首先不共享密码可以解决问题。
从不共享密码也保留了责任。您不能在没有管理员的情况下经营企业,但您希望能够了解某个特定管理员是否滥用了他的权力。最终,终止或诉讼的威胁会阻止任何管理员滥用。如果密码是共享的,那么“必须是拥有密码的其他管理员之一”是一种合理的辩护。
有时您会遇到似乎无法避免共享密码的情况。但通常有一个解决方案,即使它不是立即显而易见的。
你需要共享root密码吗?不,您根本不能拥有 root 密码,而是使用sudo
.
AWS 根凭证呢?您可以改用 IAM。
也许您有一个无法避免的特别脑残的 Web 应用程序?您可能无法解决这个问题,但您可以掩盖它:使用允许在多个用户之间共享凭据的密码管理器。(我知道 LastPass 可以做到这一点)。当您仍在共享密码时,您至少有一种自动更改密码和分发新密码知识的方法。至少在员工离开时更改密码,但最好更频繁地更改密码。