跨账户跨区域日志集中化 - Amazon CloudWatch 日志
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

跨账户跨区域日志集中化

Amazon Lo CloudWatch gs 数据集中化使用跨账户和跨区域集中化规则,将来自多个成员账户的日志数据收集到一个数据存储库中。 Amazon Organizations 您可以定义自动将日志数据从多个账户和 Amazon Web Services 区域 复制到组织内集中账户的规则。此功能简化了日志整合,从而改善了整个 Amazon 基础架构的集中监控、分析和合规性。

CloudWatch 日志数据集中化提供了配置灵活性,可满足操作和安全要求,例如能够在目标账户内设置规则期间配置备份区域,以确保增强弹性。此外,您可以完全控制从源账户复制的日志组的加密行为,以处理最初使用客户托管的 KMS 密钥加密的数据。

注意

CloudWatch 日志集中化功能仅处理在您创建集中化规则后进入源账户的新日志数据。历史日志数据(创建规则之前存在的日志)不会进行集中。

数据集中化概念

在开始使用 CloudWatch 日志数据集中化之前,请先熟悉以下概念:

集中化规则

一种用于定义如何将源账户和区域中的日志数据复制到目标账户和区域的配置。规则指定源条件和目标设置。

源账户

日志数据来源的 Amazon 账户。根据您定义的集中化规则,源账户中的日志事件将复制到目标账户。

目标账户

存储复制的日志数据的目标 Amazon 帐户。该账户用作日志分析和监控的集中位置。

备份区域

目标账户中的可选辅助区域,可以在其中复制日志数据,以提高恢复能力并实现灾难恢复。

CloudWatch 日志中的加密

日志组数据始终在 CloudWatch 日志中加密。默认情况下, CloudWatch Logs 使用具有 256 位高级加密标准 Galois/Counter 模式 (AES-GCM) 的服务器端加密来加密静态日志数据。或者,您可以使用 Amazon 密钥管理服务进行此加密。有关更多信息,请参阅CloudWatch 日志加密文档

  • 集中化期间的加密工作原理: CloudWatch 日志集中化在提取时主动将日志数据从源账户复制到目标账户。在此过程中,您的数据在传输过程中会使用 Amazon 自有的服务密钥保持加密状态。源日志组和目标日志组中的静态数据均使用您选择的加密方法(客户管理或 Amazon 拥有的 KMS 密钥)进行加密。如果您在目标日志组中使用客户托管的 KMS 密钥,请将标签添加LogsManaged = true到 kms 密钥中,以便集中化服务访问该密钥。

  • 需要 KMS 权限时

    • 如果您在源账户中使用客户托管的 KMS 密钥,则在以下示例场景中, CloudWatch 日志需要 KMS 权限

      • 吞吐量管理:当达到集中化吞吐量限制时,日志数据将使用客户托管的 KMS 密钥进行临时加密存储,直到带宽可用为止。

      • 数据保护和编辑:当源日志组启用了数据保护策略时, CloudWatch 日志需要解密权限才能访问原始日志数据以对其进行集中管理。

重要

集中化规则由 Organizati Amazon ons 管理账户或授权管理员管理。要将客户托管的 KMS 加密日志组排除在集中管理范围之外,请将规则设置配置为 “不要集中使用 KMS 密钥加密的 Amazon 日志组”。

设置日志集中化

要设置 CloudWatch 日志集中化,您需要配置集中化规则,以定义日志数据如何从源账户中的日志组流向目标账户中的日志组。

启用集中化规则并将日志事件复制到目标账户后,您可以针对集中式日志组创建指标、订阅和账户筛选条件,并增强筛选功能。这些筛选条件可以针对来自特定源账户和区域的日志事件,并且可以将源账户和区域信息作为指标维度发出。有关更多信息,请参阅 使用筛选条件从日志事件创建指标

先决条件

  • Amazon Organizations 必须进行设置,并且源帐户和目标帐户都必须属于该组织。

  • 必须为管理账户和目标账户启用可信访问权限 CloudWatch,以便提供对日志数据的访问权限。

    注意

    建议通过控制台启用可信访问,控制台会自动创建所需的服务关联角色 (SLR)。如果通过其他方法启用了可信访问,则需要单独创建服务相关角色。

自定义目标日志组名称

创建集中化规则时,您可以使用属性自定义目标日志组名称的结构方式。创建日志组时,这些属性会自动替换为实际值,从而允许您在目标账户中按层次组织日志。默认情况下,仅使用该${source.logGroup}属性,该属性会合并目标账户中所有同名的日志组。如果无法解析某个变量,则它会从层次结构中的父变量继承该值。

可用属性

您可以在目标日志组名称模式中使用以下属性:

目标日志组名称属性
属性 说明
${source.accountId} 日志来源的 Amazon 账户 ID。
${source.region} 日志 Amazon Web Services 区域 的来源。
${source.logGroup} 源账户的原始日志组名称。
${source.org.id} 您的来源账户的 Amazon Organizations ID。
${source.org.ouId} 来源账户的组织单位 ID
${source.org.rootId} 组织根 ID
${source.org.path} 从账户到 root 的完整组织路径

示例

保留原始日志组结构

模式:/centralized/${source.accountId}${source.logGroup}

结果:/centralized/123456789012/aws/lambda/my-function

按账户和地区整理

模式:/centralized/${source.accountId}/${source.region}

结果:/centralized/123456789012/us-east-1

按组织结构整理

模式:/logs/${source.org.id}/${source.org.ouId}/${source.accountId}

结果:/logs/o-abc123/ou-xyz-12345678/123456789012

简单的扁平结构

模式:/centralized-logs

结果:/centralized-logs

最佳实践

  • 包括源账户 ID,以便轻松识别账户日志来自哪个。

  • 如果您要从多个区域集中管理,请包括来源区域。

  • 将目标日志组名称结构化为低于 512 个字符。 CloudWatch 日志强制规定日志组名称的最大长度为 512 个字符。

创建集中化规则

请按照以下过程创建一个将日志数据从源账户复制到目标账户的集中化规则。

创建集中化规则
  1. 使用组织的管理或委派管理员帐户导航到 CloudWatch 控制台。

  2. 选择设置

  3. 导航到组织选项卡。

  4. 选择配置规则

  5. 通过设置下面的字段来指定源详细信息,然后选择下一步

    1. 集中化规则名称:为集中化规则输入一个唯一名称。

    2. 源账户:定义源选择标准,以选取要从中集中遥测数据的账户。选择标准可包括:

      • 组织内的成员账户列表

      • 组织内的组织单元列表

      • 整个组织

      您可以通过两种模式提供选择标准:

      • 生成器:基于点击的体验,可生成源选择标准

      • 编辑器:提供源选择标准的自由格式的文本框

      源选择标准支持的语法:

      • 支持的密钥: OrganizationId | OrganizationUnitId | AccountId | *

      • 支持的运算符:= | IN | OR

    3. 源区域:选择一个区域列表以查找要集中的遥测数据。

  6. 通过设置下面的字段来指定目标详细信息,然后选择下一步

    1. 目标账户:在组织中选择一个充当遥测数据中心目标的账户。

    2. 目标区域:选择一个存储集中式遥测数据副本的主要区域。

    3. 备份区域:根据需要选择存储集中式遥测数据的第二个副本的区域。

  7. 通过设置下面的字段来指定遥测数据,然后选择下一步

    1. 日志组:选择以下选项之一:

      • 所有日志组:集中源账户中所有日志组的日志。

      • 筛选日志组:根据日志组选择标准集中源账户中一部分日志组的日志。您可以通过两种模式提供选择标准:

        • 生成器:基于点击的体验,可生成日志组选择标准

        • 编辑器:提供日志组选择标准的自由格式的文本框

        日志组选择标准支持的语法:

        • 支持的密钥: LogGroupName| *

        • 支持的运算符:= | != | IN | NOT IN | AND | OR | LIKE | NOT LIKE

    2. KMS 加密的日志组

      重要

      CloudWatch 如果集中化规则中提供的 KMS 密钥不允许日志使用,则集中化规则将无法将日志从源账户传送到目标 CloudWatch 日志组。如果您在目标日志组中使用客户托管的 KMS 密钥,请在 kms 密钥中添加标签 LogsManaged = true。有关更多信息,请参阅 步骤 2:设置 KMS 密钥的权限

      请选择以下选项之一:

      • 使用@@ 特定于目标的客户托管 KMS 密钥集中使用客户托管 KMS 密钥加密的源日志组:将使用客户托管 KMS 密钥加密的源日志组中的日志事件集中到目标账户中使用客户托管 KMS 密钥加密的目标日志组中。

        选择此设置后,您还必须设置以下内容:

        • 目标加密密钥 ARN:目标账户和主目标区域中客户托管 KMS 密钥的 ARN,将与新创建的目标日志组相关联。

        • 备份目标加密密钥 ARN(如果选择了备份区域):目标账户和备份目标区域中客户托管 KMS 密钥的 ARN,将与新创建的目标日志组相关联。

        • 跳过集中到未加密的目标日志组(可选):如果已存在没有客户托管的 KMS 密钥的日志组,则 CloudWatch 无法更新其加密。选择此选项可跳过将使用客户托管的 KMS 密钥加密的源日志组中的日志事件集中到与客户托管的 KMS 密钥无关的目标日志组。

      • 使用@@ Amazon 自有的 KMS 密钥将使用客户托管 KMS 密钥加密的日志组集中到目标账户中:将使用客户管理的 K MS 密钥加密的源日志组中的日志事件集中到使用 Amazon 自有的 KMS 密钥加密的新创建的目标日志组中。

      • 不要集中使用客户托管的 KMS 密钥加密的日志组:跳过集中使用客户托管 KMS 密钥加密的源日志组中的日志事件。

  8. 查看集中化规则,根据需要进行任何最后的编辑,然后选择创建集中化策略

修改集中化规则

请按照以下过程修改现有的集中化规则。

修改集中化规则
  1. 使用组织的管理或委派管理员帐户导航到 CloudWatch 控制台。

  2. 选择设置

  3. 导航到组织选项卡。

  4. 选择管理规则

  5. 选择要更新规则,然后选择编辑

  6. 根据需要更新规则配置,然后选择下一步继续执行每个步骤。

  7. 在步骤 4“查看和配置”中,选择更新集中化策略

查看集中化规则

请按照以下过程查看现有集中化规则的详细信息。

查看集中化规则
  1. 使用组织的管理或委派管理员帐户导航到 CloudWatch 控制台。

  2. 选择设置

  3. 导航到组织选项卡。

  4. 选择管理规则

  5. 查看所有现有集中化规则的列表,然后选择一个特定规则名称以查看其详细信息。

删除集中化规则

请按照以下过程删除现有的集中化规则。

删除集中化规则
  1. 使用组织的管理或委派管理员帐户导航到 CloudWatch 控制台。

  2. 选择设置

  3. 导航到组织选项卡。

  4. 选择管理规则

  5. 选择要删除的规则,然后选择删除

  6. 确认删除并选择删除

监控集中化规则并对其进行故障排除

您可以使用 CloudWatch 指标、 CloudWatch 日志控制台和日志来监控集中化规则的状态和 Amazon CloudTrail 性能。这有助于确保日志数据成功复制,并识别集中化配置中的任何问题。

CloudWatch 日志提供:

  1. 每个集中化规则的规则运行状况

    1. 选择设置

    2. 导航到组织选项卡。

    3. 选择管理规则

  2. 使用记录 API 调用 Amazon CloudTrail

  3. CloudWatch 还会发布集中化指标,包括复制的日志事件、错误和限制。有关这些指标及其维度的更多信息,请参阅集中化指标和维度

集中化规则运行状况

每个集中化规则都有运行状况指示其是否正常运行。您可以通过控制台或使用 API 以编程方式检查规则运行状况。

规则运行状况包括:

  • HEALTHY:规则运行正常,并按配置复制日志数据

  • UNHEALTHY:规则遇到问题,可能无法正确复制数据

  • PROVISIONING:组织的集中化正在设置过程中。

当规则被标记为 UNHEALTHY 时,FailureReason 字段会提供有关需要解决的具体问题的详细信息。

使用监控集中化 API 调用 Amazon CloudTrail

Amazon CloudTrail 记录对集中化服务进行的 API 调用,允许您跟踪配置更改并解决属于您的 Amazon Organizations成员的账户的问题。

集中化的关键 CloudTrail 事件包括:

  • CreateCentralizationRuleForOrganization:创建新的集中化规则时

  • UpdateCentralizationRuleForOrganization:修改现有规则时

  • DeleteCentralizationRuleForOrganization:删除规则时

  • GetCentralizationRuleForOrganization:检索规则详细信息时

  • ListCentralizationRulesForOrganization:列出规则时

您可以使用 CloudTrail 日志来审核集中化配置更改,并将其与性能问题或复制失败相关联。

监控建议

为确保集中化正常运行,我们建议对提供给 Metrics 的关键集中化指标设置 CloudWatch 警报。 CloudWatch 这种主动监控可帮助您及早发现问题,并在整个组织中保持可靠的日志集中化。

要监控的关键指标包括:

  • IncomingCopiedBytes:监控成功复制到目标账户的日志数据量。该指标的突然下降或缺失可能表明存在集中化问题。

  • CentralizationError:为集中化流程中的任何错误设置警报,以快速识别和解决问题。

  • CentralizationThrottled:监控可能影响日志复制性能的限制事件。

有关可用集中化指标及其维度的完整列表,请参阅集中化指标和维度

如果未按预期集中日志,请查看以下可能阻止日志集中化的常见场景。

历史日志数据

CloudWatch 日志集中化功能仅处理在您创建集中化规则后进入源账户的新日志数据。历史日志数据(创建规则之前存在的日志)不会进行集中。

KMS 密钥权限

如果集中化规则中提供的 KMS 密钥不允许日志使用,则集中化规则将无法将日志从源账户传送到目标 CloudWatch 日志组。确保 KMS 密钥策略向 CloudWatch 日志授予必要的权限。有关更多信息,请参阅 步骤 2:设置 KMS 密钥的权限

客户托管 KMS 密钥配置

如果您在创建规则时选择了不要集中使用客户管理的 KMS 密钥加密的日志组,则来自使用客户管理的 KMS 密钥加密的源日志组的日志事件将被跳过且不会集中处理。

目标加密不匹配

如果目标日志组已经存在,其KMS加密配置与集中化规则指定的配置不同,并且冲突解决方案设置为SKIP,则记录将被删除并发出DestinationEncryptionMismatch错误。例如,当目标采用默认加密但规则指定了客户托管的 KMS 密钥时,就会发生这种情况。

未启用可信访问

必须为 CloudWatch 管理账户和目标账户启用可信访问权限,才能提供对日志数据的访问权限。 Amazon Organizations

来源选择标准

确认您的集中化规则的来源选择标准配置正确:

  • 账户和区域:确保规则中包含源账户和日志来源区域。来自未在规则中指定的账户或区域的日志组将不会被集中化。

  • 日志组筛选器:如果您配置了日志组筛选器,则只有符合指定条件的日志组才会被集中管理。确认您的日志组选择标准包括您希望集中管理的日志组。

  • 组织成员资格:来源账户和目标账户必须属于同一个 Amazon Organizations 组织。组织外部的账户不能参与集中管理。

已达到日志组配额限制

如果目标账户已达到其日志组配额限制,则无法创建新的日志组进行集中化。验证目标账户是否有足够的配额来容纳来自所有源账户的集中式日志组。如果需要,您可以请求增加配额。

已超出日志流名称长度限制

日志流名称有最大长度限制。当集中化将日志流复制到目标账户时,会在日志流名称中添加后缀。如果生成的日志流名称超过允许的最大长度,则记录将被删除并向客户账户发出InvalidLogStream错误。

规则健康状态

在控制台中或使用 GetCentralizationRuleForOrganization API 检查集中化规则的运行状况。如果该规则被标记为 UNHEALTHY,请查看该FailureReason字段以了解有关该问题的具体详细信息。

要诊断集中化问题,请在控制台中查看集中化规则的运行状况,检查错误和限制 CloudWatch 指标,并检查 API 调用失败的 Amazon CloudTrail 日志。有关集中化指标的更多信息,请参阅集中化指标和维度