PRT094 | 亚马逊云科技 re:Invent 2022 - 开发和部署安全的亚马逊云科技Lambda应用程序

演讲者介绍了在亚马逊云科技Lambda中开发安全应用所面临的挑战,如代码漏洞、开源依赖的安全隐患及过度授权问题。ContrastSecurity的SecureCodePlatform提供实时监控和内置安全,强调了最小权限原则和全面的环境洞察。

PRT094 | 亚马逊云科技 re:Invent 2022 - 开发和部署安全的亚马逊云科技Lambda应用程序

关键字: [Amazon Web Services re:Invent 2023, Contrast Security, Secure Amazon Web Services Lambda Applications, Vulnerabilities In Code And Open Source Dependencies, Least Privilege Access For Functions, Embedded Security Instrumentation, Full Visibility Into Amazon Web Services Environments]

本文字数: 1300, 阅读完需: 6 分钟

视频

导读

亚马逊云科技Lambda的商业和技术优势促使其被广泛快速采用。 随着亚马逊云科技Lambda应用程序的推广,已经出现了一些独特的安全挑战,例如处理允许的功能设置。 鉴于基础设施、网络和虚拟机的抽象化,无服务器应用程序与传统构建的应用程序不同。 这可能使传统的应用程序安全工具难以提供准确的结果。 在这个闪电式演讲中,了解保护无服务器应用程序的一些独特挑战,并了解如何解决这些特定于无服务器的潜在问题。 这个报告由亚马逊云科技合作伙伴Contrast Security提供。

演讲精华

以下是小编为您整理的本次演讲的精华,共1000字,阅读时间大约是5分钟。如果您想进一步了解演讲内容或者观看演讲全文,请观看演讲完整视频或者下面的演讲原文。

在2022年发明大会期间,作为Contrast Security公司的首席产品官,Steve Wilson欢迎了与会者并邀请他们参观Contrast的展台,以便观看演示并了解该公司提供的针对现代应用的安全解决方案。他指出,近年来,随着敏捷开发实践、持续集成/持续部署(CI/CD)管道和云原生架构的普及,应用程序安全的面貌已经发生了根本性的改变。为了说明传统的安全措施如何可能阻碍开发速度,Wilson讲述了一个他在过去的工作经历中的一则轶事。当时,他的团队因为一套新的扫描工具错误地报告了1000个所谓的漏洞,导致项目进度因此推迟了整个季度。处理这些不准确的结果所需的时间和精力极大地打乱了开发计划。

Wilson解释道,传统的扫描工具缺乏在现代环境中准确识别风险所需的上下文意识。它们是专为安全研究人员设计的,而不是为满足敏捷开发者的高效率需求而设计的。这表明需要采用一种“由内而外”的方法,将安全性直接嵌入到应用程序中。通过利用来自运行时环境的实时监测数据,团队可以以更相关的方式理解风险。仅依赖外部扫描会产生一种虚假的安全感。

Contrast Security公司已开发出名为Secure Code Platform(安全代码平台)的产品,以提供这种内部可见性,覆盖各种环境,包括传统系统、云原生应用、无服务器和Kubernetes编排的容器。该平台根据开放网络应用安全项目(OWASP)的指南准确地检测漏洞,以支持更快速的修复时间。它分析代码、数据和函数之间的互动,为安全团队和开发者提供有关风险的见解。

Wilson强调了对Log4Shell事件的关注,该事件影响了无数依赖流行Log4j库的应用程序。这强调了确保整个软件供应链安全而非仅仅保护定制代码的重要性。Contrast能够映射自定义代码和包含的开源组件之间的依赖性,以在新发掘的漏洞出现时发出警报。

威尔森注意到,近年来无服务器技术的使用率不断上升,这主要归功于其高效性、可扩展性和成本效益的优势。然而,采用无服务器应用也带来了一些新的挑战,需要我们重新审视现有的解决方案。为了应对这些挑战,Contrast平台对亚马逊云科技环境进行了深入分析,以便对整个无服务器功能、数据库、存储以及它们之间的交互权限进行风险评估。

具体来说,Contrast在Lambda函数内的自定义代码中检测到了潜在的安全漏洞。它识别出了由开源依赖项引发的风险,并分析了身份和访问管理权限,从而揭示了可能因为权限过度分配而导致意外访问的潜在问题。这有助于开发人员遵循最小特权原则,即只将功能限制在必要的资源上。

总的来说,Contrast通过简单的三步嵌入自动发现功能来简化无服务器安全。它提供了具有上下文分析的相关发现,并提供了超越传统SAST、DAST和IAM扫描工具的全面可视性——这些工具分别关注OWASP风险、软件组成分析和过度许可等问题。如今,世界上最大的数百个组织正在利用Contrast来保护他们的关键应用程序,无论它们是传统的还是云原生的。

这个详细的叙述摘要涵盖了讲座的主要观点,字数超过1000字,严格遵循提供的视频字幕中的信息。它的目标是准确地传达叙述格式的核心要点。如果您认为总结中的任何部分可以进行扩展或进一步丰富,请告诉我。

下面是一些演讲现场的精彩瞬间:

在当今社会,专注于研发更安全应用的人们不断努力着。

过去,网络安全工具主要是为研究人员而设计,而非适应快速变化的敏捷团队。

由于缺乏足够的背景信息,这些工具无法提供准确的结果,给人造成一种虚假的安全感。

如今,将安全工具集成到应用程序和云环境中的方法已成为更好的解决方案。

通过实时监控,我们可以更好地了解潜在的安全风险。

相较于传统的基于服务器的架构,无服务器应用程序在效率与规模上实现了重大突破。

亚马逊云科技提供了一些工具来帮助开发者分析自定义代码、数据流以及它们与环境之间的关系,从而发现无服务器应用程序中可能存在的漏洞。

总结

史蒂夫·威尔逊探讨了在亚马逊云科技中开发安全Lambda无服务器应用的技巧。他强调,为了不让不准确的成果拖累团队的进度,需要运用与安全敏捷开发相协调的安全工具。他建议采用自内而外的做法,将安全工具嵌入到应用中,以提供足够的环境背景来识别运行时的潜在风险。例如,Contrast Secure Code Platform可以对亚马逊云科技环境进行实时监控,分析自定义代码、开源依赖项和过度授权的函数。它可以找出代码中的漏洞并将其关联到关键数据资源,从而优先解决;分析函数的权限以推荐最小特权策略;并在依赖项中发现新的CVE时发出警报。只需三次点击就能实现对所有更新进行追踪的扫描功能。这种方法为开发者和安全专家提供了全面的可见性,涵盖自定义代码风险、开源组件和过度授权问题。通过这种方式,Contrast能够全面保护现代云本机和无服务器环境。

演讲原文

想了解更多精彩完整内容吗?立即访问re:Invent 官网中文网站!

2023亚马逊云科技re:Invent全球大会 - 官方网站

点击此处,一键获取亚马逊云科技全球最新产品/服务资讯!

点击此处,一键获取亚马逊云科技中国区最新产品/服务资讯!

即刻注册亚马逊云科技账户,开启云端之旅!

【免费】亚马逊云科技“100 余种核心云服务产品免费试用”

【免费】亚马逊云科技中国区“40 余种核心云服务产品免费试用”

亚马逊云科技是谁?

亚马逊云科技(Amazon Web Services)是全球云计算的开创者和引领者,自 2006 年以来一直以不断创新、技术领先、服务丰富、应用广泛而享誉业界。亚马逊云科技可以支持几乎云上任意工作负载。亚马逊云科技目前提供超过 200 项全功能的服务,涵盖计算、存储、网络、数据库、数据分析、机器人、机器学习与人工智能、物联网、移动、安全、混合云、虚拟现实与增强现实、媒体,以及应用开发、部署与管理等方面;基础设施遍及 31 个地理区域的 99 个可用区,并计划新建 4 个区域和 12 个可用区。全球数百万客户,从初创公司、中小企业,到大型企业和政府机构都信赖亚马逊云科技,通过亚马逊云科技的服务强化其基础设施,提高敏捷性,降低成本,加快创新,提升竞争力,实现业务成长和成功。

2025-07-30 20:41:35.917 2833-2833 ISA_NAVI_ISANaviService com.isa.navi I [Start_time_analysis]onCreate in. 2025-07-30 20:41:36.073 2833-2833 ISA_NAVI_ISANaviService com.isa.navi I [Start_time_analysis]onCreate out. 2025-07-30 20:41:36.074 2833-2833 ISANaviService com.isa.navi I getAppVersionV0.3.0_20250801 2025-07-30 20:41:36.076 2833-2833 ISA_NAVI_ISANaviService com.isa.navi I [Start_time_analysis]onStartCommand in. 2025-07-30 20:41:36.076 2833-2833 ISA_NAVI_ISANaviService com.isa.navi I [Start_time_analysis]onStartCommand out. 2025-07-30 20:41:36.312 2833-2833 ISA_NAVI_ISANaviService com.isa.navi I onReceive: Intent { act=android.intent.action.USER_UNLOCKED flg=0x50000010 (has extras) } 2025-07-30 20:41:36.312 2833-2833 ISA_NAVI_ISANaviService com.isa.navi I onReceive: android.intent.action.USER_UNLOCKED 2025-07-30 20:41:36.341 725-725 /vendor/bi....1-service ven...re.servicetracker@1.1-service I bindService is called for service : com.dftc.car/.CarService and for client com.isa.navi 2025-07-30 20:41:36.342 725-725 /vendor/bi....1-service ven...re.servicetracker@1.1-service I total connections for client : com.isa.naviare :1 2025-07-30 20:41:36.429 2833-2833 ISA_NAVI_C...ackManager com.isa.navi I CallBackManager construction is called. 2025-07-30 20:41:36.435 2833-2833 android_os_HwBinder com.isa.navi I HwBinder: Starting thread pool for getting: vendor.microtrust.hardware.dfcert@2.0::IDFCertManagerDevice/default 2025-07-30 20:41:36.706 2833-2865 ISA_NAVI_I...iProxyStub com.isa.navi I getService serviceName: map_repository 2025-07-30 20:41:36.707 2833-2865 ISA_NAVI_I...iProxyStub com.isa.navi I getService mUpdateRepositoryStub: h0.a@442c94c 2025-07-30 20:41:36.767 2833-3253 ISA_NAVI_UPDATE com.isa.navi I handleDownloadStatusChange : UpdateInfoBean{mapStatus=4, mUpdateNotification=UpdateNotification{updateResult=false, UpdateException='[]', UpdateSuccessfulList=[], UpdateFailedList=[], inform=}, mUpdateMessage=UpdateMessage{country='', version='', totalSize=0.0, progress=0, isCurrentCountry=false, downloadSize=0.0, updateStatus=0}} 2025-07-30 20:41:36.783 2833-3253 ISA_NAVI_UPDATE com.isa.navi I zwx:不存在地图 2025-07-30 20:41:36.783 2833-3253 ISA_NAVI_UPDATE com.isa.navi I Detected no updates for a long time 2025-07-30 20:41:37.022 725-2234 /vendor/bi....1-service ven...re.servicetracker@1.1-service I bindService is called for service : com.isa.navi/.service.ISANaviService and for client com.dftc.carplay 2025-07-30 20:41:37.023 725-2234 /vendor/bi....1-service ven...re.servicetracker@1.1-service I total connections for service : com.isa.navi/.service.ISANaviServiceare :2 2025-07-30 20:41:37.060 2833-2833 ISA_NAVI_UPDATE com.isa.navi I DF_USBOTA_CERT: i= 0 2025-07-30 20:41:37.061 2833-2833 ISA_NAVI_UPDATE com.isa.navi I DF_USBOTA_CERT: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0o1Y+7Zbv+NNUCDx+LMBmqsyPGsojQ6PtX50nHEHJw64lMsjj9WYS0VrMunp6EMQ7WClNd9Qpj+GiX4yikgefHhwxiDkRrs3NmipWI5XOjTjjHPJv8u7k1Y7xTeukJmy86CPWGMJjHUbm6Brh+/cUjuuaU+UbVgkjsHKCsCnx/yKMpqM7zV+dUQfefQlL30ORZ01/DNXTPi7XjuD5aTORZLhylbpSUcUcC6s4PNmQA+KNyvpOoSyfUojooI/pVScXxGNi63mg3+GDM+K/VVaZxMmmXcOTAyYtTqoD9xW2I+C+6HCRxhnegIrmIdK9Tl9q3W11VpKJNSkZlbenpsRQIDAQAB 2025-07-30 20:41:37.282 2833-2833 ISA_NAVI_UPDATE com.isa.navi I DF_USBOTA_KEY: i= 0 2025-07-30 20:41:37.282 2833-2833 ISA_NAVI_UPDATE com.isa.navi I DF_USBOTA_KEY: Y23.24MAS!Pro!.C 2025-07-30 20:41:37.282 2833-2833 ISA_NAVI com.isa.navi I Java_com_isa_navi_jni_hmi_HmiProxyJNI_InitializeCpp 2025-07-30 20:41:37.285 2833-2833 ISA_NAVI com.isa.navi I DataManager start 2025-07-30 20:41:37.551 2833-2833 ISA_NAVI_ISANaviService com.isa.navi I --HmiJNIImpl.initialize -- 2025-07-30 20:41:37.559 2833-2833 ISA_NAVI_CarManager com.isa.navi I onServiceDisconnected: CarService connected, start getting carPropertyManager 2025-07-30 20:41:37.563 2833-3588 ISA_NAVI com.isa.navi I 数据分区正常 2025-07-30 20:41:37.591 2833-3588 ISA_NAVI com.isa.navi I 管理表读取成功 2025-07-30 20:41:37.618 2833-3601 ISA_NAVI com.isa.navi I 8088listening 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 地图数据齐全 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 当前车机地图数据: 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:AUT 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:BEL 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:BGR 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:CHE 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:CYP 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:CZE 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:DEU 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:DNK 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:ESP 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:EST 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:FIN 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:FRA 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:GRC 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:HRV 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:HUN 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:IRL 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:ISR 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:ITA 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:LTU 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:LUX 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:LVA 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:MLT 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:NLD 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:NOR 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:POL 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:PRT 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:ROU 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:SVK 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:SVN 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:SWE 版本:202501 2025-07-30 20:41:37.646 2833-3588 ISA_NAVI com.isa.navi I 国家:TUR 版本:202501 2025-07-30 20:41:37.772 2833-2833 ISA_NAVI_P...pplication com.isa.navi I onConfigurationChanged is called. 2025-07-30 20:41:37.802 2833-2865 ISA_NAVI_I...iProxyStub com.isa.navi I getService serviceName: car_play_repository 2025-07-30 20:41:37.802 2833-2865 ISA_NAVI_I...iProxyStub com.isa.navi I getService mUpdateRepositoryStub: g0.a@6fdee11 2025-07-30 20:41:46.531 2833-2833 ISA_NAVI_P...pplication com.isa.navi I onTrimMemory is called. 2025-07-30 20:41:48.428 2833-2833 ISA_NAVI_P...pplication com.isa.navi I onTrimMemory is called. 2025-07-30 20:41:55.861 2833-3925 ISA_NAVI_UPDATE com.isa.navi I MapInfo:202501 2025-08-22 16:03:36.217 2833-2833 ISA_NAVI_P...pplication com.isa.navi I onConfigurationChanged is called.
08-23
<think>嗯,用户提供的日志显示系统启动时的一些关键事件,包括服务创建、绑定、初始化以及地图数据加载的记录。用户可能想知道这些日志中的关键点,或者是否存在异常情况。首先,我需要分析日志的时间线,看看各个组件启动的顺序耗时是否合理。 从日志来看,应用在20:41:35.917开始创建,到36.073完成,耗时约160毫秒,这看起来正常。接着启动服务,同样很快完成。之后在36.341绑定到CarService,可能是在与其他系统服务交互。接下来的步骤中,应用处理了用户解锁广播,启动了HwBinder线程池,获取了map_repository服务,并开始初始化C++部分。 日志中显示DataManager启动,读取数据分区管理表成功,地图数据齐全,列出了多个国家及其版本为202501。这说明地图数据存在且版本一致。但用户可能关心的是,为什么在之前的代码中存在竞争条件的问题,而日志中没有明显的错误信息。 用户可能的问题包括:系统启动是否正常?地图数据是否正确加载?是否存在潜在的性能瓶颈或初始化问题?另外,用户可能想知道如何根据日志判断系统是否健康,或者是否有需要优化的地方。 需要指出日志中的关键点,比如服务绑定成功、地图数据加载成功,以及初始化过程中的关键步骤完成情况。同时,虽然当前日志没有错误,但可以建议用户关注启动时间、服务绑定状态以及数据加载的后续操作是否及时。此外,建议用户如何进一步分析潜在问题,比如检查长时间运行的服务是否阻塞主线程,或者监控后续的更新状态变化。</think>根据提供的日志,以下是关键分析及优化建议: --- ### **1. 系统启动关键时间线** | 时间戳 | 关键事件 | 耗时/状态 | |----------------|--------------------------------------------------------------------------|-------------------| | 20:41:35.917 | `ISANaviService` 创建开始 | | | 20:41:36.073 | `ISANaviService` 创建完成(耗时约156ms) | ✅ 正常 | | 20:41:36.341 | 绑定到 `CarService`(车载服务) | ✅ 成功 | | 20:41:36.706 | 获取 `map_repository` 服务 | ✅ 成功 | | 20:41:37.285 | C++ 初始化完成(`DataManager` 启动) | ✅ 成功 | | 20:41:37.559 | `CarService` 连接成功,获取 `carPropertyManager` | ✅ 成功 | | 20:41:37.646 | 地图数据加载完成(列出 28 个国家,版本均为 `202501`) | ✅ 数据完整 | --- ### **2. 地图数据状态** - **数据完整性**:日志显示地图数据齐全(`地图数据齐全`),且所有国家版本一致(`202501`)。 - **版本一致性**:无版本冲突警告(如 `Local data version inconsistency`),说明数据加载逻辑正常。 - **潜在风险**: - 若后续版本更新时未同步清空旧数据,可能导致 `m_data_list` 中残留旧版本数据。 --- ### **3. 初始化流程分析** #### **正常流程** ```plaintext ISANaviService.onCreate() → bind CarService → bind map_repository → C++ DataManager 初始化 → 读取数据分区 → 加载地图数据(28 国家) ``` #### **关键优化点** - **启动耗时**:从 `onCreate` 到地图数据加载完成共约 **1.7 秒**(35.917 → 37.646),可接受但可进一步优化。 - **异步加载**:地图数据加载(`数据分区正常` → `地图数据齐全`)耗时约 **93ms**,未阻塞主线程,设计合理。 --- ### **4. 日志中未暴露的问题** - **竞争条件未触发**:当前日志未记录 `m_data_list` 竞争问题,可能因初始化速度较快或未覆盖极端场景。 - **版本检查缺失**:未看到 `dataVersionCheck()` 调用日志,需确认 Java 层是否正常触发版本校验。 --- ### **5. 建议的改进措施** #### **(1) 增加初始化状态监控** - **C++ 层**:添加 `is_initialized` 标志,并通过 JNI 暴露给 Java 层: ```cpp std::atomic<bool> Update::is_initialized(false); JNIEXPORT jboolean JNICALL Java_com_isa_navi_jni_hmi_HmiProxyJNI_isDataReady(JNIEnv*, jobject) { return Update::getinstance()->is_initialized ? JNI_TRUE : JNI_FALSE; } ``` #### **(2) 优化地图数据加载** - **预加载机制**:在 `onStartCommand` 中提前触发数据加载,减少后续延迟: ```java public int onStartCommand(Intent intent, int flags, int startId) { new Thread(() -> { while (!mHmiProxyJNI.isDataReady()) { // 等待初始化完成 } // 预加载地图资源 }).start(); return START_STICKY; } ``` #### **(3) 异常兜底逻辑** - **默认版本处理**:若 `m_data_list` 为空,返回默认版本号(如 `"DEFAULT_202501"`): ```cpp std::string Update::getMapInfo() { if (m_data_list.empty()) { WriteAndroidLog(4, "Map data empty, return default version"); return "DEFAULT_202501"; } // ... 原有逻辑 ... } ``` --- ### **6. 验证方法** 1. **模拟慢速初始化**: - 在 `UpdateInitialization()` 中插入 `sleep(5)`,测试 `getMapInfo()` 的超时重试逻辑。 2. **强制数据不一致**: - 手动修改部分国家版本号,验证版本冲突日志是否触发。 3. **压力测试**: - 多线程并发调用 `getMapInfo()` `UpdateInitialization()`,检查线程安全--- ### **7. 总结** 当前日志显示系统启动正常,地图数据加载完整且版本一致。但需通过 **异步通知机制** **默认值兜底** 进一步规避潜在竞争风险。建议结合日志监控单元测试确保长期稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值