

# 实施可观测性以实现 Lambda 安全性和合规性
<a name="governance-observability"></a>

AWS Config 是查找和修复不合规的 AWS 无服务器资源的有用工具。您对无服务器资源所做的每一次更改都会记录在 AWS Config 中。此外，AWS Config 还允许您将配置快照数据存储在 S3 上。您可以使用 Amazon Athena 和 Amazon Quick 制作控制面板并查看 AWS Config 数据。在 [使用 AWS Config 检测不合规的 Lambda 部署和配置](governance-config-detection.md) 中，我们讨论了如何可视化特定配置（如 Lambda 层）。本主题将扩展这些概念。

## Lambda 配置的可见性
<a name="governance-observability-configuration"></a>

您可以使用查询来拉取重要的配置，例如 AWS 账户 ID、区域、AWS X-Ray 跟踪配置、VPC 配置、内存大小、运行时系统和标签。您可以通过下面的查询示例来从 Athena 中拉取这些信息：

```
WITH unnested AS (
    SELECT
      item.awsaccountid AS account_id,
      item.awsregion AS region,
      item.configuration AS lambda_configuration,
      item.resourceid AS resourceid,
      item.resourcename AS resourcename,
      item.configuration AS configuration,
      json_parse(item.configuration) AS lambda_json
    FROM
      default.aws_config_configuration_snapshot,
      UNNEST(configurationitems) as t(item)
    WHERE
      "dt" = 'latest'
      AND item.resourcetype = 'AWS::Lambda::Function'
  )
  
  SELECT DISTINCT
    account_id,
    tags,
    region as Region,
    resourcename as FunctionName,
    json_extract_scalar(lambda_json, '$.memorySize') AS memory_size,
    json_extract_scalar(lambda_json, '$.timeout') AS timeout,
    json_extract_scalar(lambda_json, '$.runtime') AS version
    json_extract_scalar(lambda_json, '$.vpcConfig.SubnetIds') AS vpcConfig
    json_extract_scalar(lambda_json, '$.tracingConfig.mode') AS tracingConfig
  FROM
    unnested
```

您可以使用查询来构建 Quick 控制面板并可视化数据。要聚合 AWS 资源配置数据，在 Athena 中创建表，以及根据来自 Athena 的数据构建 Quick 控制面板，请参阅 AWS Cloud Operations and Management Blog 上的 [Visualizing AWS Config data using Athena and Amazon Quick](https://aws.amazon.com/blogs/mt/visualizing-aws-config-data-using-amazon-athena-and-amazon-quicksight/)。值得注意的是，此查询还会检索函数的标签信息。这样就可以更深入地了解您的工作负载和环境，尤其是在您使用自定义标签的情况下。

 ![\[Query results in Quick dashboard\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/governance-observability-1.png) 

有关您可以执行的操作的更多信息，请参阅本主题后面的 [处理可观测性调查发现](#governance-observability-addressing) 部分。

## Lambda 合规性的可见性
<a name="governance-observability-compliance"></a>

通过 AWS Config 生成的数据，您可以创建组织级别的控制面板来监控合规性。这样就可以对以下内容实现一致的跟踪和监控：
+ 按合规性分数列出的合规包
+ 按不合规资源列出的规则
+ 合规性状态

 ![\[AWS Config console dashboard\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/governance-observability-2.png) 

检查每条规则，找出该规则的不合规资源。例如，如果您的组织要求所有 Lambda 函数都必须与 VPC 关联，并且您已经部署了用于识别合规性的 AWS Config 规则，则可以在上面的列表中选择 `lambda-inside-vpc` 规则。

 ![\[View non-compliant resources in AWS Config console\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/governance-observability-3.png) 

有关您可以执行的操作的更多信息，请下面的 [处理可观测性调查发现](#governance-observability-addressing) 部分。

## 使用 Security Hub CSPM 查看 Lambda 函数边界的可见性
<a name="governance-observability-boundaries"></a>

 ![\[Diagram of example AWS Security Hub CSPM inputs for Lambda, such as resource policy, runtime, and code\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/governance-observability-4.png) 

为确保包括 Lambda 在内的 AWS 服务的安全使用，AWS 引入了基础安全最佳实践 v1.0.0。这套最佳实践为保护 AWS 环境中的资源和数据提供了明确的指导原则，强调了保持强大安全态势的重要性。AWS Security Hub CSPM 提供了一个统一的安全性和合规性中心，从而对此进行了补充。它汇总、组织并优先处理来自多个 AWS 服务的安全调查发现，如 Amazon Inspector、AWS Identity and Access Management Access Analyzer 和 Amazon GuardDuty。

如果您在 AWS 组织中启用了 Security Hub CSPM、Amazon Inspector、IAM Access Analyzer 和 GuardDuty，则 Security Hub CSPM 会自动汇总来自这些服务的调查发现。例如，让我们来看一下 Amazon Inspector。通过 Security Hub CSPM，您可以有效地识别 Lambda 函数中的代码和程序包漏洞。在 Security Hub CSPM 控制台中，导航到底部标有**来自 AWS 集成的最新调查发现**的部分。在这里，您可以查看和分析来自各种集成的 AWS 服务的调查发现。

 ![\[Security Hub CSPM console "Latest findings from AWS integrations" section\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/governance-observability-5.png) 

要查看详细信息，请选择第二列中的**查看调查发现**链接。这将显示按产品（例如 Amazon Inspector）筛选的调查发现列表。要将搜索范围限制为 Lambda 函数，请将 `ResourceType` 设置为 `AwsLambdaFunction`。这将显示 Amazon Inspector 与 Lambda 函数相关的调查发现。

 ![\[Filter for Amazon Inspector results related to Lambda functions\]](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/images/governance-observability-6.png) 

对于 GuardDuty，您可以识别可疑的网络流量模式。此类异常情况可能表明您的 Lambda 函数中存在潜在的恶意代码。

通过 IAM Access Analyzer，您可以检查策略，尤其是那些带有向外部实体授予函数访问权限的条件语句的策略。此外，IAM Access Analyzer 还会评估在使用 Lambda API 中 [AddPermission](https://docs.aws.amazon.com/lambda/latest/api/API_AddPermission.html) 操作时与 `EventSourceToken` 一起设置的权限。

## 处理可观测性调查发现
<a name="governance-observability-addressing"></a>

鉴于 Lambda 函数的可配置范围很广，而且要求各不相同，因此标准化的自动化补救解决方案可能无法适用于所有情况。此外，在不同的环境中，变更的实施方式也有所不同。如果您遇到任何看似不合规的配置，请考虑以下指导原则：

1. **标记策略**

   我们建议实施全面的标记策略。每个 Lambda 函数都应使用关键信息进行标记，例如以下信息：
   + **所有者：**负责该函数的人员或团队。
   + **环境：**生产、暂存、开发或沙盒。
   + **应用程序：**此函数所属的更广泛上下文（如果适用）。

1. **所有者外联活动**

   与其自动进行重大更改（例如 VPC 配置调整），不如主动联系不合规函数（通过所有者标签标识）的所有者，方便其拥有足够时间执行以下任一操作：
   + 调整 Lambda 函数上的不合规配置。
   + 提供解释并申请例外情况，或完善合规标准。

1. **维护配置管理数据库（CMDB）**

   虽然标签可以提供即时上下文，但通过维护集中式 CMDB，可以提供更深入的见解。CMDB 可以保存有关每个 Lambda 函数、其依赖关系和其他关键元数据的更精细的信息。CMDB 是审计、合规性检查和识别函数所有者的宝贵资源。

随着无服务器基础设施状况的不断演变，采取积极主动的监控态度至关重要。通过 AWS Config、Security Hub CSPM 和 Amazon Inspector 等工具，可以快速识别出潜在的异常或不合规配置。但是，仅靠工具并不能确保完全合规或使用最佳配置。将这些工具与有据可查的流程和最佳实践相结合至关重要。
+ **反馈环路：**确保采取补救措施后会有反馈环路。这意味着要定期重访不合规资源，以确认其是否已更新，或是否在存在相同问题的情况下继续运行。
+ **文档：**务必记录观察结果、采取的行动以及批准的任何例外情况。适当的文档不仅有助于审计，而且还有助于改进流程，从而在将来提高合规性和安全性。
+ **培训和意识：**确保所有利益相关者（特别是 Lambda 函数所有者），定期接受培训，并了解最佳实践、组织策略和合规要求。定期举办研讨会、网络研讨会或培训课程，对确保每个人就安全性和合规性保持一致意见大有裨益。

总而言之，尽管工具和技术为检测和标记潜在问题提供了强大功能，但人的因素（理解、沟通、培训和文档）仍然至关重要。它们共同构成了强大的组合，可确保您的 Lambda 函数和更广泛的基础设施保持合规性、安全性并根据您的业务需求进行优化。