揭秘IAM权限:API网关访问日志
在云计算时代,企业利用亚马逊网络服务(AWS)等平台构建基础设施和服务,确保强大的安全措施至关重要。其中,身份和访问管理(IAM)是核心组成部分,它管理着组织云环境中谁可以访问哪些资源。IAM权限决定了用户、应用程序和服务被授予的访问级别,因此在维护数据机密性、完整性和可用性方面发挥着关键作用。
然而,尽管IAM权限对于控制访问至关重要,但同样必须认识到云中身份和访问管理相关的潜在网络安全风险。配置错误的IAM策略(如我们的《Cosmos:保护边界报告》中所述)可能会无意中暴露敏感数据,导致数据泄露、法规不合规以及组织声誉受损。
因此,理解IAM权限的复杂性,尤其是在AWS等服务中,对于防范此类威胁变得至关重要。具体来说,亚马逊API网关默认不加密访问日志数据;相反,这些日志可以通过数据保护策略进行配置以屏蔽敏感信息。然而,拥有适当IAM权限的用户仍然可以查看这些日志。
API网关访问日志
访问日志允许记录详细事件,包括完整的请求和响应日志。亚马逊表示这有助于故障排除,但敏感数据也可能被记录。这是合理的,因为大多数信息可能在请求头/体中传输。
注意:我们建议不要为生产API使用完整请求和响应日志。
亚马逊还表示此功能可用于帮助排查API请求;但是,不应在生产环境中使用。通常,在设置访问日志时会配置以下角色 - AmazonAPIGatewayPushToCloudWatchLogs
。
观察
您可以在CloudWatch中查看访问日志,并在控制台中了解日志详细信息。如果定义了数据保护策略(仔细查看),敏感信息将被屏蔽,并且这些策略可以在日志组级别定义。例如,我们将在单个日志组上创建数据保护策略,如下所示:
图1 – 配置数据保护策略
在上面的示例中,我们设置了AwsSecretKey
数据标识符。有预定义的数据标识符将基于关键字屏蔽字段类别。此外,您可以使用正则表达式创建自定义映射。但什么是数据屏蔽?有一个特定的IAM权限允许您取消屏蔽日志。这很有趣,因为它默认不加密数据。如果我们入侵了AWS环境,我们可能会利用此功能发现PII数据或获取凭据,从而导致横向移动或未经授权的访问。
继续,在设置和配置数据标识符后,我们可以使用curl发出包含密钥的示例请求,如下所示:
|
|
图2 – 包含敏感数据的Curl请求
发送请求后,我们可以查看日志详细信息以查看数据是否被屏蔽。我们可以在AWS控制台或使用AWS CLI执行此操作。在这种情况下,我们将首先查看控制台以查看编辑后的数据:
图3 – 在CloudWatch中查看编辑后的日志
接下来,我们将临时取消屏蔽数据:
图4 – 通过AWS控制台取消屏蔽日志
现在,我们可以查看敏感数据:
图5 – 包含密钥的未屏蔽日志
但是,通过AWS CLI查询这些日志要容易得多。作为复习,我们可以使用以下命令显示当前日志组:
|
|
图6 – 描述日志组
接下来,我们将针对API-Gateway-Execution-Logs_7x18l9o7og/ll
日志组运行快速查询,使用unmask参数搜索密钥关键字。
|
|
图7 – 使用unmask参数的日志查询
最后,我们显示查询结果,其中显示屏蔽和未屏蔽的数据:
|
|
图8 – 包含屏蔽和未屏蔽数据的查询结果
如前所述,如果账户被入侵,攻击者可能会根据定义的日志配置窃取PII甚至获得对其他服务的访问权限。日志记录可能是一个被忽视的领域,但在某些情况下,在AWS环境中可能证明是有成果的。如果定义了数据保护策略,您应该仔细查看正在使用的数据标识符。如果您拥有unmask权限,您可以查看日志并取消屏蔽它们!
总之,IAM权限是云环境中网络安全的基石,尤其是在亚马逊API网关等服务中。如上所述,缺乏适当的访问控制可能使组织容易受到各种威胁并暴露敏感数据。因此,组织必须优先实施IAM最佳实践,例如使用数据保护策略配置访问日志,以有效减轻这些风险。