使用AWS安全服务减少密钥暴露风险的实用步骤
AWS客户事件响应团队观察到,暴露的长期凭证仍然是威胁行为者在安全事件中最常使用的入口点。威胁行为者暴露和随后使用长期凭证或访问密钥会给云环境带来安全风险。此外,糟糕的密钥轮换实践、多个用户之间共享访问密钥或未能撤销未使用的凭证都可能使系统暴露。
强烈不建议使用长期凭证,这为迁移到AWS IAM角色和联合访问提供了机会。虽然我们推荐的最佳实践是让客户远离长期凭证,但我们认识到这种过渡可能不会对所有组织都立即可行。
构建针对意外访问长期凭证的全面防御需要战略性的分层方法。这种方法旨在弥合理想安全实践与现实操作约束之间的差距,为管理需要长期凭证的遗留AWS工作负载的团队提供可操作的步骤。
在这篇文章中,您将学习如何构建您的防御,从通过Amazon Q Developer和AWS IAM Access Analyzer等服务识别现有风险和潜在暴露开始,从而提供对整个环境中凭证风险的可见性。然后,通过服务控制策略(SCPs)和数据边界建立严格的边界,以控制凭证的创建和使用方式。有了这些机制,您可以通过网络级别的控制来加强您的防护,这些控制有助于保护可能使用访问密钥的基础设施,实施AWS WAF和Amazon Inspector等服务,以帮助防止漏洞被利用。最后,实施操作最佳实践,如自动密钥轮换,以维持持续的安全卫生并最大限度地减少潜在泄露的影响。
检测当前的访问密钥和暴露情况
审计当前访问密钥
为了进行全面审计,组织应定期生成凭证报告,以识别IAM用户拥有的长期凭证以及其他相关信息,例如密钥上次轮换时间、上次使用时间、上次使用的服务和上次使用的区域。这些报告为您提供对凭证环境的重要可见性,使您能够通过关注活动陈旧的访问密钥、超过轮换策略的密钥以及来自陌生区域的意外使用模式来发现未使用或可能已泄露的凭证。
检测暴露的访问密钥
凭证泄露的一个常见来源是通过无意中提交到公共代码仓库。当开发人员意外地将凭证提交到公共仓库时,这些凭证可能会被对手使用的自动扫描工具收集。代码扫描是一个基础步骤,有助于及早发现这些关键的安全问题,以免敏感的凭证被意外提交到代码仓库或部署到可能被利用的生产环境中。
Amazon Q Developer可以审查您的代码库是否存在安全漏洞和代码质量问题,以在整个开发周期中改善应用程序的安全状况。您可以审查整个代码库,分析本地项目或工作空间中的所有文件,也可以审查单个文件。您还可以启用自动审查,在编写代码时进行评估。
Amazon Q会审查您的代码是否存在以下问题:
- SAST扫描 — 检测源代码中的安全漏洞。Amazon Q会识别各种安全问题,例如资源泄漏、SQL注入和跨站脚本。
- 密钥检测 — 防止敏感或机密信息在代码中暴露。Amazon Q会审查您的代码和文本文件中是否存在诸如硬编码密码、数据库连接字符串和用户名等密钥。密钥发现包括有关未受保护密钥的信息以及如何保护它。
- IaC问题 — 评估基础设施文件的安全状况。Amazon Q可以审查您的基础设施即代码(IaC)文件,以检测配置错误、合规性和安全问题。
AWS Trusted Advisor还包含一项暴露访问密钥检查,用于检查流行的代码仓库中是否存在已向公众暴露的访问密钥,以及是否存在可能由泄露的访问密钥导致的异常Amazon Elastic Compute Cloud(Amazon EC2)使用情况。
请注意,虽然这些是有价值的安全工具,但它们无法检测存储在扫描范围之外位置(例如本地开发机器或外部系统)的密钥或访问密钥。它们应作为更广泛安全策略的一部分,而不是识别和防止凭证暴露的唯一方法。
在处理可能已泄露的访问密钥时,建议立即轮换密钥。请参阅有关如何轮换IAM用户访问密钥的说明。
检测未使用的访问
除了识别暴露的凭证外,检测未使用的访问密钥有助于减少攻击面。IAM Access Analyzer包含一个未使用访问分析器,用于查找过于宽松或已废弃的访问权限,包括未使用的IAM角色、IAM用户的访问密钥、IAM用户的密码,以及活动IAM角色和用户的服务和操作。在审查了由组织范围或特定账户的分析器生成的发现后,您可以删除或修改不需要的权限。通过识别并撤销未使用的凭证和访问权限,您可以限制威胁行为者获取凭证可能造成的影响。
通过实施这些工具,您可以深入了解整个环境中的凭证风险。这些组合功能有助于发现嵌入的密钥、暴露的访问密钥以及需要删除的凭证。
预防性防护栏:建立数据边界
既然您已经了解了如何识别暴露或未使用的凭证,让我们探索如何使用SCP和资源控制策略(RCPs)来创建数据边界,并帮助确保只有受信任的身份才能从预期的网络访问受信任的资源。围绕您的AWS环境实施预防性防护栏对于帮助防止未经授权的访问和潜在的访问密钥泄露至关重要。有关什么是数据边界以及如何建立数据边界的更多信息,请参阅在AWS上建立数据边界博客系列。
以下SCP拒绝IAM用户凭证在意外网络(公司无类别域间路由(CIDR)或特定虚拟私有云(VPC))之外使用。此策略的NotAction元素中包含几个如果不禁用会影响服务访问的操作。SCP和RCP的示例可以在data-perimeter-policy-examples中找到,这是新修订策略的真相来源。以下示例已更新,以解决用户凭证在意外网络之外使用的用例。
|
|
通过实施此网络边界,您可以降低凭证泄露导致未经授权访问和数据暴露的风险。试图从咖啡店或家庭网络使用被盗凭证的威胁行为者将被阻止,有助于限制意外访问凭证的影响。
为了进一步增强纵深防御,您可以使用RCPs来帮助保护您的数据,例如,使用它们来控制哪些身份可以访问您的资源。例如,您可能希望允许组织内的身份访问组织内的资源。您可能还想阻止组织外部的身份访问您的资源。您可以使用RCPs来强制执行此控制。您可以使用RCPs来限制对资源的最大可用访问权限,并包括哪些主体(组织内部和外部的)可以访问您的资源。SCPs只能影响您AWS组织内主体的有效权限。
通过实施以下RCP,您可以帮助确保如果长期凭证意外暴露,组织外部的未经授权用户将被阻止使用它们访问您的关键数据和资源。该策略将拒绝Amazon Simple Storage Service(Amazon S3)操作,除非请求来自您的公司CIDR范围(使用aws:SourceIp的NotIpAddressIfExists),或来自您的VPC(使用aws:SourceVpc的StringNotEqualsIfExists)。请参阅支持RCPs的 AWS服务列表。SCP和RCP的示例可以在此GitHub仓库中找到,这是新修订策略的真相来源。以下示例已更新,以解决本文讨论的用例。
|
|
如果您已准备好开始迁移远离长期凭证,使用SCP拒绝创建访问密钥和拒绝更新现有密钥有助于强制使用更安全的身份验证方法,如IAM角色和联合访问。此策略拒绝主体创建或更新AWS访问密钥。
|
|
除了建立这些数据边界控制之外,让我们检查网络控制如何保护访问密钥运行的运行时环境。
网络控制:保护访问密钥的运行时环境
除了构建数据边界并使用SCPs和RCPs之外,保护使用这些访问密钥的计算和网络基础设施至关重要。通过受损的运行时环境暴露凭证的风险使得基础设施保护成为访问密钥安全的关键组成部分,因为不良行为者经常以这些环境为目标来获得未经授权的访问。
安全组和网络ACLs(NACLs)
使用充当不同级别防火墙的网络级安全保护措施,例如实例级别或子网级别,以帮助防止未经授权的访问。
限制关键端口,例如SSH(端口22)和RDP(端口3306),至关重要,因为它们是寻求未经授权系统访问的不良行为者的主要目标。在您的安全组中开放管理端口可能会增加您的攻击面和安全风险。使用AWS Systems Manager Session Manager有助于提供安全的远程访问,而无需暴露入站端口,从而无需堡垒主机或SSH密钥管理。
NACLs通过在子网边界充当无状态数据包过滤器,有效地在子网级别阻止访问。与保护单个实例的安全组不同,NACLs通过显式的允许/拒绝规则来帮助保护整个子网,适用于入站和出站流量。它们创建了一个关键的边界防御层,在流量到达您的实例之前进行过滤。当作为纵深防御方法的一部分部署时,NACLs提供应用层之间的子网级隔离,在网络边缘阻止恶意流量模式,并在其他安全层受损时保持保护,有助于通过多个独立的控制点实现全面的网络安全。
为了超越NACLs的增强网络保护,AWS Network Firewall通过全面的VPC保护实现企业级边界防御。它结合了入侵防御系统、域过滤、深度包检测和地理IP控制,同时利用Amazon收集的全球威胁情报自动保护您的云环境免受新出现的威胁。通过使用Network Firewall和AWS Transit Gateway集成,您可以在VPCs和可用区之间实施一致的安全策略,并进行集中管理。
为了在您的组织中自动化和扩展网络安全,AWS Firewall Manager提供了对Network Firewall规则和安全组策略的集中管理。随着组织的发展,Firewall Manager通过自动部署常见的安全组策略、清理未使用的组以及跨多个账户和组织单位修复过于宽松的规则,有助于维护安全性。
Amazon Inspector
为了大规模帮助识别意外的网络暴露,请考虑使用Amazon Inspector。Amazon Inspector持续扫描AWS工作负载是否存在软件漏洞和意外的网络暴露,帮助您在安全漏洞被利用之前识别并修复它们。
关键功能包括:
- 软件包漏洞:软件包漏洞发现会识别您的AWS环境中暴露于常见漏洞和暴露(CVE)的软件包。不良行为者可以利用这些未修补的漏洞来破坏数据的机密性、完整性或可用性,或访问其他系统。
- 代码漏洞:代码漏洞发现有助于识别可被利用的代码行。代码漏洞包括缺少加密、数据泄漏、注入缺陷和弱加密。Amazon Inspector通过Lambda函数扫描及其代码安全功能生成发现。它根据与Amazon Q合作开发的内部检测器识别策略违规和漏洞。
- 网络可达性:网络可达性发现显示您的端口是否可以通过互联网网关(包括位于应用程序负载均衡器或经典负载均衡器后面的实例)、VPC对等连接或通过虚拟网关的VPN从互联网访问。这些发现突出了可能过于宽松的网络配置,例如管理不当的安全组、NACLs或互联网网关,或者可能允许潜在恶意访问的配置。它可以帮助识别实例安全组上开放的SSH端口。
AWS WAF
补充您的网络安全控制和漏洞管理,AWS WAF通过过滤可能导致凭证暴露的恶意网络流量,提供了额外的防御层。
AWS WAF提供多个托管规则组来防止未经授权的访问和常见漏洞:
- AWS WAF欺诈控制账户创建欺诈防护(ACFP)规则组:ACFP使用请求令牌来收集有关客户端浏览器以及账户创建请求中的人机交互级别的信息。该规则组通过按IP地址和客户端会话以及按提供的账户信息(例如物理地址和电话号码)聚合请求来检测和管理批量账户创建尝试。此外,该规则组检测并阻止使用已被泄露的凭证创建新账户,这有助于保护您应用程序和新用户的安全状况。
- AWS WAF欺诈控制账户接管防护(ATP)规则组:为了帮助防止可能导致欺诈活动的账户接管,ATP让您能够查看和控制异常登录尝试以及使用被盗凭证的登录尝试。对于Amazon CloudFront分发,除了检查传入的登录请求外,ATP规则组还会检查您的应用程序对登录尝试的响应,以跟踪成功和失败率。ATP根据其被盗凭证数据库检查电子邮件和密码组合,该数据库会随着在暗网上发现新的泄露凭证而定期更新。
操作最佳实践
为了补充这些保护层并维持持续的安全状况,通过Secrets Manager实施自动凭证管理,以帮助促进整个环境中访问密钥的正确轮换和生命周期管理。这种自动化减少了人为错误,有助于及时更新凭证,并限制凭证泄露时的暴露窗口。
建议至少每90天轮换一次密钥。Secrets Manager通过在计划表上自动轮换密钥来提供帮助,有助于确保定期更新凭证而无需手动干预。它还集中存储密钥,降低了多个用户之间共享访问密钥的可能性。使用Secrets Manager,您可以使用Lambda集成配置自动密钥轮换。
还有一个现有的解决方案可以部署,以大规模实施自动访问密钥轮换。此模式通过使用AWS CloudFormation模板帮助您自动轮换IAM访问密钥,这些模板在GitHub IAM key rotation repository中提供。
如果您无法实施自动轮换,并且需要一种更快速的方法来识别需要轮换的访问密钥,AWS Trusted Advisor有一项IAM访问密钥轮换的安全检查,用于检查过去90天内未轮换的活动IAM访问密钥。如果您需要执行手动轮换,可以使用该安全检查来深入了解您环境中哪些访问密钥需要轮换。
检测异常的IAM活动
最后,虽然保护IAM基础设施的主动措施至关重要,但拥有强大的检测和警报机制同样重要。无论您多么努力,仍然存在不可预见的威胁或未经授权活动的可能性。这就是为什么一个全面的纵深防御策略应该包括快速识别和响应异常IAM相关事件的能力。Amazon GuardDuty结合机器学习和集成的威胁情报,帮助保护AWS账户、工作负载和数据免受威胁。
GuardDuty扩展威胁检测会自动关联不同数据源中的多个事件,以识别AWS环境中的潜在威胁。当扩展威胁检测检测到可疑的活动序列时,它会生成全面的攻击序列发现。系统将各个API活动分析为弱信号,这些信号可能独立存在时并不表示风险,但当以特定模式一起观察时,可以揭示潜在的安全问题。
在AWS账户中激活GuardDuty时,默认启用此功能,无需额外配置即可提供保护。
与凭证泄露相关的特定攻击序列发现是AttackSequence:IAM/CompromisedCredentials,它被标记为严重级别。此发现告知您GuardDuty检测到使用AWS凭证进行的一系列可疑操作,这些操作影响了您环境中的一个或多个资源。观察到同一凭证存在多个可疑和异常威胁行为,从而提高了凭证被滥用的置信度。
结论
本文概述的安全最佳实践提供了一种全面的、多层次的方法来减轻与长期凭证相关的风险。通过实施主动代码扫描、自动密钥轮换、网络级控制、数据边界限制和威胁检测,您可以显著减少攻击面,并更好地保护组织的AWS资源,直到完全迁移到临时凭证变得可行。
虽然本文提供的建议代表了一组充足的控制措施,可以使组织处于良好的安全状况,但根据每个环境的具体需求和风险状况,可能还需要采取额外的安全措施。关键是采用整体、分层的凭证管理和保护方法。通过这样做,您可以弥合差距,直到完全过渡到临时凭证成为可能。
实施这些安全措施可以帮助降低风险,但长期凭证本身带有安全风险。即使有严格的最佳实践和全面的安全控制,也不可能完全消除凭证泄露的可能性。您应该考虑评估组织的安全状况,并尽可能优先考虑通过IAM角色和联合使用临时凭证。如果您有任何疑问或需要帮助,AWS随时为您提供支持。