/*
* 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 securityhub-2018-10-26.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.SecurityHub.Model
{
///
/// Provides a consistent format for Security Hub findings. AwsSecurityFinding
/// format allows you to share findings between Amazon Web Services security services
/// and third-party solutions.
///
///
///
/// A finding is a potential security issue generated either by Amazon Web Services services
/// or by the integrated third-party solutions and standards checks.
///
///
///
public partial class AwsSecurityFinding
{
private Action _action;
private string _awsAccountId;
private string _companyName;
private Compliance _compliance;
private int? _confidence;
private string _createdAt;
private int? _criticality;
private string _description;
private FindingProviderFields _findingProviderFields;
private string _firstObservedAt;
private string _generatorId;
private string _id;
private string _lastObservedAt;
private List _malware = new List();
private Network _network;
private List _networkPath = new List();
private Note _note;
private PatchSummary _patchSummary;
private ProcessDetails _process;
private string _productArn;
private Dictionary _productFields = new Dictionary();
private string _productName;
private RecordState _recordState;
private string _region;
private List _relatedFindings = new List();
private Remediation _remediation;
private List _resources = new List();
private bool? _sample;
private string _schemaVersion;
private Severity _severity;
private string _sourceUrl;
private List _threatIntelIndicators = new List();
private List _threats = new List();
private string _title;
private List _types = new List();
private string _updatedAt;
private Dictionary _userDefinedFields = new Dictionary();
private VerificationState _verificationState;
private List _vulnerabilities = new List();
private Workflow _workflow;
private WorkflowState _workflowState;
///
/// Gets and sets the property Action.
///
/// Provides details about an action that affects or that was taken on a resource.
///
///
public Action Action
{
get { return this._action; }
set { this._action = value; }
}
// Check to see if Action property is set
internal bool IsSetAction()
{
return this._action != null;
}
///
/// Gets and sets the property AwsAccountId.
///
/// The Amazon Web Services account ID that a finding is generated in.
///
///
[AWSProperty(Required=true)]
public string AwsAccountId
{
get { return this._awsAccountId; }
set { this._awsAccountId = value; }
}
// Check to see if AwsAccountId property is set
internal bool IsSetAwsAccountId()
{
return this._awsAccountId != null;
}
///
/// Gets and sets the property CompanyName.
///
/// The name of the company for the product that generated the finding.
///
///
///
/// Security Hub populates this attribute automatically for each finding. You cannot update
/// this attribute with BatchImportFindings
or BatchUpdateFindings
.
/// The exception to this is a custom integration.
///
///
///
/// When you use the Security Hub console or API to filter findings by company name, you
/// use this attribute.
///
///
public string CompanyName
{
get { return this._companyName; }
set { this._companyName = value; }
}
// Check to see if CompanyName property is set
internal bool IsSetCompanyName()
{
return this._companyName != null;
}
///
/// Gets and sets the property Compliance.
///
/// This data type is exclusive to findings that are generated as the result of a check
/// run against a specific rule in a supported security standard, such as CIS Amazon Web
/// Services Foundations. Contains security standard-related finding details.
///
///
public Compliance Compliance
{
get { return this._compliance; }
set { this._compliance = value; }
}
// Check to see if Compliance property is set
internal bool IsSetCompliance()
{
return this._compliance != null;
}
///
/// Gets and sets the property Confidence.
///
/// A finding's confidence. Confidence is defined as the likelihood that a finding accurately
/// identifies the behavior or issue that it was intended to identify.
///
///
///
/// Confidence is scored on a 0-100 basis using a ratio scale, where 0 means zero percent
/// confidence and 100 means 100 percent confidence.
///
///
public int Confidence
{
get { return this._confidence.GetValueOrDefault(); }
set { this._confidence = value; }
}
// Check to see if Confidence property is set
internal bool IsSetConfidence()
{
return this._confidence.HasValue;
}
///
/// Gets and sets the property CreatedAt.
///
/// Indicates when the security findings provider created the potential security issue
/// that a finding captured.
///
///
///
/// Uses the date-time
format specified in RFC
/// 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces,
/// and date and time should be separated by T
. For example, 2020-03-22T13:22:13.933Z
.
///
///
[AWSProperty(Required=true)]
public string CreatedAt
{
get { return this._createdAt; }
set { this._createdAt = value; }
}
// Check to see if CreatedAt property is set
internal bool IsSetCreatedAt()
{
return this._createdAt != null;
}
///
/// Gets and sets the property Criticality.
///
/// The level of importance assigned to the resources associated with the finding.
///
///
///
/// A score of 0 means that the underlying resources have no criticality, and a score
/// of 100 is reserved for the most critical resources.
///
///
public int Criticality
{
get { return this._criticality.GetValueOrDefault(); }
set { this._criticality = value; }
}
// Check to see if Criticality property is set
internal bool IsSetCriticality()
{
return this._criticality.HasValue;
}
///
/// Gets and sets the property Description.
///
/// A finding's description.
///
///
///
/// In this release, Description
is a required property.
///
///
///
[AWSProperty(Required=true)]
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 FindingProviderFields.
///
/// In a BatchImportFindings
request, finding providers use FindingProviderFields
/// to provide and update their own values for confidence, criticality, related findings,
/// severity, and types.
///
///
public FindingProviderFields FindingProviderFields
{
get { return this._findingProviderFields; }
set { this._findingProviderFields = value; }
}
// Check to see if FindingProviderFields property is set
internal bool IsSetFindingProviderFields()
{
return this._findingProviderFields != null;
}
///
/// Gets and sets the property FirstObservedAt.
///
/// Indicates when the security findings provider first observed the potential security
/// issue that a finding captured.
///
///
///
/// Uses the date-time
format specified in RFC
/// 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces,
/// and date and time should be separated by T
. For example, 2020-03-22T13:22:13.933Z
.
///
///
public string FirstObservedAt
{
get { return this._firstObservedAt; }
set { this._firstObservedAt = value; }
}
// Check to see if FirstObservedAt property is set
internal bool IsSetFirstObservedAt()
{
return this._firstObservedAt != null;
}
///
/// Gets and sets the property GeneratorId.
///
/// The identifier for the solution-specific component (a discrete unit of logic) that
/// generated a finding. In various security findings providers' solutions, this generator
/// can be called a rule, a check, a detector, a plugin, etc.
///
///
[AWSProperty(Required=true)]
public string GeneratorId
{
get { return this._generatorId; }
set { this._generatorId = value; }
}
// Check to see if GeneratorId property is set
internal bool IsSetGeneratorId()
{
return this._generatorId != null;
}
///
/// Gets and sets the property Id.
///
/// The security findings provider-specific identifier for a finding.
///
///
[AWSProperty(Required=true)]
public string Id
{
get { return this._id; }
set { this._id = value; }
}
// Check to see if Id property is set
internal bool IsSetId()
{
return this._id != null;
}
///
/// Gets and sets the property LastObservedAt.
///
/// Indicates when the security findings provider most recently observed the potential
/// security issue that a finding captured.
///
///
///
/// Uses the date-time
format specified in RFC
/// 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces,
/// and date and time should be separated by T
. For example, 2020-03-22T13:22:13.933Z
.
///
///
public string LastObservedAt
{
get { return this._lastObservedAt; }
set { this._lastObservedAt = value; }
}
// Check to see if LastObservedAt property is set
internal bool IsSetLastObservedAt()
{
return this._lastObservedAt != null;
}
///
/// Gets and sets the property Malware.
///
/// A list of malware related to a finding.
///
///
public List Malware
{
get { return this._malware; }
set { this._malware = value; }
}
// Check to see if Malware property is set
internal bool IsSetMalware()
{
return this._malware != null && this._malware.Count > 0;
}
///
/// Gets and sets the property Network.
///
/// The details of network-related information about a finding.
///
///
public Network Network
{
get { return this._network; }
set { this._network = value; }
}
// Check to see if Network property is set
internal bool IsSetNetwork()
{
return this._network != null;
}
///
/// Gets and sets the property NetworkPath.
///
/// Provides information about a network path that is relevant to a finding. Each entry
/// under NetworkPath
represents a component of that path.
///
///
public List NetworkPath
{
get { return this._networkPath; }
set { this._networkPath = value; }
}
// Check to see if NetworkPath property is set
internal bool IsSetNetworkPath()
{
return this._networkPath != null && this._networkPath.Count > 0;
}
///
/// Gets and sets the property Note.
///
/// A user-defined note added to a finding.
///
///
public Note Note
{
get { return this._note; }
set { this._note = value; }
}
// Check to see if Note property is set
internal bool IsSetNote()
{
return this._note != null;
}
///
/// Gets and sets the property PatchSummary.
///
/// Provides an overview of the patch compliance status for an instance against a selected
/// compliance standard.
///
///
public PatchSummary PatchSummary
{
get { return this._patchSummary; }
set { this._patchSummary = value; }
}
// Check to see if PatchSummary property is set
internal bool IsSetPatchSummary()
{
return this._patchSummary != null;
}
///
/// Gets and sets the property Process.
///
/// The details of process-related information about a finding.
///
///
public ProcessDetails Process
{
get { return this._process; }
set { this._process = value; }
}
// Check to see if Process property is set
internal bool IsSetProcess()
{
return this._process != null;
}
///
/// Gets and sets the property ProductArn.
///
/// The ARN generated by Security Hub that uniquely identifies a product that generates
/// findings. This can be the ARN for a third-party product that is integrated with Security
/// Hub, or the ARN for a custom integration.
///
///
[AWSProperty(Required=true)]
public string ProductArn
{
get { return this._productArn; }
set { this._productArn = value; }
}
// Check to see if ProductArn property is set
internal bool IsSetProductArn()
{
return this._productArn != null;
}
///
/// Gets and sets the property ProductFields.
///
/// A data type where security findings providers can include additional solution-specific
/// details that aren't part of the defined AwsSecurityFinding
format.
///
///
///
/// Can contain up to 50 key-value pairs. For each key-value pair, the key can contain
/// up to 128 characters, and the value can contain up to 2048 characters.
///
///
public Dictionary ProductFields
{
get { return this._productFields; }
set { this._productFields = value; }
}
// Check to see if ProductFields property is set
internal bool IsSetProductFields()
{
return this._productFields != null && this._productFields.Count > 0;
}
///
/// Gets and sets the property ProductName.
///
/// The name of the product that generated the finding.
///
///
///
/// Security Hub populates this attribute automatically for each finding. You cannot update
/// this attribute with BatchImportFindings
or BatchUpdateFindings
.
/// The exception to this is a custom integration.
///
///
///
/// When you use the Security Hub console or API to filter findings by product name, you
/// use this attribute.
///
///
public string ProductName
{
get { return this._productName; }
set { this._productName = value; }
}
// Check to see if ProductName property is set
internal bool IsSetProductName()
{
return this._productName != null;
}
///
/// Gets and sets the property RecordState.
///
/// The record state of a finding.
///
///
public RecordState RecordState
{
get { return this._recordState; }
set { this._recordState = value; }
}
// Check to see if RecordState property is set
internal bool IsSetRecordState()
{
return this._recordState != null;
}
///
/// Gets and sets the property Region.
///
/// The Region from which the finding was generated.
///
///
///
/// Security Hub populates this attribute automatically for each finding. You cannot update
/// it using BatchImportFindings
or BatchUpdateFindings
.
///
///
public string Region
{
get { return this._region; }
set { this._region = value; }
}
// Check to see if Region property is set
internal bool IsSetRegion()
{
return this._region != null;
}
///
/// Gets and sets the property RelatedFindings.
///
/// A list of related findings.
///
///
public List RelatedFindings
{
get { return this._relatedFindings; }
set { this._relatedFindings = value; }
}
// Check to see if RelatedFindings property is set
internal bool IsSetRelatedFindings()
{
return this._relatedFindings != null && this._relatedFindings.Count > 0;
}
///
/// Gets and sets the property Remediation.
///
/// A data type that describes the remediation options for a finding.
///
///
public Remediation Remediation
{
get { return this._remediation; }
set { this._remediation = value; }
}
// Check to see if Remediation property is set
internal bool IsSetRemediation()
{
return this._remediation != null;
}
///
/// Gets and sets the property Resources.
///
/// A set of resource data types that describe the resources that the finding refers to.
///
///
[AWSProperty(Required=true)]
public List Resources
{
get { return this._resources; }
set { this._resources = value; }
}
// Check to see if Resources property is set
internal bool IsSetResources()
{
return this._resources != null && this._resources.Count > 0;
}
///
/// Gets and sets the property Sample.
///
/// Indicates whether the finding is a sample finding.
///
///
public bool Sample
{
get { return this._sample.GetValueOrDefault(); }
set { this._sample = value; }
}
// Check to see if Sample property is set
internal bool IsSetSample()
{
return this._sample.HasValue;
}
///
/// Gets and sets the property SchemaVersion.
///
/// The schema version that a finding is formatted for.
///
///
[AWSProperty(Required=true)]
public string SchemaVersion
{
get { return this._schemaVersion; }
set { this._schemaVersion = value; }
}
// Check to see if SchemaVersion property is set
internal bool IsSetSchemaVersion()
{
return this._schemaVersion != null;
}
///
/// Gets and sets the property Severity.
///
/// A finding's severity.
///
///
public Severity Severity
{
get { return this._severity; }
set { this._severity = value; }
}
// Check to see if Severity property is set
internal bool IsSetSeverity()
{
return this._severity != null;
}
///
/// Gets and sets the property SourceUrl.
///
/// A URL that links to a page about the current finding in the security findings provider's
/// solution.
///
///
public string SourceUrl
{
get { return this._sourceUrl; }
set { this._sourceUrl = value; }
}
// Check to see if SourceUrl property is set
internal bool IsSetSourceUrl()
{
return this._sourceUrl != null;
}
///
/// Gets and sets the property ThreatIntelIndicators.
///
/// Threat intelligence details related to a finding.
///
///
public List ThreatIntelIndicators
{
get { return this._threatIntelIndicators; }
set { this._threatIntelIndicators = value; }
}
// Check to see if ThreatIntelIndicators property is set
internal bool IsSetThreatIntelIndicators()
{
return this._threatIntelIndicators != null && this._threatIntelIndicators.Count > 0;
}
///
/// Gets and sets the property Threats.
///
/// Details about the threat detected in a security finding and the file paths that were
/// affected by the threat.
///
///
public List Threats
{
get { return this._threats; }
set { this._threats = value; }
}
// Check to see if Threats property is set
internal bool IsSetThreats()
{
return this._threats != null && this._threats.Count > 0;
}
///
/// Gets and sets the property Title.
///
/// A finding's title.
///
///
///
/// In this release, Title
is a required property.
///
///
///
[AWSProperty(Required=true)]
public string Title
{
get { return this._title; }
set { this._title = value; }
}
// Check to see if Title property is set
internal bool IsSetTitle()
{
return this._title != null;
}
///
/// Gets and sets the property Types.
///
/// One or more finding types in the format of namespace/category/classifier
/// that classify a finding.
///
///
///
/// Valid namespace values are: Software and Configuration Checks | TTPs | Effects | Unusual
/// Behaviors | Sensitive Data Identifications
///
///
public List Types
{
get { return this._types; }
set { this._types = value; }
}
// Check to see if Types property is set
internal bool IsSetTypes()
{
return this._types != null && this._types.Count > 0;
}
///
/// Gets and sets the property UpdatedAt.
///
/// Indicates when the security findings provider last updated the finding record.
///
///
///
/// Uses the date-time
format specified in RFC
/// 3339 section 5.6, Internet Date/Time Format. The value cannot contain spaces,
/// and date and time should be separated by T
. For example, 2020-03-22T13:22:13.933Z
.
///
///
[AWSProperty(Required=true)]
public string UpdatedAt
{
get { return this._updatedAt; }
set { this._updatedAt = value; }
}
// Check to see if UpdatedAt property is set
internal bool IsSetUpdatedAt()
{
return this._updatedAt != null;
}
///
/// Gets and sets the property UserDefinedFields.
///
/// A list of name/value string pairs associated with the finding. These are custom, user-defined
/// fields added to a finding.
///
///
public Dictionary UserDefinedFields
{
get { return this._userDefinedFields; }
set { this._userDefinedFields = value; }
}
// Check to see if UserDefinedFields property is set
internal bool IsSetUserDefinedFields()
{
return this._userDefinedFields != null && this._userDefinedFields.Count > 0;
}
///
/// Gets and sets the property VerificationState.
///
/// Indicates the veracity of a finding.
///
///
public VerificationState VerificationState
{
get { return this._verificationState; }
set { this._verificationState = value; }
}
// Check to see if VerificationState property is set
internal bool IsSetVerificationState()
{
return this._verificationState != null;
}
///
/// Gets and sets the property Vulnerabilities.
///
/// Provides a list of vulnerabilities associated with the findings.
///
///
public List Vulnerabilities
{
get { return this._vulnerabilities; }
set { this._vulnerabilities = value; }
}
// Check to see if Vulnerabilities property is set
internal bool IsSetVulnerabilities()
{
return this._vulnerabilities != null && this._vulnerabilities.Count > 0;
}
///
/// Gets and sets the property Workflow.
///
/// Provides information about the status of the investigation into a finding.
///
///
public Workflow Workflow
{
get { return this._workflow; }
set { this._workflow = value; }
}
// Check to see if Workflow property is set
internal bool IsSetWorkflow()
{
return this._workflow != null;
}
///
/// Gets and sets the property WorkflowState.
///
/// The workflow state of a finding.
///
///
public WorkflowState WorkflowState
{
get { return this._workflowState; }
set { this._workflowState = value; }
}
// Check to see if WorkflowState property is set
internal bool IsSetWorkflowState()
{
return this._workflowState != null;
}
}
}