使用“允许的 AMI”控制在 Amazon EC2 中对 AMI 的发现和使用
要控制 AWS 账户中的用户对亚马逊机器映像(AMI)的发现和使用,可以使用允许的 AMI 功能。此功能允许您指定 AMI 要在账户中可见和可用而必须满足的标准。启用该标准后,启动实例的用户将只能看到并有权访问符合指定标准的 AMI。例如,您可以指定可信的 AMI 提供商列表作为标准,只有来自这些提供商的 AMI 才可见并可供使用。
在启用“允许的 AMI”设置之前,您可以启用审核模式来预览哪些 AMI 将可见或不可见、可供使用或不可供使用。这有助于您根据需要完善标准,确保只有预期的 AMI 才对账户中的用户可见和可用。此外,您可以运行 describe-instance-image-metadata
您可以在账户级别指定“允许的 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 环境的潜在干扰。
-
启用审核模式
首先在审核模式下启用“允许的 AMI”。此模式允许您查看哪些 AMI 会受到标准的影响,而无需实际限制访问权限,从而提供无风险的评估期。
-
设置“允许的 AMI”标准
仔细确定哪些 AMI 提供商符合贵组织的安全政策、合规性要求和运营需求。
注意
我们建议指定
amazon
别名以允许由 AWS 创建的 AMI,确保您使用的 AWS 托管服务可以继续在您的账户中启动 EC2 实例。 -
检查对预期业务流程的影响
您可以通过控制台或 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 启动的实例。
-
启用“允许的 AMI”
一旦确认该标准不会对预期的业务流程产生不利影响,请启用“允许的 AMI”。
-
监控实例启动情况
继续监控 AMI 在应用程序和您使用的 AWS 托管服务(例如 Amazon EMR、Amazon ECR、Amazon EKS 和 AWS Elastic Beanstalk)中启动实例的情况。检查是否存在任何意外问题,并对“允许的 AMI”标准进行必要的调整。
-
试用新 AMI
要测试不符合您当前“允许的 AMI”设置的第三方 AMI,AWS 建议采用以下方法:
-
使用单独的 AWS 账户:创建一个无法访问您关键业务资源的账户。确保未在此账户中启用“允许的 AMI”设置,或明确允许您要测试的 AMI,以便您可以对其进行测试。
-
在其他 AWS 区域进行测试:使用可使用第三方 AMI 但尚未启用“允许的 AMI”设置的区域。
这些方法有助于确保在测试新 AMI 时,您的关键业务资源仍然安全。
-
所需的 IAM 权限
要使用“允许的 AMI”功能,您需要以下 IAM 权限:
-
GetAllowedImagesSettings
-
EnableAllowedImagesSettings
-
DisableAllowedImagesSettings
-
ReplaceImageCriteriaInAllowedImagesSettings