亚马逊 Inspector 解析:提升您的 AWS 负载安全的利器

2024/11/14 21:03:03

本文主要是介绍亚马逊 Inspector 解析:提升您的 AWS 负载安全的利器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

了解如何使用 Amazon Inspector 来自动化管理漏洞和确保合规性。

AWS 云为我们提供了无与伦比的灵活性和伸缩性,使我们能够在需要时轻松地创建资源。但云提供商通常会强调一条重要的规则:

  • 根据需要使用和管理你的资源,确保你的设置符合最佳实践,并定期审查和优化你的架构。同时,务必始终保持安全性是首要任务。

注意,具体“金规”内容可能因不同的云服务商而有所不同。

他们管“云安全”,我们则负责“云中的安全”。

所以,挽起袖子吧——是时候保护你在云环境里存放的东西了。

AWS环境需要一位警惕的守护者,默默监控资源,精准识别漏洞。这便是Amazon Inspector——AWS自带的安全专家,始终在岗,确保您的云安全无忧。

它会扫描你的工作负载情况,检查你的 EC2 实例、Lambda 函数或代码、容器镜像,并告诉你是否有任何不正常的地方。最棒的是,它不仅发现问题,还会教你如何解决。

在本博客系列中,我们将带您一步步了解 Amazon Inspector,指导您如何设置,并展示它如何帮助您防范潜在的网络威胁。

在第一部分中,我们将涵盖基础知识:什么是Amazon Inspector,如何启动和运行它,以及如何理解其发现。

咱们开始吧

设置:Amazon 检查器
  • 设置个人账户

如果你没有使用 AWS 组,或者不想聚合发现,或集中管理 Inspector 设置,你可以在成员账户或单独账户中启用 Inspector。

  1. 在 AWS 控制台中选择相应的区域。
  2. 在搜索框中输入 Amazon Inspector 并进入。
  3. 启用 Inspector。

对于这个演示,我将启动 EC2 扫描,Lambda 标准代码扫描和 ECR 扫描。

Inspector 提供 15 天试用期。如果您希望继续使用 Inspector,可以参考定价信息 https://aws.amazon.com/inspector/pricing/。

  • 代理管理员账号

如果你希望在组织内管理Inspector,并进行设置管理,在中央位置聚合发现,我建议你启用组织级别的委托管理员。

  1. 登录到 AWS Organizations 管理账户,然后前往 Amazon Inspector。

  2. 在“委托管理员账户ID”栏,输入您要设置为委托管理员的AWS账户的12位ID,然后点击“委托”。

    启用后,登录到受托管理账户。然后进入 Inspector --> 账户管理。

  3. 从委托管理员账户,你可以决定为哪个成员账户启用 Inspector,并选择哪种扫描类型。请看下面的截图。

这是来自 AWS Inspector 的启用图片

理解扫描类型

- Amazon EC2 扫描: 这种扫描方式会收集您的 EC2 实例的相关信息,并与安全公告进行对比,检查软件漏洞和网络风险。开启后,它会扫描您帐户中符合条件的实例,查找这些潜在问题。

- Amazon ECR 扫描: 在 Amazon ECR 中扫描容器镜像,将私有仓库的基本扫描升级为增强扫描。

- 标准扫描: 对过去90天内调用或更新的Lambda函数进行默认扫描,检查代码中的漏洞。

- Lambda 代码扫描: 专注于扫描 Lambda 函数中的自定义应用代码,查找过去 90 天内被调用或更新的代码中的漏洞。

在本博客的第一部分里,我将重点介绍EC2和“Lambda Scan”。

EC2 扫描任务

对于 EC2,扫描可以是基于代理的扫描(使用SSM代理)或无代理的扫描(使用Amazon EBS快照)。Amazon Inspector的EC2扫描会从您的实例中抓取元数据,并将其与安全通告进行比较,以检测软件包漏洞问题和网络可达性问题。网络可达性扫描每24小时运行一次,而软件包漏洞扫描则根据具体的扫描方式采取不同的时间表。

默认地,Inspector 会扫描由 SSM 管理的实例资源。

设置扫描。

要为EC2配置扫描类型,前往常规设置 -> EC2设置。
你需要选择混合模式以同时支持基于代理和无代理。

aws_inspector_ec2_scan_type
这是一张关于AWS Inspector对EC2扫描类型的图片。

我不会详细讨论基于代理(Agent-Based)和无代理(Agent-Less)的区别。记住,基于代理的是SSM代理版本。如果你已安装了SSM代理并且EC2角色绑定了AmazonSSMManagedInstanceCore策略,那么Inspector就能够扫描该实例。
无代理使用EBS快照。Amazon Inspector会为实例中的每个卷创建一个EBS快照。快照会被保存在你的账户中,并使用InspectorScan作为标签键,标签值为唯一的扫描ID。在本演示中,我同时使用了这两种方法。

现在我们有了Inspector,它可以用来扫描EC2实例。让我们创建EC2实例。如果你已经有了EC2实例的话,那就更好了,因为几分钟内Inspector就会开始扫描并且展示发现。

为了确保,基于代理的 Inspector 扫描会确保 EC2 实例上附加了策略 AmazonSSMManagedInstanceCore。

如果没有上传上述策略的话,检查员将执行无代理扫描,那么您已经在 Inspector 的 EC2 设置中选择了混合扫描选项。

我已经有了一个EC2实例,并且在Inspector仪表板上也能看得到。

AWS Inspector概览 这是一张AWS Inspector概览图。

你可以在资源覆盖 -> EC2 实例 中看到 EC2 实例。在这篇博客里,我创建了一个能进行代理扫描和无代理扫描的 EC2 实例。如下面的截图所示的,我有两个基于代理的扫描和一个无代理扫描的实例。

aws_inspector

了解和解决安全漏洞

要查看发现,前往发现 > 实例,应该能看到每个实例记录的发现。点击实例ID,就能看到详细信息。

亚马逊EC2 Inspector插图

随便选一个发现,你就能在右边的窗格里看到详细信息。

这里的好处在于,不仅找到问题,还会指导如何解决它。在我的情况下,它建议通过运行 sudo apt-get update 来升级软件包。我尝试并更新了。在您的情况下,可能需要采取不同的措施。

运行该命令后,列出了相关的软件包升级及其对应的发布说明。
aws_inspector_ec2

我选择了最近的软件更新包进行升级。完成之后不久,工具会更新结果报告。

AWS Inspector EC2

你可以看到,高风险发现的数量从12降到了4,而中等风险发现的数量则从61降到了44。

不包括 EC2 扫描这一部分

你可能在想,如果我不想用 Inspector 扫描 EC2 实例,能不能排除特定的实例。我们为此提供了相应的设置,你可以简单地给你的 EC2 实例添加一个标签,标签的键为 InspectorEc2Exclusion。我的情况是,我创建了一个 EC2 实例,并给它添加了一个标签,标签的键为 InspectorEc2Exclusion,值为 True

检查员不会扫描这个实例,因为它会检测到这个标签,所以因此,在概览实例中,这个实例因标签的原因也被排除在扫描范围之外。

如下面截图所示,我标记的实例没有被扫描到。

aws_inspector

Lambda 扫描器

现在是时候来试一试 AWS Lambda 了。如激活步骤所示,希望你已经激活了 Lambda 扫描。确保你已经启用了标准扫描和代码扫描。

这是演示的一部分,我编写了简单的Node.js代码,代码中直接写入了凭据,这些凭据是指直接写在代码里的账户名和密码。

    import requests  # 请确保 'requests' 库已添加到 Lambda 环境中

    def lambda_handler(event, context):
        # 使用硬编码的敏感信息(这是一种脆弱的做法)
        api_key = "aspoklew0233qvdsrw3rq"
        secret_token = "qw3sda2343"

        # 不安全的 HTTP 连接(建议使用 HTTPS)
        url = "http://example.com/insecure-endpoint"

        # 使用硬编码的敏感信息发送请求
        try:
            headers = {
                "Authorization": f"Bearer {secret_token}",
                "x-api-key": api_key
            }
            response = requests.get(url, headers=headers)

            if response.status_code == 200:
                print("请求成功,返回:", response.text)
            else:
                print(f"请求失败,状态码为 {response.status_code}")

            return {
                "statusCode": response.status_code,
                "body": response.text
            }
        except Exception as e:
            print("发生错误,详情如下:", e)
            return {
                "statusCode": 500,
                "body": "请求发生错误"
            }

全屏 退出全屏

一旦我们部署了上述lambda函数,Inspector会自动扫描它以查找任何潜在的漏洞。要查看发现的结果,可以在Inspector -> 发现结果 -> Lambda函数部分中查看。

AWS Inspector Lambda 图像

你应该能够看到有关这些弱点的详细情况。

它还指出了存在漏洞的代码片段的具体位置。

aws_inspector_lambda

它还建议了应对措施,例如将密钥存储在AWS Secrets Manager中并通过角色访问它。


我希望这篇博客能让你对使用Amazon Inspector有点感觉。Amazon Inspector为EC2实例和Lambda函数这两种资源提供了强大的安全评估,帮助你快速检测漏洞和错误配置。通过这些工具,你可以增强你的云安全态势,主动应对风险,并保持一个更健壮的AWS环境。

继续在云上构建并部署安全任务吧!!



这篇关于亚马逊 Inspector 解析:提升您的 AWS 负载安全的利器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程