Interface ICfnPolicyProps
Properties for defining a CfnPolicy
.
Namespace: Amazon.CDK.AWS.FMS
Assembly: Amazon.CDK.Lib.dll
Syntax (csharp)
public interface ICfnPolicyProps
Syntax (vb)
Public Interface ICfnPolicyProps
Remarks
See: http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-fms-policy.html
ExampleMetadata: fixture=_generated
Examples
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
using Amazon.CDK.AWS.FMS;
var cfnPolicyProps = new CfnPolicyProps {
ExcludeResourceTags = false,
PolicyName = "policyName",
RemediationEnabled = false,
SecurityServicePolicyData = new SecurityServicePolicyDataProperty {
Type = "type",
// the properties below are optional
ManagedServiceData = "managedServiceData",
PolicyOption = new PolicyOptionProperty {
NetworkAclCommonPolicy = new NetworkAclCommonPolicyProperty {
NetworkAclEntrySet = new NetworkAclEntrySetProperty {
ForceRemediateForFirstEntries = false,
ForceRemediateForLastEntries = false,
// the properties below are optional
FirstEntries = new [] { new NetworkAclEntryProperty {
Egress = false,
Protocol = "protocol",
RuleAction = "ruleAction",
// the properties below are optional
CidrBlock = "cidrBlock",
IcmpTypeCode = new IcmpTypeCodeProperty {
Code = 123,
Type = 123
},
Ipv6CidrBlock = "ipv6CidrBlock",
PortRange = new PortRangeProperty {
From = 123,
To = 123
}
} },
LastEntries = new [] { new NetworkAclEntryProperty {
Egress = false,
Protocol = "protocol",
RuleAction = "ruleAction",
// the properties below are optional
CidrBlock = "cidrBlock",
IcmpTypeCode = new IcmpTypeCodeProperty {
Code = 123,
Type = 123
},
Ipv6CidrBlock = "ipv6CidrBlock",
PortRange = new PortRangeProperty {
From = 123,
To = 123
}
} }
}
},
NetworkFirewallPolicy = new NetworkFirewallPolicyProperty {
FirewallDeploymentModel = "firewallDeploymentModel"
},
ThirdPartyFirewallPolicy = new ThirdPartyFirewallPolicyProperty {
FirewallDeploymentModel = "firewallDeploymentModel"
}
}
},
// the properties below are optional
DeleteAllPolicyResources = false,
ExcludeMap = new Dictionary<string, string[]?> {
{ "account", new [] { "account" } },
{ "orgunit", new [] { "orgunit" } }
},
IncludeMap = new Dictionary<string, string[]?> {
{ "account", new [] { "account" } },
{ "orgunit", new [] { "orgunit" } }
},
PolicyDescription = "policyDescription",
ResourcesCleanUp = false,
ResourceSetIds = new [] { "resourceSetIds" },
ResourceTagLogicalOperator = "resourceTagLogicalOperator",
ResourceTags = new [] { new ResourceTagProperty {
Key = "key",
// the properties below are optional
Value = "value"
} },
ResourceType = "resourceType",
ResourceTypeList = new [] { "resourceTypeList" },
Tags = new [] { new PolicyTagProperty {
Key = "key",
Value = "value"
} }
};
Synopsis
Properties
Delete |
Used when deleting a policy. If |
Exclude |
Specifies the AWS account IDs and AWS Organizations organizational units (OUs) to exclude from the policy. |
Exclude |
Used only when tags are specified in the |
Include |
Specifies the AWS account IDs and AWS Organizations organizational units (OUs) to include in the policy. |
Policy |
Your description of the AWS Firewall Manager policy. |
Policy |
The name of the AWS Firewall Manager policy. |
Remediation |
Indicates if the policy should be automatically applied to new resources. |
Resources |
Indicates whether AWS Firewall Manager should automatically remove protections from resources that leave the policy scope and clean up resources that Firewall Manager is managing for accounts when those accounts leave policy scope. |
Resource |
The unique identifiers of the resource sets used by the policy. |
Resource |
Specifies whether to combine multiple resource tags with AND, so that a resource must have all tags to be included or excluded, or OR, so that a resource must have at least one tag. |
Resource |
An array of |
Resource |
The type of resource protected by or in scope of the policy. |
Resource |
An array of |
Security |
Details about the security service that is being used to protect the resources. |
Tags | A collection of key:value pairs associated with an AWS resource. |
Properties
DeleteAllPolicyResources
Used when deleting a policy. If true
, Firewall Manager performs cleanup according to the policy type.
virtual object DeleteAllPolicyResources { get; }
Property Value
System.
Remarks
For AWS WAF and Shield Advanced policies, Firewall Manager does the following:
For security group policies, Firewall Manager does the following for each security group in the policy:
After the cleanup, in-scope resources are no longer protected by web ACLs in this policy. Protection of out-of-scope resources remains unchanged. Scope is determined by tags that you create and accounts that you associate with the policy. When creating the policy, if you specify that only resources in specific accounts or with specific tags are in scope of the policy, those accounts and resources are handled by the policy. All others are out of scope. If you don't specify tags or accounts, all resources are in scope.
ExcludeMap
Specifies the AWS account IDs and AWS Organizations organizational units (OUs) to exclude from the policy.
virtual object ExcludeMap { get; }
Property Value
System.
Remarks
Specifying an OU is the equivalent of specifying all accounts in the OU and in any of its child OUs, including any child OUs and accounts that are added at a later time.
You can specify inclusions or exclusions, but not both. If you specify an IncludeMap
, AWS Firewall Manager applies the policy to all accounts specified by the IncludeMap
, and does not evaluate any ExcludeMap
specifications. If you do not specify an IncludeMap
, then Firewall Manager applies the policy to all accounts except for those specified by the ExcludeMap
.
You can specify account IDs, OUs, or a combination:
ExcludeResourceTags
Used only when tags are specified in the ResourceTags
property.
object ExcludeResourceTags { get; }
Property Value
System.
Remarks
If this property is True
, resources with the specified tags are not in scope of the policy. If it's False
, only resources with the specified tags are in scope of the policy.
IncludeMap
Specifies the AWS account IDs and AWS Organizations organizational units (OUs) to include in the policy.
virtual object IncludeMap { get; }
Property Value
System.
Remarks
Specifying an OU is the equivalent of specifying all accounts in the OU and in any of its child OUs, including any child OUs and accounts that are added at a later time.
You can specify inclusions or exclusions, but not both. If you specify an IncludeMap
, AWS Firewall Manager applies the policy to all accounts specified by the IncludeMap
, and does not evaluate any ExcludeMap
specifications. If you do not specify an IncludeMap
, then Firewall Manager applies the policy to all accounts except for those specified by the ExcludeMap
.
You can specify account IDs, OUs, or a combination:
PolicyDescription
Your description of the AWS Firewall Manager policy.
virtual string PolicyDescription { get; }
Property Value
System.
Remarks
PolicyName
The name of the AWS Firewall Manager policy.
string PolicyName { get; }
Property Value
System.
Remarks
RemediationEnabled
Indicates if the policy should be automatically applied to new resources.
object RemediationEnabled { get; }
Property Value
System.
Remarks
ResourcesCleanUp
Indicates whether AWS Firewall Manager should automatically remove protections from resources that leave the policy scope and clean up resources that Firewall Manager is managing for accounts when those accounts leave policy scope.
virtual object ResourcesCleanUp { get; }
Property Value
System.
Remarks
For example, Firewall Manager will disassociate a Firewall Manager managed web ACL from a protected customer resource when the customer resource leaves policy scope.
By default, Firewall Manager doesn't remove protections or delete Firewall Manager managed resources.
This option is not available for Shield Advanced or AWS WAF Classic policies.
ResourceSetIds
The unique identifiers of the resource sets used by the policy.
virtual string[] ResourceSetIds { get; }
Property Value
System.
Remarks
ResourceTagLogicalOperator
Specifies whether to combine multiple resource tags with AND, so that a resource must have all tags to be included or excluded, or OR, so that a resource must have at least one tag.
virtual string ResourceTagLogicalOperator { get; }
Property Value
System.
Remarks
ResourceTags
An array of ResourceTag
objects, used to explicitly include resources in the policy scope or explicitly exclude them.
virtual object ResourceTags { get; }
Property Value
System.
Remarks
If this isn't set, then tags aren't used to modify policy scope. See also ExcludeResourceTags
.
ResourceType
The type of resource protected by or in scope of the policy.
virtual string ResourceType { get; }
Property Value
System.
Remarks
This is in the format shown in the AWS Resource Types Reference . To apply this policy to multiple resource types, specify a resource type of ResourceTypeList
and then specify the resource types in a ResourceTypeList
.
The following are valid resource types for each Firewall Manager policy type:
ResourceTypeList
An array of ResourceType
objects.
virtual string[] ResourceTypeList { get; }
Property Value
System.
Remarks
Use this only to specify multiple resource types. To specify a single resource type, use ResourceType
.
SecurityServicePolicyData
Details about the security service that is being used to protect the resources.
object SecurityServicePolicyData { get; }
Property Value
System.
Remarks
This contains the following settings:
Valid values: DNS_FIREWALL
| NETWORK_FIREWALL
| SECURITY_GROUPS_COMMON
| SECURITY_GROUPS_CONTENT_AUDIT
| SECURITY_GROUPS_USAGE_AUDIT
| SHIELD_ADVANCED
| THIRD_PARTY_FIREWALL
| WAFV2
| WAF
"{"type":"DNS_FIREWALL","preProcessRuleGroups":[{"ruleGroupId":"rslvr-frg-1","priority":10}],"postProcessRuleGroups":[{"ruleGroupId":"rslvr-frg-2","priority":9911}]}"
Valid values for <code>preProcessRuleGroups</code> are between 1 and 99. Valid values for <code>postProcessRuleGroups</code> are between 9901 and 10000.
"{"type":"NETWORK_FIREWALL","awsNetworkFirewallConfig":{"networkFirewallStatelessRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test","priority":1}],"networkFirewallStatelessDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessFragmentDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessCustomActions":[{"actionName":"customActionName","actionDefinition":{"publishMetricAction":{"dimensions":[{"value":"metricdimensionvalue"}]}}}],"networkFirewallStatefulRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test"}],"networkFirewallLoggingConfiguration":{"logDestinationConfigs":[{"logDestinationType":"S3","logType":"ALERT","logDestination":{"bucketName":"s3-bucket-name"}},{"logDestinationType":"S3","logType":"FLOW","logDestination":{"bucketName":"s3-bucket-name"}}],"overrideExistingConfig":true}},"firewallDeploymentModel":{"centralizedFirewallDeploymentModel":{"centralizedFirewallOrchestrationConfig":{"inspectionVpcIds":[{"resourceId":"vpc-1234","accountId":"123456789011"}],"firewallCreationConfig":{"endpointLocation":{"availabilityZoneConfigList":[{"availabilityZoneId":null,"availabilityZoneName":"us-east-1a","allowedIPV4CidrList":["10.0.0.0/28"]}]}},"allowedIPV4CidrList":[]}}}}"
To use the distributed deployment model, you must set FirewallDeploymentModel to DISTRIBUTED
.
"{"type":"NETWORK_FIREWALL","networkFirewallStatelessRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test","priority":1}],"networkFirewallStatelessDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessFragmentDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessCustomActions":[{"actionName":"customActionName","actionDefinition":{"publishMetricAction":{"dimensions":[{"value":"metricdimensionvalue"}]}}}],"networkFirewallStatefulRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test"}],"networkFirewallOrchestrationConfig":{"singleFirewallEndpointPerVPC":false,"allowedIPV4CidrList":["10.0.0.0/28","192.168.0.0/28"],"routeManagementAction":"OFF"},"networkFirewallLoggingConfiguration":{"logDestinationConfigs":[{"logDestinationType":"S3","logType":"ALERT","logDestination":{"bucketName":"s3-bucket-name"}},{"logDestinationType":"S3","logType":"FLOW","logDestination":{"bucketName":"s3-bucket-name"}}],"overrideExistingConfig":true}}"
With automatic Availbility Zone configuration, Firewall Manager chooses which Availability Zones to create the endpoints in. To use the distributed deployment model, you must set FirewallDeploymentModel to DISTRIBUTED
.
"{"type":"NETWORK_FIREWALL","networkFirewallStatelessRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test","priority":1}],"networkFirewallStatelessDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessFragmentDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessCustomActions":[{"actionName":"customActionName","actionDefinition":{"publishMetricAction":{"dimensions":[{"value":"metricdimensionvalue"}]}}}],"networkFirewallStatefulRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test"}],"networkFirewallOrchestrationConfig":{"singleFirewallEndpointPerVPC":false,"allowedIPV4CidrList":["10.0.0.0/28","192.168.0.0/28"],"routeManagementAction":"MONITOR","routeManagementTargetTypes":["InternetGateway"]},"networkFirewallLoggingConfiguration":{"logDestinationConfigs":[{"logDestinationType":"S3","logType":"ALERT","logDestination":{"bucketName":"s3-bucket-name"}},{"logDestinationType":"S3","logType": "FLOW","logDestination":{"bucketName":"s3-bucket-name"}}],"overrideExistingConfig":true}}"
To use the distributed deployment model, you must set FirewallDeploymentModel to DISTRIBUTED
.
"{"type":"NETWORK_FIREWALL","networkFirewallStatelessRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test","priority":1}],"networkFirewallStatelessDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessFragmentDefaultActions":["aws:forward_to_sfe","fragmentcustomactionname"],"networkFirewallStatelessCustomActions":[{"actionName":"customActionName", "actionDefinition":{"publishMetricAction":{"dimensions":[{"value":"metricdimensionvalue"}]}}},{"actionName":"fragmentcustomactionname","actionDefinition":{"publishMetricAction":{"dimensions":[{"value":"fragmentmetricdimensionvalue"}]}}}],"networkFirewallStatefulRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test"}],"networkFirewallOrchestrationConfig":{"firewallCreationConfig":{ "endpointLocation":{"availabilityZoneConfigList":[{"availabilityZoneName":"us-east-1a","allowedIPV4CidrList":["10.0.0.0/28"]},{"availabilityZoneName":"us-east-1b","allowedIPV4CidrList":[ "10.0.0.0/28"]}]} },"singleFirewallEndpointPerVPC":false,"allowedIPV4CidrList":null,"routeManagementAction":"OFF","networkFirewallLoggingConfiguration":{"logDestinationConfigs":[{"logDestinationType":"S3","logType":"ALERT","logDestination":{"bucketName":"s3-bucket-name"}},{"logDestinationType":"S3","logType":"FLOW","logDestination":{"bucketName":"s3-bucket-name"}}],"overrideExistingConfig":boolean}}"
With custom Availability Zone configuration, you define which specific Availability Zones to create endpoints in by configuring firewallCreationConfig
. To configure the Availability Zones in firewallCreationConfig
, specify either the availabilityZoneName
or availabilityZoneId
parameter, not both parameters.
To use the distributed deployment model, you must set FirewallDeploymentModel to DISTRIBUTED
.
"{"type":"NETWORK_FIREWALL","networkFirewallStatelessRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateless-rulegroup/test","priority":1}],"networkFirewallStatelessDefaultActions":["aws:forward_to_sfe","customActionName"],"networkFirewallStatelessFragmentDefaultActions":["aws:forward_to_sfe","fragmentcustomactionname"],"networkFirewallStatelessCustomActions":[{"actionName":"customActionName","actionDefinition":{"publishMetricAction":{"dimensions":[{"value":"metricdimensionvalue"}]}}},{"actionName":"fragmentcustomactionname","actionDefinition":{"publishMetricAction":{"dimensions":[{"value":"fragmentmetricdimensionvalue"}]}}}],"networkFirewallStatefulRuleGroupReferences":[{"resourceARN":"arn:aws:network-firewall:us-east-1:123456789011:stateful-rulegroup/test"}],"networkFirewallOrchestrationConfig":{"firewallCreationConfig":{"endpointLocation":{"availabilityZoneConfigList":[{"availabilityZoneName":"us-east-1a","allowedIPV4CidrList":["10.0.0.0/28"]},{"availabilityZoneName":"us-east-1b","allowedIPV4CidrList":["10.0.0.0/28"]}]}},"singleFirewallEndpointPerVPC":false,"allowedIPV4CidrList":null,"routeManagementAction":"MONITOR","routeManagementTargetTypes":["InternetGateway"],"routeManagementConfig":{"allowCrossAZTrafficIfNoEndpoint":true}},"networkFirewallLoggingConfiguration":{"logDestinationConfigs":[{"logDestinationType":"S3","logType":"ALERT","logDestination":{"bucketName":"s3-bucket-name"}},{"logDestinationType":"S3","logType":"FLOW","logDestination":{"bucketName":"s3-bucket-name"}}],"overrideExistingConfig":boolean}}"
To use the distributed deployment model, you must set FirewallDeploymentModel to DISTRIBUTED
.
"{ "type":"THIRD_PARTY_FIREWALL", "thirdPartyFirewall":"PALO_ALTO_NETWORKS_CLOUD_NGFW", "thirdPartyFirewallConfig":{ "thirdPartyFirewallPolicyList":["global-1"] },"firewallDeploymentModel":{"centralizedFirewallDeploymentModel":{"centralizedFirewallOrchestrationConfig":{"inspectionVpcIds":[{"resourceId":"vpc-1234","accountId":"123456789011"}],"firewallCreationConfig":{"endpointLocation":{"availabilityZoneConfigList":[{"availabilityZoneId":null,"availabilityZoneName":"us-east-1a","allowedIPV4CidrList":["10.0.0.0/28"]}]}},"allowedIPV4CidrList":[]}}}}"
To use the distributed deployment model, you must set FirewallDeploymentModel to CENTRALIZED
.
"{"type":"THIRD_PARTY_FIREWALL","thirdPartyFirewall":"PALO_ALTO_NETWORKS_CLOUD_NGFW","thirdPartyFirewallConfig":{"thirdPartyFirewallPolicyList":["global-1"] },"firewallDeploymentModel":{ "distributedFirewallDeploymentModel":{ "distributedFirewallOrchestrationConfig":{"firewallCreationConfig":{"endpointLocation":{ "availabilityZoneConfigList":[ {"availabilityZoneName":"${AvailabilityZone}" } ] } }, "allowedIPV4CidrList":[ ] } } } }"
To use the distributed deployment model, you must set FirewallDeploymentModel to DISTRIBUTED
.
"{"type":"SHIELD_ADVANCED","automaticResponseConfiguration": {"automaticResponseStatus":"ENABLED|IGNORED|DISABLED", "automaticResponseAction":"BLOCK|COUNT"}, "overrideCustomerWebaclClassic":true|false}"
For example: "{"type":"SHIELD_ADVANCED","automaticResponseConfiguration": {"automaticResponseStatus":"ENABLED", "automaticResponseAction":"COUNT"}}"
The default value for automaticResponseStatus
is IGNORED
. The value for automaticResponseAction
is only required when automaticResponseStatus
is set to ENABLED
. The default value for overrideCustomerWebaclClassic
is false
.
For other resource types that you can protect with a Shield Advanced policy, this ManagedServiceData
configuration is an empty string.
"{"type":"WAFV2","preProcessRuleGroups":[{"ruleGroupArn":null,"overrideAction":{"type":"NONE"},"managedRuleGroupIdentifier":{"version":null,"vendorName":"AWS","managedRuleGroupName":"AWSManagedRulesAmazonIpReputationList"},"ruleGroupType":"ManagedRuleGroup","excludeRules":[{"name":"NoUserAgent_HEADER"}]}],"postProcessRuleGroups":[],"defaultAction":{"type":"ALLOW"},"overrideCustomerWebACLAssociation":false,"loggingConfiguration":{"logDestinationConfigs":["arn:aws:firehose:us-west-2:12345678912:deliverystream/aws-waf-logs-fms-admin-destination"],"redactedFields":[{"redactedFieldType":"SingleHeader","redactedFieldValue":"Cookies"},{"redactedFieldType":"Method"}]}}"
In the loggingConfiguration
, you can specify one logDestinationConfigs
, you can optionally provide up to 20 redactedFields
, and the RedactedFieldType
must be one of URI
, QUERY_STRING
, HEADER
, or METHOD
.
"{"type": "WAF", "ruleGroups": [{"id":"12345678-1bcd-9012-efga-0987654321ab", "overrideAction" : {"type": "COUNT"}}], "defaultAction": {"type": "BLOCK"}}"
"{"type":"WAFV2","preProcessRuleGroups":[{"ruleGroupArn":null,"overrideAction":{"type":"NONE"},"managedRuleGroupIdentifier":{"versionEnabled":true,"version":"Version_2.0","vendorName":"AWS","managedRuleGroupName":"AWSManagedRulesCommonRuleSet"},"ruleGroupType":"ManagedRuleGroup","excludeRules":[{"name":"NoUserAgent_HEADER"}]}],"postProcessRuleGroups":[],"defaultAction":{"type":"ALLOW"},"overrideCustomerWebACLAssociation":false,"loggingConfiguration":{"logDestinationConfigs":["arn:aws:firehose:us-west-2:12345678912:deliverystream/aws-waf-logs-fms-admin-destination"],"redactedFields":[{"redactedFieldType":"SingleHeader","redactedFieldValue":"Cookies"},{"redactedFieldType":"Method"}]}}"
To use a specific version of a AWS WAF managed rule group in your Firewall Manager policy, you must set versionEnabled
to true
, and set version
to the version you'd like to use. If you don't set versionEnabled
to true
, or if you omit versionEnabled
, then Firewall Manager uses the default version of the AWS WAF managed rule group.
"{"type":"SECURITY_GROUPS_COMMON","revertManualSecurityGroupChanges":false,"exclusiveResourceSecurityGroupManagement":false, "applyToAllEC2InstanceENIs":false,"securityGroups":[{"id":" sg-000e55995d61a06bd"}]}"
"{"type":"SECURITY_GROUPS_COMMON","revertManualSecurityGroupChanges":false,"exclusiveResourceSecurityGroupManagement":false, "applyToAllEC2InstanceENIs":false,"includeSharedVPC":true,"securityGroups":[{"id":" sg-000e55995d61a06bd"}]}"
"{"type":"SECURITY_GROUPS_CONTENT_AUDIT","securityGroups":[{"id":"sg-000e55995d61a06bd"}],"securityGroupAction":{"type":"ALLOW"}}"
The security group action for content audit can be ALLOW
or DENY
. For ALLOW
, all in-scope security group rules must be within the allowed range of the policy's security group rules. For DENY
, all in-scope security group rules must not contain a value or a range that matches a rule value or range in the policy security group.
"{"type":"SECURITY_GROUPS_USAGE_AUDIT","deleteUnusedSecurityGroups":true,"coalesceRedundantSecurityGroups":true}"
Tags
A collection of key:value pairs associated with an AWS resource.
virtual CfnPolicy.IPolicyTagProperty[] Tags { get; }
Property Value
Cfn
Remarks
The key:value pair can be anything you define. Typically, the tag key represents a category (such as "environment") and the tag value represents a specific value within that category (such as "test," "development," or "production"). You can add up to 50 tags to each AWS resource.