/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the network-firewall-2020-11-12.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.NetworkFirewall.Model
{
///
/// Container for the parameters to the CreateRuleGroup operation.
/// Creates the specified stateless or stateful rule group, which includes the rules for
/// network traffic inspection, a capacity setting, and tags.
///
///
///
/// You provide your rule group specification in your request using either RuleGroup
/// or Rules
.
///
///
public partial class CreateRuleGroupRequest : AmazonNetworkFirewallRequest
{
private int? _capacity;
private string _description;
private bool? _dryRun;
private EncryptionConfiguration _encryptionConfiguration;
private RuleGroup _ruleGroup;
private string _ruleGroupName;
private string _rules;
private SourceMetadata _sourceMetadata;
private List _tags = new List();
private RuleGroupType _type;
///
/// Gets and sets the property Capacity.
///
/// The maximum operating resources that this rule group can use. Rule group capacity
/// is fixed at creation. When you update a rule group, you are limited to this capacity.
/// When you reference a rule group from a firewall policy, Network Firewall reserves
/// this capacity for the rule group.
///
///
///
/// You can retrieve the capacity that would be required for a rule group before you create
/// the rule group by calling CreateRuleGroup with DryRun
set to TRUE
.
///
///
///
///
/// You can't change or exceed this capacity when you update the rule group, so leave
/// room for your rule group to grow.
///
///
///
/// Capacity for a stateless rule group
///
///
///
/// For a stateless rule group, the capacity required is the sum of the capacity requirements
/// of the individual rules that you expect to have in the rule group.
///
///
///
/// To calculate the capacity requirement of a single rule, multiply the capacity requirement
/// values of each of the rule's match settings:
///
/// -
///
/// A match setting with no criteria specified has a value of 1.
///
///
-
///
/// A match setting with
Any
specified has a value of 1.
///
/// -
///
/// All other match settings have a value equal to the number of elements provided in
/// the setting. For example, a protocol setting ["UDP"] and a source setting ["10.0.0.0/24"]
/// each have a value of 1. A protocol setting ["UDP","TCP"] has a value of 2. A source
/// setting ["10.0.0.0/24","10.0.0.1/24","10.0.0.2/24"] has a value of 3.
///
///
///
/// A rule with no criteria specified in any of its match settings has a capacity requirement
/// of 1. A rule with protocol setting ["UDP","TCP"], source setting ["10.0.0.0/24","10.0.0.1/24","10.0.0.2/24"],
/// and a single specification or no specification for each of the other match settings
/// has a capacity requirement of 6.
///
///
///
/// Capacity for a stateful rule group
///
///
///
/// For a stateful rule group, the minimum capacity required is the number of individual
/// rules that you expect to have in the rule group.
///
///
[AWSProperty(Required=true)]
public int Capacity
{
get { return this._capacity.GetValueOrDefault(); }
set { this._capacity = value; }
}
// Check to see if Capacity property is set
internal bool IsSetCapacity()
{
return this._capacity.HasValue;
}
///
/// Gets and sets the property Description.
///
/// A description of the rule group.
///
///
[AWSProperty(Max=512)]
public string Description
{
get { return this._description; }
set { this._description = value; }
}
// Check to see if Description property is set
internal bool IsSetDescription()
{
return this._description != null;
}
///
/// Gets and sets the property DryRun.
///
/// Indicates whether you want Network Firewall to just check the validity of the request,
/// rather than run the request.
///
///
///
/// If set to TRUE
, Network Firewall checks whether the request can run successfully,
/// but doesn't actually make the requested changes. The call returns the value that the
/// request would return if you ran it with dry run set to FALSE
, but doesn't
/// make additions or changes to your resources. This option allows you to make sure that
/// you have the required permissions to run the request and that your request parameters
/// are valid.
///
///
///
/// If set to FALSE
, Network Firewall makes the requested changes to your
/// resources.
///
///
public bool DryRun
{
get { return this._dryRun.GetValueOrDefault(); }
set { this._dryRun = value; }
}
// Check to see if DryRun property is set
internal bool IsSetDryRun()
{
return this._dryRun.HasValue;
}
///
/// Gets and sets the property EncryptionConfiguration.
///
/// A complex type that contains settings for encryption of your rule group resources.
///
///
public EncryptionConfiguration EncryptionConfiguration
{
get { return this._encryptionConfiguration; }
set { this._encryptionConfiguration = value; }
}
// Check to see if EncryptionConfiguration property is set
internal bool IsSetEncryptionConfiguration()
{
return this._encryptionConfiguration != null;
}
///
/// Gets and sets the property RuleGroup.
///
/// An object that defines the rule group rules.
///
///
///
/// You must provide either this rule group setting or a Rules
setting, but
/// not both.
///
///
///
public RuleGroup RuleGroup
{
get { return this._ruleGroup; }
set { this._ruleGroup = value; }
}
// Check to see if RuleGroup property is set
internal bool IsSetRuleGroup()
{
return this._ruleGroup != null;
}
///
/// Gets and sets the property RuleGroupName.
///
/// The descriptive name of the rule group. You can't change the name of a rule group
/// after you create it.
///
///
[AWSProperty(Required=true, Min=1, Max=128)]
public string RuleGroupName
{
get { return this._ruleGroupName; }
set { this._ruleGroupName = value; }
}
// Check to see if RuleGroupName property is set
internal bool IsSetRuleGroupName()
{
return this._ruleGroupName != null;
}
///
/// Gets and sets the property Rules.
///
/// A string containing stateful rule group rules specifications in Suricata flat format,
/// with one rule per line. Use this to import your existing Suricata compatible rule
/// groups.
///
///
///
/// You must provide either this rules setting or a populated RuleGroup
setting,
/// but not both.
///
///
///
/// You can provide your rule group specification in Suricata flat format through this
/// setting when you create or update your rule group. The call response returns a RuleGroup
/// object that Network Firewall has populated from your string.
///
///
[AWSProperty(Min=0, Max=2000000)]
public string Rules
{
get { return this._rules; }
set { this._rules = value; }
}
// Check to see if Rules property is set
internal bool IsSetRules()
{
return this._rules != null;
}
///
/// Gets and sets the property SourceMetadata.
///
/// A complex type that contains metadata about the rule group that your own rule group
/// is copied from. You can use the metadata to keep track of updates made to the originating
/// rule group.
///
///
public SourceMetadata SourceMetadata
{
get { return this._sourceMetadata; }
set { this._sourceMetadata = value; }
}
// Check to see if SourceMetadata property is set
internal bool IsSetSourceMetadata()
{
return this._sourceMetadata != null;
}
///
/// Gets and sets the property Tags.
///
/// The key:value pairs to associate with the resource.
///
///
[AWSProperty(Min=1, Max=200)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property Type.
///
/// Indicates whether the rule group is stateless or stateful. If the rule group is stateless,
/// it contains stateless rules. If it is stateful, it contains stateful rules.
///
///
[AWSProperty(Required=true)]
public RuleGroupType Type
{
get { return this._type; }
set { this._type = value; }
}
// Check to see if Type property is set
internal bool IsSetType()
{
return this._type != null;
}
}
}