使用“允许的 AMI”控制在 Amazon EC2 中对 AMI 的发现和使用 - Amazon Elastic Compute Cloud

使用“允许的 AMI”控制在 Amazon EC2 中对 AMI 的发现和使用

要控制 AWS 账户中的用户对亚马逊机器映像(AMI)的发现和使用,可以使用允许的 AMI 功能。此功能允许您指定 AMI 要在账户中可见和可用而必须满足的标准。启用该标准后,启动实例的用户将只能看到并有权访问符合指定标准的 AMI。例如,您可以指定可信的 AMI 提供商列表作为标准,只有来自这些提供商的 AMI 才可见并可供使用。

在启用“允许的 AMI”设置之前,您可以启用审核模式来预览哪些 AMI 将可见或不可见、可供使用或不可供使用。这有助于您根据需要完善标准,确保只有预期的 AMI 才对账户中的用户可见和可用。此外,您可以运行 describe-instance-image-metadata 命令并筛选响应,以识别任何使用不符合指定条件的 AMI 启动的实例。这些信息可以指导您作出决策,选择是更新启动配置以使用合规的 AMI(例如在启动模板中指定不同的 AMI),还是调整标准来允许这些 AMI。

您可以在账户级别指定“允许的 AMI”设置,可以直接在账户中指定,也可以使用声明式策略进行指定。必须在想要在其中控制 AMI 的发现和使用的每个 AWS 区域中配置这些设置。使用声明式策略允许同时将设置应用于多个区域,也可以同时应用于多个账户。当使用声明式策略时,您无法直接在账户中修改设置。本主题介绍如何直接在账户中配置设置。有关使用声明式策略的信息,请参阅《AWS Organizations User Guide》中的 Declarative policies

注意

“允许的 AMI”功能仅控制公用 AMI 或与账户共享的 AMI 的发现和使用。它不会限制账户拥有的 AMI。无论设置的条件是什么,您账户中的用户始终可以发现和使用由您的账户创建的 AMI。

“允许的 AMI”功能的主要优势
  • 合规与安全:用户只能发现和使用符合指定标准的 AMI,从而降低使用不合规的 AMI 的风险。

  • 高效管理:通过减少允许的 AMI 数量,管理其余 AMI 将变得更加轻松高效。

  • 集中式账户级别实施:直接在账户内或通过声明式策略在账户级别配置“允许的 AMI”设置。这提供了一种集中而高效的方式来控制整个账户的 AMI 使用情况。

“允许的 AMI”的工作原理

您可以指定标准,自动筛选并确定可以在您的账户发现和使用哪些 AMI。您可以在 JSON 配置中指定标准,然后通过运行启用 API 操作来启用该标准。

“允许的 AMI”标准的 JSON 配置

“允许的 AMI”的核心配置是定义允许的 AMI 标准的 JSON 配置。

支持的标准

目前唯一支持的标准类型为 AMI 提供商。有效值是由 AWS 和 AWS 账户 ID 定义的别名,如下所示:

  • amazon:别名,用于标识由 AWS 创建的 AMI

  • aws-marketplace:别名,用于标识由 AWS Marketplace 中经过验证的提供商创建的 AMI

  • aws-backup-vault:别名,用于标识位于逻辑上受物理隔离的 AWS Backup 保管库账户中的备份 AMI。如果您使用 AWS Backup 逻辑上受物理隔离的保管库功能,请确保将此别名作为 AMI 提供商包含在内。

  • AWS 账户 ID:一个或多个 12 位 AWS 账户 ID

  • none:表示只能发现和使用您的账户创建的 AMI。无法发现和使用公有或共享的 AMI。如果指定 none,则无法指定别名或账户 ID。

JSON 配置

AMI 标准以 JSON 格式指定。以下是指定了两个别名和三个 AWS 账户 ID 的示例:

{ "ImageCriteria": [ { "ImageProviders": [ "amazon", "aws-marketplace", "123456789012", "112233445566", "009988776655" ] } ] }
如何评估标准

JSON 配置中的标准是使用 or 条件来评估的。因此 AMI 只需要匹配任何 ImageCriteria 对象中的一个指定提供者,即可视为允许。例如,假设将 amazon 和某个 AWS 账户 ID 都指定为提供者,则将允许来自其中任意一个提供者的 AMI。

JSON 配置的限制
  • ImageCriteria 对象:在单个配置中最多可以指定 10 个 ImageCriteria 对象。

  • ImageProviders 值:所有 ImageCriteria 对象最多 200 个值。

限制示例

请考虑以下示例来说明这些限制,其中使用不同的 ImageProviders 列表对 AMI 提供商账户进行分组:

{ "ImageCriteria": [ { "ImageProviders": ["amazon", "aws-marketplace"] }, { "ImageProviders": ["123456789012", "112233445566", "121232343454"] }, { "ImageProviders": ["998877665555", "987654321098"] } // Up to 7 more ImageCriteria objects can be added // Up to 193 more ImageProviders values can be added ] }

在本示例中:

  • 有 3 个 imageCriteria 对象(最多可以再添加 7 个对象,此时达到 10 个对象的上限)。

  • 所有对象中总共有 7 个 imageProviders 值(最多可以再添加 193 个值,此时达到 200 个值的上限)。

在此示例中,来自所有 ImageCriteria 对象中任何指定 AMI 提供商的 AMI 都将被允许,因为这是使用 or 条件评估的。

“允许的 AMI”操作

“允许的 AMI”功能有三种用于管理镜像标准的操作模式:启用禁用审核模式。您可借助此功能启用或禁用镜像标准,或根据需要对其进行审核。

已启用

启用“允许的 AMI”时:

  • 将应用 ImageCriteria

  • 只有允许的 AMI 才能在 EC2 控制台中由使用镜像(例如描述、复制、存储或执行其他使用镜像的操作)的 API 发现。

  • 只能使用允许的 AMI 启动实例。

已禁用

禁用“允许的 AMI”时:

  • 不会应用 ImageCriteria

  • 对 AMI 的可发现性或使用不会施加任何限制。

审核模式

在审核模式下:

  • 将应用 ImageCriteria,但对 AMI 的可发现性或使用不会施加任何限制。

  • 在 EC2 控制台中,对于每个 AMI,允许的镜像字段会显示,指示在启用“允许的 AMI”时,账户中的用户是否可以发现和使用该 AMI。

  • 在命令行中,describe-image 操作的响应包括 "ImageAllowed": true"ImageAllowed": false,指示在启用“允许的 AMI”时,账户中的用户是否可以发现和使用该 AMI。

  • 在 EC2 控制台中,AMI 目录会在当启用“允许的 AMI”时账户中的用户无法发现或无法使用的 AMI 旁显示不允许

实施“允许的 AMI”的最佳实践

在实施“允许的 AMI”时,请考虑这些最佳实践,确保平稳过渡并最大限度地减少对 AWS 环境的潜在干扰。

  1. 启用审核模式

    首先在审核模式下启用“允许的 AMI”。此模式允许您查看哪些 AMI 会受到标准的影响,而无需实际限制访问权限,从而提供无风险的评估期。

  2. 设置“允许的 AMI”标准

    仔细确定哪些 AMI 提供商符合贵组织的安全政策、合规性要求和运营需求。

    注意

    我们建议指定 amazon 别名以允许由 AWS 创建的 AMI,确保您使用的 AWS 托管服务可以继续在您的账户中启动 EC2 实例。

  3. 检查对预期业务流程的影响

    您可以通过控制台或 CLI 来识别任何使用不符合指定标准的 AMI 启动的实例。这些信息可以指导您作出决策,选择是更新启动配置以使用合规的 AMI(例如在启动模板中指定不同的 AMI),还是调整标准来允许这些 AMI。

    控制台:使用 ec2-instance-launched-with-allowed-ami AWS Config 规则来检查正在运行或已停止的实例是否使用符合“允许的 AMI”标准的 AMI 启动。如果 AMI 不符合“允许的 AMI”标准,则规则为 NON_COMPLIANT;如果符合,则规则为 COMPLIANT。仅当“允许的 AMI”设置为已启用审核模式时,规则才会生效。

    CLI:运行 describe-instance-image-metadata 命令并筛选响应,以识别任何使用不符合指定标准的 AMI 启动的实例。

    有关控制台和 CLI 说明,请参阅 查找利用不允许的 AMI 启动的实例

  4. 启用“允许的 AMI”

    一旦确认该标准不会对预期的业务流程产生不利影响,请启用“允许的 AMI”。

  5. 监控实例启动情况

    继续监控 AMI 在应用程序和您使用的 AWS 托管服务(例如 Amazon EMR、Amazon ECR、Amazon EKS 和 AWS Elastic Beanstalk)中启动实例的情况。检查是否存在任何意外问题,并对“允许的 AMI”标准进行必要的调整。

  6. 试用新 AMI

    要测试不符合您当前“允许的 AMI”设置的第三方 AMI,AWS 建议采用以下方法:

    • 使用单独的 AWS 账户:创建一个无法访问您关键业务资源的账户。确保未在此账户中启用“允许的 AMI”设置,或明确允许您要测试的 AMI,以便您可以对其进行测试。

    • 在其他 AWS 区域进行测试:使用可使用第三方 AMI 但尚未启用“允许的 AMI”设置的区域。

    这些方法有助于确保在测试新 AMI 时,您的关键业务资源仍然安全。

所需的 IAM 权限

要使用“允许的 AMI”功能,您需要以下 IAM 权限:

  • GetAllowedImagesSettings

  • EnableAllowedImagesSettings

  • DisableAllowedImagesSettings

  • ReplaceImageCriteriaInAllowedImagesSettings