AWS::FMS::Policy - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::FMS::Policy

AWS Firewall Manager 策略。

Firewall Manager 提供以下类型的策略:

  • 一个 Shield Advanced 策略,将 Shield Advanced 保护应用到指定的账户和资源。

  • 一个 AWS WAF 策略(类型 WAFV2),定义要在对应的 AWS WAF Web ACL 中首先运行的规则组,以及要在 Web ACL 中最后运行的规则组。

  • 一个 AWS WAF Classic 策略,定义规则组。AWS WAF Classic 不支持 CloudFormation 中的规则组,因此,要通过 CloudFormation 创建 WAF Classic 策略,您必须先在 CloudFormation 之外创建规则组。

  • 一个安全组策略,用于管理整个 AWS 组织中的 VPC 安全组。

每个策略都特定于其中一种类型。如果要跨账户强制执行多个策略类型,请创建多个策略。您可以为每种类型创建多个策略。

这些策略需要进行一些设置才能使用。有关更多信息,请参阅 AWS Firewall Manager 下有关先决条件和入门的章节。

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::FMS::Policy", "Properties" : { "DeleteAllPolicyResources" : Boolean, "ExcludeMap" : IEMap, "ExcludeResourceTags" : Boolean, "IncludeMap" : IEMap, "PolicyName" : String, "RemediationEnabled" : Boolean, "ResourceTags" : [ ResourceTag, ... ], "ResourceType" : String, "ResourceTypeList" : [ String, ... ], "SecurityServicePolicyData" : Json, "Tags" : [ PolicyTag, ... ] } }

属性

DeleteAllPolicyResources

在删除策略时使用。如果为 true,Firewall Manager 将根据策略类型执行清理。

对于 AWS WAF 和 Shield Advanced 策略,Firewall Manager 执行以下操作:

  • 删除 AWS Firewall Manager 创建的规则组

  • 从范围内资源中删除 Web ACL

  • 删除不包含规则或规则组的 Web ACL

对于安全组策略,Firewall Manager 对策略中的每个安全组执行以下操作:

  • 解除安全组与范围内资源的关联

  • 如果是通过 Firewall Manager 创建了安全组,并且该安全组不再通过其他策略与任何资源关联,则将其删除

在清理后,范围内的资源不再受此策略中的 Web ACL 保护。对范围外资源的保护保持不变。范围由您创建的标签以及与策略关联的账户决定。创建策略时,如果您指定只有特定账户中的资源或具有特定标签的资源在该策略的范围内,则由该策略处理这些账户和资源。所有其他资源都在范围之外。如果您不指定标签或账户,则所有资源都在范围内。

必需:否

类型:布尔值

Update requires: No interruption

ExcludeMap

指定要从策略中排除的 AWS 账户 ID 和 AWS Organizations 组织单位 (OU)。指定 OU 等同于指定 OU 及其任何子 OU 中的所有账户,包括之后添加的任何子 OU 和账户。

您可以指定包含项或排除项,但不能同时指定两者。如果您指定 IncludeMap,AWS 防火墙管理器将该策略应用于由 IncludeMap 指定的所有账户,并且不评估任何 ExcludeMap 规范。如果未指定 IncludeMap,则防火墙管理器将该策略应用于除 ExcludeMap 指定的那些账户外的所有账户。

您可以指定账户 ID、OU 或组合:

  • 通过将键设置为 ACCOUNT 指定账户 ID。例如,以下是一个有效的映射:{“ACCOUNT” : [“accountID1”, “accountID2”]}

  • 通过将键设置为 ORG_UNIT 指定 OU。例如,以下是一个有效的映射:{“ORG_UNIT” : [“ouid111”, “ouid112”]}

  • 在单个映射中一起指定账户和 OU,用逗号分隔。例如,以下是一个有效的映射:{“ACCOUNT” : [“accountID1”, “accountID2”], “ORG_UNIT” : [“ouid111”, “ouid112”]}

必需:否

类型IEMap

Update requires: No interruption

ExcludeResourceTags

仅在 ResourceTags 属性中指定标签时使用。如果此属性为 True,则具有指定标签的资源不在策略的范围内。如果是 False,则只有具有指定标签的资源才在策略的范围内。

必需:是

类型:布尔值

Update requires: No interruption

IncludeMap

指定要包括在策略中的 AWS 账户 ID 和 AWS Organizations 组织单位 (OU)。指定 OU 等同于指定 OU 及其任何子 OU 中的所有账户,包括之后添加的任何子 OU 和账户。

您可以指定包含项或排除项,但不能同时指定两者。如果您指定 IncludeMap,AWS 防火墙管理器将该策略应用于由 IncludeMap 指定的所有账户,并且不评估任何 ExcludeMap 规范。如果未指定 IncludeMap,则防火墙管理器将该策略应用于除 ExcludeMap 指定的那些账户外的所有账户。

您可以指定账户 ID、OU 或组合:

  • 通过将键设置为 ACCOUNT 指定账户 ID。例如,以下是一个有效的映射:{“ACCOUNT” : [“accountID1”, “accountID2”]}

  • 通过将键设置为 ORG_UNIT 指定 OU。例如,以下是一个有效的映射:{“ORG_UNIT” : [“ouid111”, “ouid112”]}

  • 在单个映射中一起指定账户和 OU,用逗号分隔。例如,以下是一个有效的映射:{“ACCOUNT” : [“accountID1”, “accountID2”], “ORG_UNIT” : [“ouid111”, “ouid112”]}

必需:否

类型IEMap

Update requires: No interruption

PolicyName

AWS Firewall Manager 策略的友好名称。

必需:是

类型:字符串

最低1

最高128

模式^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Update requires: No interruption

RemediationEnabled

指示策略是否应自动应用于新资源。

必需:是

类型:布尔值

Update requires: No interruption

ResourceTags

一组 ResourceTag 对象,用于在策略范围中明确包含资源或明确排除资源。如果未设置此项,则不使用标签来修改策略范围。另请参阅 ExcludeResourceTags

必需:否

类型ResourceTag 列表

最高8

Update requires: No interruption

ResourceType

受策略保护或在策略范围内的资源类型。这是在 AWS 资源类型参考中显示的格式。对于 AWS WAF 和 Shield Advanced,示例包括 AWS::ElasticLoadBalancingV2::LoadBalancerAWS::CloudFront::Distribution。对于安全组通用策略,有效值为 AWS::EC2::NetworkInterfaceAWS::EC2::Instance。对于安全组内容审计策略,有效值为 AWS::EC2::SecurityGroupAWS::EC2::NetworkInterfaceAWS::EC2::Instance。对于安全组使用情况审计策略,值为 AWS::EC2::SecurityGroup

必需:是

类型:字符串

最低1

最高128

模式^([\p{L}\p{Z}\p{N}_.:/=+\-@]*)$

Update requires: No interruption

ResourceTypeList

ResourceType 数组。

必需:否

类型:字符串列表

Update requires: No interruption

SecurityServicePolicyData

有关保护资源所用安全服务的详细信息。

这包含以下设置:

  • 类型 - 指示策略用于保护资源的服务类型。对于安全组策略,Firewall Manager 为每个常见的策略和每个内容审计策略支持一个安全组。这是一个可调整的限额,您可通过联系 AWS Support 提高该限额。

    有效值:WAFV2 | WAF | SHIELD_ADVANCED | SECURITY_GROUPS_COMMON | SECURITY_GROUPS_CONTENT_AUDIT |SECURITY_GROUPS_USAGE_AUDIT

  • ManagedServiceData - 有关特定于服务类型的服务的详细信息,采用 JSON 格式。对于 SHIELD_ADVANCED,这是一个空字符串。

    • 示例:WAFV2

      "ManagedServiceData": "{\"type\":\"WAFV2\",\"defaultAction\":{\"type\":\"ALLOW\"},\"preProcessRuleGroups\":[{\"managedRuleGroupIdentifier\":null,\"ruleGroupArn\":\"rulegrouparn\",\"overrideAction\":{\"type\":\"COUNT\"},\"excludeRules\":[{\"name\":\"EntityName\"}],\"ruleGroupType\":\"RuleGroup\"}],\"postProcessRuleGroups\":[{\"managedRuleGroupIdentifier\":{\"managedRuleGroupName\":\"AWSManagedRulesAdminProtectionRuleSet\",\"vendorName\":\"AWS\"},\"ruleGroupArn\":\"rulegrouparn\",\"overrideAction\":{\"type\":\"NONE\"},\"excludeRules\":[],\"ruleGroupType\":\"ManagedRuleGroup\"}],\"overrideCustomerWebACLAssociation\":false}"

    • 示例:WAF Classic

      "ManagedServiceData": "{\"type\": \"WAF\", \"ruleGroups\": [{\"id\":\"12345678-1bcd-9012-efga-0987654321ab\", \"overrideAction\" : {\"type\": \"COUNT\"}}],\"defaultAction\": {\"type\": \"BLOCK\"}}

      AWS WAF Classic 不支持 CloudFormation 中的规则组。要通过 CloudFormation 创建 WAF Classic 策略,请在 CloudFormation 之外创建规则组,然后在 WAF 托管服务数据规范中提供规则组 ID。

    • 示例:SECURITY_GROUPS_COMMON

      "SecurityServicePolicyData":{"Type":"SECURITY_GROUPS_COMMON","ManagedServiceData":"{\"type\":\"SECURITY_GROUPS_COMMON\",\"revertManualSecurityGroupChanges\":false,\"exclusiveResourceSecurityGroupManagement\":false,\"securityGroups\":[{\"id\":\" sg-000e55995d61a06bd\"}]}"},"RemediationEnabled":false,"ResourceType":"AWS::EC2::NetworkInterface"}

    • 示例:SECURITY_GROUPS_CONTENT_AUDIT

      "SecurityServicePolicyData":{"Type":"SECURITY_GROUPS_CONTENT_AUDIT","ManagedServiceData":"{\"type\":\"SECURITY_GROUPS_CONTENT_AUDIT\",\"securityGroups\":[{\"id\":\" sg-000e55995d61a06bd \"}],\"securityGroupAction\":{\"type\":\"ALLOW\"}}"},"RemediationEnabled":false,"ResourceType":"AWS::EC2::NetworkInterface"}

      内容审计的安全组操作可以是 ALLOWDENY。对于 ALLOW,所有范围内安全组规则都必须在策略的安全组规则所允许的范围内。对于 DENY,所有范围内安全组规则包含的值或范围,都不得与策略安全组中的规则值或范围匹配。

    • 示例:SECURITY_GROUPS_USAGE_AUDIT

      "SecurityServicePolicyData":{"Type":"SECURITY_GROUPS_USAGE_AUDIT","ManagedServiceData":"{\"type\":\"SECURITY_GROUPS_USAGE_AUDIT\",\"deleteUnusedSecurityGroups\":true,\"coalesceRedundantSecurityGroups\":true}"},"RemediationEnabled":false,"Resou rceType":"AWS::EC2::SecurityGroup"}

必需:是

类型:Json

Update requires: No interruption

Tags

与 AWS 资源关联的键/值对的集合。键值对可以是您定义的任何内容。通常,标签键表示一个类别(如“environment”),标签值表示该类别中的特定值(如“test”、“development”或“production”)。您最多可以将 50 个标签添加到每个 AWS 资源中。

必需:否

类型PolicyTag 列表

Update requires: No interruption

返回值

Ref

此资源的 Ref 返回 PolicyId

在将此资源的逻辑 ID 传递给内部 Ref 函数时,Ref 返回资源的物理 ID,例如 1234a1a-a1b1-12a1-abcd-a123b123456。

For more information about using the Ref function, see Ref.

Fn::GetAtt

Arn

策略的 Amazon 资源名称 (ARN)。

Id

策略的 ID。

示例

创建 Firewall Manager AWS WAF 策略

下面显示了针对最新版本的 AWS WAF 的 Firewall Manager WAF 策略示例。

YAML

PolicyWAFv2: Type: AWS::FMS::Policy Properties: ExcludeResourceTags: false PolicyName: Policy RemediationEnabled: false ResourceType: AWS::ElasticLoadBalancingV2::LoadBalancer SecurityServicePolicyData: Type: WAFV2 ManagedServiceData: !Sub '{"type":"WAFV2", "preProcessRuleGroups":[{ "ruleGroupType":"RuleGroup", "ruleGroupArn":"${RuleGroup.Arn}", "overrideAction":{"type":"NONE"}}], "postProcessRuleGroups":[], "defaultAction":{"type":"BLOCK"}}'

JSON

"PolicyWAFv2": { "Type": "AWS::FMS::Policy", "Properties": { "ExcludeResourceTags": false, "PolicyName": "Policy", "RemediationEnabled": false, "ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer", "SecurityServicePolicyData": { "Type": "WAFV2", "ManagedServiceData": { "Fn::Sub": "{\"type\":\"WAFV2\",\"preProcessRuleGroups\":[{\"ruleGroupType\":\"RuleGroup,\"ruleGroupArn\":\"${RuleGroup.Arn}\",\"overrideAction\":{\"type\":\"NONE\"}}],\"postProcessRuleGroups\":[],\"defaultAction\":{\"type\":\"BLOCK\"}}" } } } }

创建 Firewall Manager AWS WAF Classic 策略

下面显示了一个示例 Firewall Manager AWS WAF Classic 策略。

YAML

PolicyWAF: Type: AWS::FMS::Policy Properties: ExcludeResourceTags: false PolicyName: Policy RemediationEnabled: false ResourceType: AWS::ElasticLoadBalancingV2::LoadBalancer SecurityServicePolicyData: Type: WAF ManagedServiceData: !Sub '{"type":"WAF", "defaultAction":{"type":"BLOCK"}, "overrideCustomerWebACLAssociation":false, "ruleGroups":[ { "id":"${RuleGroupId}", "overrideAction":{"type":"NONE"} } ]}'

JSON

"PolicyWAF": { "Type": "AWS::FMS::Policy", "Properties": { "ExcludeResourceTags": false, "PolicyName": "Policy", "RemediationEnabled": false, "ResourceType": "AWS::ElasticLoadBalancingV2::LoadBalancer", "SecurityServicePolicyData": { "Type": "WAF", "ManagedServiceData": { "Fn::Sub": "{\"type\":\"WAF\",\"defaultAction\":{\"type\":\"BLOCK\"},\"overrideCustomerWebACLAssociation\":false,\"ruleGroups\":[{\"id\":\"${RuleGroupId}\",\"overrideAction\":{\"type\":\"NONE\"}}]}" } } } }

创建 Firewall Manager Shield Advanced 策略

下面显示了一个示例 Firewall Manager Shield Advanced 策略。此示例使用账户和资源标签规范来限制策略的范围。

YAML

Policy: Type: AWS::FMS::Policy Properties: ExcludeResourceTags: true ResourceTags: - Key: resourceTag1 Value: value - Key: resourceTag2 Value: value IncludeMap: ACCOUNT: - !Ref AWS::AccountId PolicyName: TaggedPolicy RemediationEnabled: false ResourceType: ResourceTypeList ResourceTypeList: - AWS::ElasticLoadBalancingV2::LoadBalancer - AWS::EC2::EIP SecurityServicePolicyData: Type: SHIELD_ADVANCED DeleteAllPolicyResources: false Tags: - Key: tag1 Value: value - Key: tag2 Value: value

JSON

"Policy": { "Type": "AWS::FMS::Policy", "Properties": { "ExcludeResourceTags": true, "ResourceTags": [ { "Key": "resourceTag1", "Value": "value" }, { "Key": "resourceTag2", "Value": "value" } ], "IncludeMap": { "ACCOUNT": [ { "Ref": "AWS::AccountId" } ] }, "PolicyName": "TaggedPolicy", "RemediationEnabled": false, "ResourceType": "ResourceTypeList", "ResourceTypeList": [ "AWS::ElasticLoadBalancingV2::LoadBalancer", "AWS::EC2::EIP" ], "SecurityServicePolicyData": { "Type": "SHIELD_ADVANCED" }, "Tags": [ { "Key": "tag1", "Value": "value" }, { "Key": "tag2", "Value": "value" } ] } }

创建 Firewall Manager 通用安全组策略

下面显示了一个示例 Firewall Manager 通用安全组策略。

YAML

Policy: Type: AWS::FMS::Policy Properties: ExcludeResourceTags: false PolicyName: SecurityGroupsCommonsPolicy RemediationEnabled: false ResourceType: AWS::EC2::Instance SecurityServicePolicyData: Type: SECURITY_GROUPS_COMMON ManagedServiceData: !Sub '{"type":"SECURITY_GROUPS_COMMON", "revertManualSecurityGroupChanges":true, "securityGroups":[{"id":"${SecurityGroup.GroupId}"}]}'

JSON

"Policy": { "Type": "AWS::FMS::Policy", "Properties": { "ExcludeResourceTags": false, "PolicyName": "SecurityGroupsCommonsPolicy", "RemediationEnabled": false, "ResourceType": "AWS::EC2::Instance", "SecurityServicePolicyData": { "Type": "SECURITY_GROUPS_COMMON", "ManagedServiceData": { "Fn::Sub": "{\"type\":\"SECURITY_GROUPS_COMMON\",\"revertManualSecurityGroupChanges\":true,\"securityGroups\":[{\"id\":\"${SecurityGroup.GroupId}\"}]}" } } } }

创建 Firewall Manager 内容审计安全组策略

下面显示了一个示例 Firewall Manager 使用情况审计安全组策略。

YAML

PolicySGContentAudit: Type: AWS::FMS::Policy Properties: ExcludeResourceTags: false PolicyName: Policy RemediationEnabled: false ResourceType: AWS::EC2::Instance SecurityServicePolicyData: Type: SECURITY_GROUPS_CONTENT_AUDIT ManagedServiceData: !Sub '{"type":"SECURITY_GROUPS_CONTENT_AUDIT", "securityGroupAction":{"type":"ALLOW"}, "securityGroups":[ {"id":"${SecurityGroup.GroupId}"} ]}'

JSON

"PolicySGContentAudit": { "Type": "AWS::FMS::Policy", "Properties": { "ExcludeResourceTags": false, "PolicyName": "Policy", "RemediationEnabled": false, "ResourceType": "AWS::EC2::Instance", "SecurityServicePolicyData": { "Type": "SECURITY_GROUPS_CONTENT_AUDIT", "ManagedServiceData": { "Fn::Sub": "{\"type\":\"SECURITY_GROUPS_CONTENT_AUDIT\",\"securityGroupAction\":{\"type\":\"ALLOW\"},\"securityGroups\":[{\"id\":\"${SecurityGroup.GroupId}\"}]}" } } } }

创建 Firewall Manager 使用情况审计安全组策略

下面显示了一个示例 Firewall Manager 使用情况审计安全组策略。

YAML

PolicySGUsageAudit: Type: AWS::FMS::Policy Properties: ExcludeResourceTags: false PolicyName: Policy RemediationEnabled: false ResourceType: AWS::EC2::SecurityGroup SecurityServicePolicyData: Type: SECURITY_GROUPS_USAGE_AUDIT ManagedServiceData: !Sub '{"type":"SECURITY_GROUPS_USAGE_AUDIT", "deleteUnusedSecurityGroups":false, "coalesceRedundantSecurityGroups":false, "optionalDelayForUnusedInMinutes":null}'

JSON

"PolicySGUsageAudit": { "Type": "AWS::FMS::Policy", "Properties": { "ExcludeResourceTags": false, "PolicyName": "PolicySGUsageAudit", "RemediationEnabled": false, "ResourceType": "AWS::EC2::SecurityGroup", "SecurityServicePolicyData": { "Type": "SECURITY_GROUPS_USAGE_AUDIT", "ManagedServiceData": { "Fn::Sub": "{\"type\":\"SECURITY_GROUPS_USAGE_AUDIT\",\"deleteUnusedSecurityGroups\":false,\"coalesceRedundantSecurityGroups\":false,\"optionalDelayForUnusedInMinutes\":null}" } } } }