声明性策略语法和示例 - Amazon Organizations
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

声明性策略语法和示例

本页将介绍声明性策略语法并提供示例。

注意事项

  • 当您使用声明式策略配置服务属性时,它可能会影响多个 APIs属性。任何不合规的操作都将失败。

  • 账户管理员将无法在个人账户级别修改服务属性的值。

声明性策略的语法

声明性策略是一个纯文本文件,根据 JSON 的规则设置结构。声明性策略的语法遵循所有管理策略类型的语法。有关该语法的完整讨论,请参阅管理策略类型的策略语法和继承。本主题重点介绍如何使用该常规语法来满足声明性策略类型的特定要求。

以下示例展示了声明性策略的基本语法:

{ "ec2_attributes": { "exception_message": { "@@assign": "Your custom error message.https://myURL" } } }
  • ec2_attributes 字段键名称。声明式策略始终以给 Amazon Web Services 服务定密钥的固定密钥名称开头。它是上面示例策略中的顶行。目前,声明性策略仅支持与 Amazon EC2 相关的服务。

  • ec2_attributes 下,您可以使用 exception_message 设置自定义错误消息。有关更多信息,请参阅声明性策略的自定义错误消息

  • ec2_attributes 下,您可以插入一个或多个支持的声明性策略。有关这些架构,请参阅支持的声明性策略

支持的声明性策略

以下是声明式策略支持的 Amazon Web Services 服务 和属性。在以下某些示例中,可能会压缩 JSON 空白格式以节省空间。

  • VPC 屏蔽公共访问权限

  • Serial Console 访问权限

  • 映像屏蔽公共访问权限

  • 允许的映像设置

  • 实例元数据

  • 快照屏蔽公共访问权限

VPC Block Public Access

策略效果

控制 Amazon VPCs 和子网中的资源能否通过互联网网关访问互联网(IGWs)。有关更多信息,请参阅《Amazon Virtual Private Cloud 用户指南》中的互联网访问配置

策略内容

{ "ec2_attributes": { "vpc_block_public_access": { "internet_gateway_block": { "mode": { "@@assign": "block_ingress" }, "exclusions_allowed": { "@@assign": "enabled" } } } } }

以下是此属性的可用字段:

  • "internet_gateway":

    • "mode":

      • "off":VPC BPA 未启用。

      • "block_ingress":所有通往 VPCs (不包括的子网除外)的 VPCs 互联网流量都已被阻止。仅允许进出 NAT 网关和仅出口互联网网关的流量,因为这些网关仅允许建立出站连接。

      • "block_bidirectional":所有进出互联网网关和仅限出口的互联网网关(排除的 VPCs 和子网除外)的流量都被阻止。

  • "exclusions_allowed":排除是一种可以应用于单个 VPC 或子网的模式,可将其排除在账户的 VPC BPA 模式之外,并允许双向或仅出口访问。

    • "enabled":可由账户创建排除项。

    • "disabled":无法由账户创建排除项。

    注意

    您可以使用该属性配置是否允许排除项,但不能使用该属性本身创建排除项。要创建排除项,必须在拥有 VPC 的账户中创建。有关创建 VPC BPA 排除项的更多信息,请参阅《Amazon VPC 用户指南》中的创建和删除排除项

注意事项

如果在声明性策略中使用此属性,则无法使用以下操作来修改范围内账户的强制配置。此列表并不详尽:

  • ModifyVpcBlockPublicAccessOptions

  • CreateVpcBlockPublicAccessExclusion

  • ModifyVpcBlockPublicAccessExclusion

Serial Console Access

策略效果

控制 EC2 Serial Console 是否可访问。有关 EC2 Serial Console 的更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的 EC2 Serial Console

策略内容

{ "ec2_attributes": { "serial_console_access": { "status": { "@@assign": "enabled" } } } }

以下是此属性的可用字段:

  • "status":

    • "enabled":允许访问 EC2 Serial Console。

    • "disabled":阻止访问 EC2 Serial Console。

注意事项

如果在声明性策略中使用此属性,则无法使用以下操作来修改范围内账户的强制配置。此列表并不详尽:

  • EnableSerialConsoleAccess

  • DisableSerialConsoleAccess

Image Block Public Access

策略效果

控制 Amazon 机器映像 (AMIs) 是否可公开共享。有关更多信息 AMIs,请参阅《亚马逊弹性计算云用户指南》中的亚马逊系统映像 (AMIs)

策略内容

{ "ec2_attributes": { "image_block_public_access": { "state": { "@@assign": "block_new_sharing" } } } }

以下是此属性的可用字段:

  • "state":

    • "unblocked": 对公开共享没有限制 AMIs。

    • "block_new_sharing": 阻止新的公开共享 AMIs。 AMIs 已经公开分享的内容仍然是公开的。

注意事项

如果在声明性策略中使用此属性,则无法使用以下操作来修改范围内账户的强制配置。此列表并不详尽:

  • EnableImageBlockPublicAccess

  • DisableImageBlockPublicAccess

Allowed Images Settings

策略效果

使用 “允许” 控制在 Amazon EC2 中发现和使用亚马逊系统映像 (AMI) AMIs。有关更多信息 AMIs,请参阅《亚马逊弹性计算云用户指南》中的 “允许控制 Amazon EC2 AMIs 中 AMI 的发现和使用”。

策略内容

以下是此属性的可用字段:

{ "ec2_attributes": { "allowed_images_settings": { "state": { "@@assign": "enabled" }, "image_criteria": { "criteria_1": { "allowed_image_providers": { "@@append": [ "amazon" ] } } } } } }
  • "state":

    • "enabled":该属性处于活动状态且已强制执行。

    • "disabled":该属性处于活动状态且未强制执行。

    • "audit_mode":该属性处于审核模式。这意味着它会识别不合规的映像,但不会阻止其使用。

  • "image_criteria":条件列表。最多支持 10 个条件,名称从 criteria_1 到 criteria_10

    • "allowed_image_providers": 亚马逊、aws_marketplace、aws_backup_vault 的 12 位账户 IDs 或所有者别名的逗号分隔列表。

    • "image_names":允许的映像的名称。名称可以包含通配符(? 和 *)。长度:1–128 个字符。使用 ? 时,最小长度为 3 个字符。

    • "marketplace_product_codes":允许的图片的 Amazon Marketplace 商品代码。长度:1–25 个字符,有效字符:字母(A–Z、a–z)和数字(0–9)

    • "creation_date_condition":允许的映像的最大期限。

      • "maximum_days_since_created":自映像创建以来经过的最长天数。有效范围:最小值为 0。最大值为 2147483647。

    • "deprecation_time_condition":自弃用允许的映像以来的最长期限。

      • "maximum_days_since_deprecated":自映像弃用以来经过的最长天数。有效范围:最小值为 0。最大值为 2147483647。

注意事项

如果在声明性策略中使用此属性,则无法使用以下操作来修改范围内账户的强制配置。此列表并不详尽:

  • EnableAllowedImagesSettings

  • ReplaceImageCriteriaInAllowedImagesSettings

  • DisableAllowedImagesSettings

Instance Metadata

策略效果

控制所有新 EC2 实例启动时的 IMDS 默认值和 IMDSv2 强制执行。有关 IMDS 默认值和 IMDSv2 强制执行的更多信息,请参阅 Amazon EC2 用户指南中的使用实例元数据管理您的 EC2 实例。

策略内容

以下是此属性的可用字段:

{ "ec2_attributes": { "instance_metadata_defaults": { "http_tokens": { "@@assign": "required" }, "http_put_response_hop_limit": { "@@assign": "4" }, "http_endpoint": { "@@assign": "enabled" }, "instance_metadata_tags": { "@@assign": "enabled" }, "http_tokens_enforced": { "@@assign": "enabled" } } } }
  • "http_tokens":

    • "no_preference":其他默认值适用。例如 AMI 默认值(如适用)。

    • "required": IMDSv2 必须使用。 IMDSv1 是不允许的。

    • "optional": 两者 IMDSv1 IMDSv2 都允许。

    注意

    元数据版本

    在设置http_tokensrequired(IMDSv2 必须使用)之前,请确保您的所有实例都没有进行 IMDSv1 调用。有关更多信息,请参阅 Amazon EC2 用户指南中的步骤 1:使用 IMDSv2 =optional 识别实例并审计 IMDSv1 使用情况

  • "http_put_response_hop_limit":

    • "Integer":-1 至 64 之间的整数值,表示元数据令牌可以传输的最大跃点数。要表示无首选项,请指定 -1。

    注意

    跃点限制

    如果将 http_tokens 设置为 required,则建议至少将 http_put_response_hop_limit 设置为 2。有关更多信息,请参阅《Amazon Elastic Compute Cloud 用户指南》中的实例元数据访问注意事项

  • "http_endpoint":

    • "no_preference":其他默认值适用。例如 AMI 默认值(如适用)。

    • "enabled":实例元数据服务端点可访问。

    • "disabled":实例元数据服务端点不可访问。

  • "instance_metadata_tags":

    • "no_preference":其他默认值适用。例如 AMI 默认值(如适用)。

    • "enabled":可以从实例元数据访问实例标签。

    • "disabled":无法从实例元数据访问实例标签。

  • "http_tokens_enforced":

    • "no_preference":其他默认值适用。例如 AMI 默认值(如适用)。

    • "enabled": IMDSv2 必须使用。尝试启动 IMDSv1 实例或 IMDSv1 在现有实例上启用将失败。

    • "disabled": 两者 IMDSv1 IMDSv2 都允许。

    警告

    IMDSv2 执法

    在允许 IMDSv1 和 IMDSv2(令牌可选)的同时启用 IMDSv2 强制将导致启动失败 IMDSv1 ,除非通过启动参数或 AMI 默认值明确禁用。有关更多信息,请参阅 Amazon EC2 用户指南中的启动 IMDSv1启用实例失败

Snapshot Block Public Access

策略效果

控制 Amazon EBS 快照是否可以公开访问。有关 EBS 快照的更多信息,请参阅《Amazon Elastic Block Store User Guide》中的 Amazon EBS snapshots

策略内容

{ "ec2_attributes": { "snapshot_block_public_access": { "state": { "@@assign": "block_new_sharing" } } } }

以下是此属性的可用字段:

  • "state":

    • "block_all_sharing":阻止所有公开共享快照的行为。已公开共享的快照将被视为私有快照,不可再公开访问。

    • "block_new_sharing":阻止新的公开共享快照的行为。已经公开共享的快照仍可公开访问。

    • "unblocked":对快照的公开共享不设限制。

注意事项

如果在声明性策略中使用此属性,则无法使用以下操作来修改范围内账户的强制配置。此列表并不详尽:

  • EnableSnapshotBlockPublicAccess

  • DisableSnapshotBlockPublicAccess