acm-header
登录

ACM通信

实践

内部访问控制


互联网访问控制,插图

图片来源:LK photos

回到顶部

似乎每天都有另一个戏剧性的、备受瞩目的安全事件的新闻,无论是在OpenSSL或Bash等广泛使用的软件中发现了长期存在的漏洞,还是名人照片被盗并被公开。似乎有无限的零日漏洞和强大的国家支持的攻击者。面对这样的威胁,是否值得尝试保护您的系统和数据?系统安全设计人员和管理员可以做什么?

虽然这些威胁非常真实,但它们并不是大多数组织所面临的最大威胁。大多数组织不会面临敌对政府或意图窃取用户数据的犯罪分子的有针对性的攻击;他们的系统更有可能因为软件更新不及时或配置错误而不可用。23.4

人们往往会对恐怖袭击等重大事件反应过度,但却低估了普通的威胁。威胁形势的变化使情况更加糟糕;曾经合理的安全建议已经过时。例如,通常都建议用户使用长而复杂的密码,但如今,由于密码重复使用而导致的帐户泄露可能比暴力破解密码更大的威胁,因此为不同的网站选择不同的密码是比创建一个复杂的密码,记住它,并到处使用它更好的策略。

在过去的生活中,我帮助组织连接到互联网,并作为这个过程的一部分,警告管理员他们现在面临的新威胁。这些对话使我确信,对于大多数人来说,实际的系统安全性仍然太难掌握。从那以后的几年里,互联网连接变得越来越常规,但保护系统的方法却没有跟上步伐。

本文支持使用相对普通的工具,系统安全设计人员和管理员可以使用这些工具来保护他们的系统和检测攻击。这里提出的原则是好的内部访问控制:定期自动监视和验证访问配置,并审计用户对数据的访问。在谷歌,我们使用这些技术作为我们安全策略的一部分,但这些原则适用于任何需要保护数据的组织。

回到顶部

这个问题

系统安全管理员比普通用户有更多的动力来获得正确的安全性,这是一项困难的工作。随着移动设备的日益普及,以及对随时随地访问的期望的提高,只有少数高安全的环境可以禁止用户将个人手机或设备带入公司环境。因此,个人电脑上的键盘记录器和恶意软件可以成为攻击企业系统的途径。这些设备可以被用来故意或无意地窃取数据。

即使用户在工作中被限制使用公司拥有和管理的设备,他们仍然倾向于在不同的系统上重复使用密码,这可能成为攻击的载体。从被入侵的服务器上窃取的用户名/密码可以在其他网站上重新使用,因此在多个网站上重复使用用户名/密码的用户可能会造成更大的问题。人们仍然容易受到社会工程或网络钓鱼攻击。改进后的身份验证系统,例如有第二个因素或一次性密码,可以帮助一些人,但绝大多数系统还没有使用这些。

因此,有理由假设一些用户的帐户将会被破坏,并且设计一个具有弹性的系统是很重要的。这样的系统还提供了一些防止恶意内部人员入侵的保护。内部攻击有可能造成巨大的破坏,因为人们使用授权访问权限进行攻击,并且通常了解系统和流程。然而,如果不使系统使用起来非常麻烦,或者不使用户感到不被信任,从而不配合安全措施,设计针对内部攻击的保护措施可能是困难的。

系统的用户通常不了解威胁模型,因此他们最终将安全措施视为必须跨越的障碍。更好地解释限制的基本原理可能会让用户更加合作,并阻止他们寻找绕过障碍的方法。

另一个常见问题是配置错误的安全控制。随着系统和安全软件变得越来越复杂,管理员误解它们的机会也增加了。这可能导致基于忽略默认密码或错误配置防火墙规则等缺陷的成功攻击增加。

回到顶部

为什么要有内部访问控制?

良好的内部访问控制(也称为深度防御)的理由很容易理解,但在实践中出奇地困难。内部访问控制使攻击者更难以入侵(需要攻破的不仅仅是防火墙),并在系统受到攻击时限制损害(一个钓鱼密码最多只能让攻击者获得该用户的访问权限,而不一定是内部网络上的所有内容)。考虑到系统被攻击的常见方式是通过被入侵的合法用户帐户,限制单个被入侵(或恶意)用户在不被发现的情况下逃脱的损害是一个有用的目标。

问题是,系统通常一开始很小,只有很少或没有有价值的数据,内部访问控制似乎是多余的。良好的防火墙和对(少数)授权用户的无限制访问似乎就足够了。人们习惯了不受限制的内部访问,并且流程和工具是在这种假设下开发的,因此随着系统的发展添加内部安全障碍可能会造成破坏并遇到用户的阻力。删除权限还可能破坏系统,通常是以意想不到的方式。将安全性改进到系统中是困难的。

大多数组织都有不同种类的有价值的信息需要保护——公司机密代码和文档、客户信息或用户委托给他们的数据(在云服务提供商的情况下)。不同的员工需要访问此信息的不同子集,或用于开发和调试服务,或提供客户服务,或用于索引或备份等例行活动。组织如何确保人们拥有他们所需要的正确级别的访问?

回到顶部

实现正确的权限粒度

在设计访问方案时,管理可用性常常被忽略。非常细粒度的权限似乎是一个好主意,因为它们可以授予完全必要的访问权限,但它很容易成为难以管理的太多工作。过多或过低级别的权限也会导致混乱,难以理解和推理。

另一方面,过于粗粒度的访问的问题是它可能授予过多的访问权限。授予过多访问权限的一个更大的问题不是恶意使用,而是意外使用。许多系统不是按需启用权限,而是拥有授予用户的所有权限;这相当于总是以超级用户而不是普通用户的身份运行。同样,这个问题是粒度问题——必须指定所需的每个权限变得繁琐,所以倾向于只启用权限。


大多数组织都有不同种类的有价值的信息需要保护——公司机密代码和文档、客户信息或用户委托给他们的数据。


基于角色的访问控制系统1通过对相关的权限集进行分组,可以帮助实现这一点,但是执行不同角色的人员最终仍然拥有大量访问权限,而且使用特权最少的访问权限的方法并不总是很好。

对此我们能做些什么呢?试着充分理解系统,以便在正确的地方设置访问控制,但也要认识到有时会出错,授予的访问权会多于或少于所需的访问权。这可能是因为您想简化管理,也可能是因为您的权限和使用的思维模式是错误的。因此,有一个适当的系统来审查和监视权限,并适当地纠正访问配置是很有用的。

回到顶部

监控接入配置

通常情况下,访问请求在授权时被审查,以后就不再审查了。组织中的人员在不同的角色和项目之间移动,但是旧的权限并不总是过期。删除未使用的权限似乎很少那么紧迫,而错误地猜测某些内容是否未使用可能会破坏正在运行的系统。未使用的权限只要保持未使用状态就没有危险,但它们确实使访问配置更加难以理解。

在谷歌上,我们使用定期监视访问配置来识别意外或不希望的权限行为。访问配置监视的原理非常类似于代码的单元测试。与任何类型的验证一样,如果验证使用与配置不同的方法,这是最有用的——例如,在实时生产配置中查看权限,而不是只查看配置时的权限。

管理员指定关于应该维护的访问配置的不变量,自动化测试基础设施定期验证这些不变量是否存在。如果检测到任何问题,可以引发预先配置的警报。

访问配置监视在以下几个不同的目的中是有用的:

  • 捕获静态配置和动态配置之间的差异。一些访问系统需要管理员检查配置更改,然后“推送”生效。有时,更改被推送到活动系统而不更改静态配置,或者配置被更改而不推送。当重新启动长时间运行的系统时,这种情况可能会导致不愉快的意外。
  • 验证配置的行为与预期一致。大多数配置语言都有自己的特性,因此最好通过测试来确认它们正在执行您所期望的操作。一个常见的例子是防火墙规则阻塞过多或过少的流量。
  • 像绊线一样的监控,将变化通知给人们。通常,这些都是预期的更改,但这可能会捕获未经授权或意外的更改。重要的是,这些声音不能太吵,否则接收到它们的人会忽略它们。
  • 捕捉诸如授权人员数量突然(或甚至逐渐)增加的变化。人们经常出于某种特定的原因创建ACL(访问控制列表),随着时间的推移,往往会出于其他原因使用它,因此ACL的大小会增加。当一个组变得太大、包含太多的权限并且应该被拆分时,这种监视是很有用的。
  • 验证权限分离是否有效。例如,您可能想要阻止任何一个人拥有某些组合的权限(比如能够对代码进行更改并将其推入生产环境而不进行审查)。

回到顶部

通过审计了解访问

审计日志是系统安全的一个常见部分。通常,所有配置更改和对敏感数据的任何访问都会生成审计日志,这些日志很难被破坏。这些通常是法规遵从性的要求。

然而,许多系统停止生成审计日志,只在出现错误时使用它们进行事后分析。在这些系统中,“审计”是麻烦的迹象。因此,访问审计应该更加常规,而不是一个敌对的过程。每当员工执行非常规访问(可能是为了排除故障或调试)时,将对访问进行审计。在大多数情况下,这可能只涉及记录访问的原因。这就形成了一种问责的文化,在这种文化中,用户希望能够证明自己有权访问敏感数据。

知道所有的访问都被审计,这使得授予权限更容易一些。将准入限制在极少数人身上会使系统变得脆弱。如果有更多的人获得紧急通道但不必使用它,它将更加强大。但是,拥有过于宽泛的权限通常是一个问题。用户可能会意外或恶意地滥用他们的访问权限,或因此成为社会工程攻击的目标。有良好的审计日志使用的限制在一定程度上减轻了这种风险,因为不适当的访问不太可能不被发现。

例行访问审计还有助于识别访问模式,并有助于优化访问配置。如果所有访问都记录了日志,那么就可以可靠地识别未使用的权限,并在需要时安全地删除它们。这捕捉到人们在没有明确放弃权限的情况下转移工作或角色的情况。

对实际使用的访问进行审计,可以了解人们需要哪些访问来完成他们的工作。这允许开发更好的工具,有时减少了需要为特定任务授予的访问量。

需要好的工具来防止访问审计成为官僚主义的噩梦。可以根据作业角色或访问历史来识别例行访问,只有不寻常的访问模式可以标记为额外或手动检查。

同样值得注意的是,审计访问并不能代替良好的访问控制;审计只有在不适当的访问发生后才能识别出它,而不像访问控制可以防止不适当的访问。但是,正如刚才所描述的,审计所有访问可以帮助优化访问配置。必须证明访问的正当性也有助于防止授权用户的不适当访问。此外,在不适当访问的不幸事件中,审计日志可以帮助管理员评估损害。

回到顶部

结论

虽然高调的有针对性的攻击还将继续,但组织可以做很多事情来保护他们的系统。适当粒度的内部访问控制,结合访问日志记录和审计,可以帮助检测和防止不必要的访问。接入配置存在“比特腐烂”问题,随着时间的推移,用户经常会积累不必要的权限;因此,定期监控,比如代码的单元测试,可以帮助发现不需要的情况。

向系统用户明确安全目标和威胁可能会鼓励他们合作,而不是让他们将安全视为需要解决的麻烦。使管理员易于理解系统和安全配置可能会减少配置错误,设计良好的监视可以捕获任何剩余的错误。最后,将访问审计设置为常规可以帮助系统管理员理解访问模式并注意到不寻常的访问,无论这是由一些非常规事件引起的,还是因为用户帐户受到了损害。

ACM队列的q戳相关文章
queue.acm.org

十年的操作系统访问控制扩展性
罗伯特·n·m·沃森
http://queue.acm.org/detail.cfm?id=2430732

标准化存储集群
加斯·古德森,赛·苏萨拉,拉胡尔·伊耶尔
http://queue.acm.org/detail.cfm?id=1317402

MonALISA对大型系统的监视和控制
Iosif Legrand, Ramiro Voicu, Catalin Cirstoiu, Costin Grigoras, Latchezar Betev和Alexandru Costan
http://queue.acm.org/detail.cfm?id=1577839

回到顶部

参考文献

1.计算机安全资源中心。基于角色的访问控制和基于角色的安全。国家标准与技术研究院,计算机安全学部,2014;http://csrc.nist.gov/groups/SNS/rbac/

2.Facebook解释了周四早上宕机的原因。Gigaom;https://gigaom.com/2014/06/19/facebook-explains-the-cause-behind-its-early-thursday-downtime/

3.威瑞森的计费系统遭受严重中断。PC杂志英国版, 2014;http://uk.pcmag.com/news/33726/verizon-billing-system-hit-by-major-outage

4.维基百科。RBS集团计算机系统问题,2012;http://en.wikipedia.org/wiki/2012_RBS_Group_computer_system_problems

回到顶部

作者

Geetanjali Sampemanegeta@google.com)属于谷歌的基础设施安全和私隐组。她的职业生涯开始于管理印度的第一个互联网连接,然后在联合国开发计划署工作了几年,帮助发展中国家连接互联网。


版权归作者所有。授权ACM出版权利。

数字图书馆是由计算机协会出版的。版权所有©2015 ACM, Inc.


没有找到条目

Baidu
map