AWS SecurityHub

2026/11/04 - AWS SecurityHub - 3 new api methods

Changes  Release Software APIs- GetSoftwareV2, GetSoftwareStatisticsV2 and GetSoftwareResourcesV2 to list software packages with aggregated resource count, get aggregated software statistics, and find the resources that contain a specific software package.

GetSoftwareStatisticsV2 (new) Link ¶

Retrieves aggregated counts of software packages installed on your resources, grouped by a field that you specify. For example, you can return the most common package types or the accounts with the most installed packages.

Each count is the number of package-to-resource pairs that match the grouping value. A package installed on three resources contributes three to the count.

You can use the Scopes parameter to define the data boundary for the query. Currently, Scopes supports AwsOrganizations, which lets you aggregate software from your entire organization or from specific organizational units. Only the delegated administrator account can use Scopes.

This operation doesn't paginate. Use MaxStatisticResults to control how many grouping values are returned.

See also: AWS API Documentation

Request Syntax

client.get_software_statistics_v2(
    GroupByRules=[
        {
            'GroupByField': 'AccountId'|'PackageName'|'PackageVersion'|'PackageType'|'Region'|'ResourceRegion'|'ResourceType'|'ResourceId'|'ResourceProvider'|'ResourceOwnerAccountId'|'ResourceOwnerOrgId'|'ResourceCloudPartition',
            'Filters': {
                'CompositeFilters': [
                    {
                        'StringFilters': [
                            {
                                'FieldName': 'AccountId'|'PackageName'|'PackageVersion'|'PackageType'|'Region'|'ResourceRegion'|'ResourceType'|'ResourceId'|'ResourceProvider'|'ResourceOwnerAccountId'|'ResourceOwnerOrgId'|'ResourceCloudPartition',
                                'Filter': {
                                    'Value': 'string',
                                    'Comparison': 'EQUALS'|'PREFIX'|'NOT_EQUALS'|'PREFIX_NOT_EQUALS'|'CONTAINS'|'NOT_CONTAINS'|'CONTAINS_WORD'
                                }
                            },
                        ],
                        'NestedCompositeFilters': {'... recursive ...'},
                        'Operator': 'AND'|'OR'
                    },
                ],
                'CompositeOperator': 'AND'|'OR'
            }
        },
    ],
    Scopes={
        'AwsOrganizations': [
            {
                'OrganizationId': 'string',
                'OrganizationalUnitId': 'string'
            },
        ]
    },
    SortOrder='asc'|'desc',
    MaxStatisticResults=123
)
type GroupByRules:

list

param GroupByRules:

[REQUIRED]

How software statistics should be aggregated and organized in the response.

  • (dict) --

    Defines the configuration for organizing and categorizing software packages installed on your resources.

    • GroupByField (string) -- [REQUIRED]

      Specifies the attribute that software statistics should be grouped by.

    • Filters (dict) --

      The criteria used to select the software packages included in the statistics. You can nest composite filters up to three levels deep.

      • CompositeFilters (list) --

        A collection of complex filtering conditions that can be applied to software packages.

        • (dict) --

          Enables the creation of criteria for software packages in Security Hub.

          • StringFilters (list) --

            Enables filtering based on string field values.

            • (dict) --

              Enables filtering of software packages based on string field values.

              • FieldName (string) --

                The name of the field.

              • Filter (dict) --

                The string value and comparison operator to filter on. Supported comparisons are EQUALS, NOT_EQUALS, PREFIX, and PREFIX_NOT_EQUALS.

                • Value (string) --

                  The string filter value. Filter values are case sensitive. For example, the product name for control-based findings is Security Hub CSPM. If you provide security hub as the filter value, there's no match.

                • Comparison (string) --

                  The condition to apply to a string value when filtering Security Hub CSPM findings.

                  To search for values that have the filter value, use one of the following comparison operators:

                  • To search for values that include the filter value, use CONTAINS. For example, the filter Title CONTAINS CloudFront matches findings that have a Title that includes the string CloudFront.

                  • To search for values that contain a word matching the filter value, regardless of case, use CONTAINS_WORD. For example, the filter Title CONTAINS_WORD lambda matches a finding whose Title is GuardDuty Lambda Protection, because the Title contains the word Lambda. Including special characters in the filter value might produce unexpected search results.

                  • To search for values that exactly match the filter value, use EQUALS. For example, the filter AwsAccountId EQUALS 123456789012 only matches findings that have an account ID of 123456789012.

                  • To search for values that start with the filter value, use PREFIX. For example, the filter ResourceRegion PREFIX us matches findings that have a ResourceRegion that starts with us. A ResourceRegion that starts with a different value, such as af, ap, or ca, doesn't match.

                  CONTAINS, EQUALS, and PREFIX filters on the same field are joined by OR. A finding matches if it matches any one of those filters. For example, the filters Title CONTAINS CloudFront OR Title CONTAINS CloudWatch match a finding that includes either CloudFront, CloudWatch, or both strings in the title.

                  To search for values that don’t have the filter value, use one of the following comparison operators:

                  • To search for values that exclude the filter value, use NOT_CONTAINS. For example, the filter Title NOT_CONTAINS CloudFront matches findings that have a Title that excludes the string CloudFront.

                  • To search for values other than the filter value, use NOT_EQUALS. For example, the filter AwsAccountId NOT_EQUALS 123456789012 only matches findings that have an account ID other than 123456789012.

                  • To search for values that don't start with the filter value, use PREFIX_NOT_EQUALS. For example, the filter ResourceRegion PREFIX_NOT_EQUALS us matches findings with a ResourceRegion that starts with a value other than us.

                  NOT_CONTAINS, NOT_EQUALS, and PREFIX_NOT_EQUALS filters on the same field are joined by AND. A finding matches only if it matches all of those filters. For example, the filters Title NOT_CONTAINS CloudFront AND Title NOT_CONTAINS CloudWatch match a finding that excludes both CloudFront and CloudWatch in the title.

                  You can’t have both a CONTAINS filter and a NOT_CONTAINS filter on the same field. Similarly, you can't provide both an EQUALS filter and a NOT_EQUALS or PREFIX_NOT_EQUALS filter on the same field. Combining filters in this way returns an error. CONTAINS filters can only be used with other CONTAINS filters. NOT_CONTAINS filters can only be used with other NOT_CONTAINS filters.

                  You can combine PREFIX filters with NOT_EQUALS or PREFIX_NOT_EQUALS filters for the same field. Security Hub CSPM first processes the PREFIX filters, and then the NOT_EQUALS or PREFIX_NOT_EQUALS filters.

                  For example, for the following filters, Security Hub CSPM first identifies findings that have resource types that start with either AwsIam or AwsEc2. It then excludes findings that have a resource type of AwsIamPolicy and findings that have a resource type of AwsEc2NetworkInterface.

                  • ResourceType PREFIX AwsIam

                  • ResourceType PREFIX AwsEc2

                  • ResourceType NOT_EQUALS AwsIamPolicy

                  • ResourceType NOT_EQUALS AwsEc2NetworkInterface

                  The CONTAINS operator works with automation rules V1 and V2. The NOT_CONTAINS operator works only with automation rules V1. The CONTAINS_WORD operator works only in the GetFindingsV2, GetFindingStatisticsV2, GetResourcesV2, and GetResourcesStatisticsV2 APIs. For more information, see Automation rules in the Security Hub CSPM User Guide.

          • NestedCompositeFilters (list) --

            Provides an additional level of filtering, creating a three-layer nested structure. The first layer is a CompositeFilters array with a CompositeOperator ( AND/ OR). The second layer is a CompositeFilter object that contains direct filters and NestedCompositeFilters. The third layer is NestedCompositeFilters, which contains additional filter conditions.

          • Operator (string) --

            The logical operator used to combine multiple filter conditions.

      • CompositeOperator (string) --

        The logical operator used to combine multiple filter conditions in the structure.

type Scopes:

dict

param Scopes:

Limits the results to software on resources from specific organizational units or from the delegated administrator's organization. Only the delegated administrator account can use this parameter. Other accounts receive an AccessDeniedException.

This parameter is optional. If you omit it, the delegated administrator sees statistics from all accounts across the entire organization. Other accounts see only statistics for software on their own resources.

You can specify up to 10 entries in Scopes.AwsOrganizations. If multiple entries are specified, the entries are combined using OR logic.

  • AwsOrganizations (list) --

    A list of Organizations scopes to include in the query results. Each entry in the list specifies an organization or organizational unit to include for the delegated administrator's account. If the list specifies multiple entries, the entries are combined using OR logic.

    • (dict) --

      Specifies an Organizations scope. Data from the specified organization or organizational unit is included in the response.

      To scope to a specific organizational unit, provide OrganizationalUnitId. You can optionally include OrganizationId. If you omit OrganizationId, Security Hub uses the caller's organization ID. To scope to the delegated administrator's entire organization, provide only OrganizationId.

      The organization ID and organizational unit must belong to the delegated administrator's own organization. Each request must use one scoping approach: either scope to the entire organization by providing an AwsOrganizationScope entry with only OrganizationId, or scope to specific organizational units by providing AwsOrganizationScope entries with OrganizationalUnitId. You can't combine both approaches in the same request.

      • OrganizationId (string) --

        The unique identifier (ID) of the organization (for example, o-abcd1234567890). The organization must be the delegated administrator's own organization. If you omit this value and provide OrganizationalUnitId, Security Hub uses the caller's organization ID.

      • OrganizationalUnitId (string) --

        The unique identifier (ID) of the organizational unit (OU) (for example, ou-ab12-cd345678). The OU must exist within the delegated administrator's own organization. When specified, the results include only data from accounts in this OU.

type SortOrder:

string

param SortOrder:

Sorts aggregated statistics by count. The default is descending, which returns the values with the highest counts first.

type MaxStatisticResults:

integer

param MaxStatisticResults:

The maximum number of grouping values to return. Valid values are 1–400. The default is 400.

rtype:

dict

returns:

Response Syntax

{
    'GroupByResults': [
        {
            'GroupByField': 'string',
            'GroupByValues': [
                {
                    'FieldValue': 'string',
                    'Count': 123
                },
            ]
        },
    ]
}

Response Structure

  • (dict) --

    • GroupByResults (list) --

      The aggregated statistics about software based on the specified grouping rule.

      • (dict) --

        Represents finding statistics grouped by GroupedByField.

        • GroupByField (string) --

          The attribute by which filtered security findings should be grouped.

        • GroupByValues (list) --

          An array of grouped values and their respective counts for each GroupByField.

          • (dict) --

            Represents individual aggregated results when grouping security findings for each GroupByField.

            • FieldValue (string) --

              The value of the field by which findings are grouped.

            • Count (integer) --

              The number of findings for a specific FieldValue and GroupByField.

GetSoftwareResourcesV2 (new) Link ¶

Returns a list of resources that contain a specific software package. You identify the package with PackageName and PackageType. To narrow the results to one version of the package, include PackageVersion.

You can use the Scopes parameter to define the data boundary for the query. Currently, Scopes supports AwsOrganizations, which lets you retrieve resources from your entire organization or from specific organizational units. Only the delegated administrator account can use Scopes.

You can use the Filters parameter to further refine results based on resource attributes, such as ResourceType or Region.

See also: AWS API Documentation

Request Syntax

client.get_software_resources_v2(
    PackageName='string',
    PackageType='string',
    PackageVersion='string',
    Filters={
        'CompositeFilters': [
            {
                'StringFilters': [
                    {
                        'FieldName': 'AccountId'|'PackageName'|'PackageVersion'|'PackageType'|'Region'|'ResourceRegion'|'ResourceType'|'ResourceId'|'ResourceProvider'|'ResourceOwnerAccountId'|'ResourceOwnerOrgId'|'ResourceCloudPartition',
                        'Filter': {
                            'Value': 'string',
                            'Comparison': 'EQUALS'|'PREFIX'|'NOT_EQUALS'|'PREFIX_NOT_EQUALS'|'CONTAINS'|'NOT_CONTAINS'|'CONTAINS_WORD'
                        }
                    },
                ],
                'NestedCompositeFilters': {'... recursive ...'},
                'Operator': 'AND'|'OR'
            },
        ],
        'CompositeOperator': 'AND'|'OR'
    },
    Scopes={
        'AwsOrganizations': [
            {
                'OrganizationId': 'string',
                'OrganizationalUnitId': 'string'
            },
        ]
    },
    SortCriteria=[
        {
            'Field': 'string',
            'SortOrder': 'asc'|'desc'
        },
    ],
    NextToken='string',
    MaxResults=123
)
type PackageName:

string

param PackageName:

[REQUIRED]

The name of the software package, for example openssl. This value must match the PackageName returned by GetSoftwareV2.

type PackageType:

string

param PackageType:

[REQUIRED]

The type of the software package, for example operating-system, application, or library. This value must match the PackageType returned by GetSoftwareV2.

type PackageVersion:

string

param PackageVersion:

The version of the software package, for example 3.0.8. If you omit this value, the response includes resources that contain any version of the package.

type Filters:

dict

param Filters:

Filters the returned resources based on a set of criteria. You can nest composite filters up to three levels deep.

  • CompositeFilters (list) --

    A collection of complex filtering conditions that can be applied to software packages.

    • (dict) --

      Enables the creation of criteria for software packages in Security Hub.

      • StringFilters (list) --

        Enables filtering based on string field values.

        • (dict) --

          Enables filtering of software packages based on string field values.

          • FieldName (string) --

            The name of the field.

          • Filter (dict) --

            The string value and comparison operator to filter on. Supported comparisons are EQUALS, NOT_EQUALS, PREFIX, and PREFIX_NOT_EQUALS.

            • Value (string) --

              The string filter value. Filter values are case sensitive. For example, the product name for control-based findings is Security Hub CSPM. If you provide security hub as the filter value, there's no match.

            • Comparison (string) --

              The condition to apply to a string value when filtering Security Hub CSPM findings.

              To search for values that have the filter value, use one of the following comparison operators:

              • To search for values that include the filter value, use CONTAINS. For example, the filter Title CONTAINS CloudFront matches findings that have a Title that includes the string CloudFront.

              • To search for values that contain a word matching the filter value, regardless of case, use CONTAINS_WORD. For example, the filter Title CONTAINS_WORD lambda matches a finding whose Title is GuardDuty Lambda Protection, because the Title contains the word Lambda. Including special characters in the filter value might produce unexpected search results.

              • To search for values that exactly match the filter value, use EQUALS. For example, the filter AwsAccountId EQUALS 123456789012 only matches findings that have an account ID of 123456789012.

              • To search for values that start with the filter value, use PREFIX. For example, the filter ResourceRegion PREFIX us matches findings that have a ResourceRegion that starts with us. A ResourceRegion that starts with a different value, such as af, ap, or ca, doesn't match.

              CONTAINS, EQUALS, and PREFIX filters on the same field are joined by OR. A finding matches if it matches any one of those filters. For example, the filters Title CONTAINS CloudFront OR Title CONTAINS CloudWatch match a finding that includes either CloudFront, CloudWatch, or both strings in the title.

              To search for values that don’t have the filter value, use one of the following comparison operators:

              • To search for values that exclude the filter value, use NOT_CONTAINS. For example, the filter Title NOT_CONTAINS CloudFront matches findings that have a Title that excludes the string CloudFront.

              • To search for values other than the filter value, use NOT_EQUALS. For example, the filter AwsAccountId NOT_EQUALS 123456789012 only matches findings that have an account ID other than 123456789012.

              • To search for values that don't start with the filter value, use PREFIX_NOT_EQUALS. For example, the filter ResourceRegion PREFIX_NOT_EQUALS us matches findings with a ResourceRegion that starts with a value other than us.

              NOT_CONTAINS, NOT_EQUALS, and PREFIX_NOT_EQUALS filters on the same field are joined by AND. A finding matches only if it matches all of those filters. For example, the filters Title NOT_CONTAINS CloudFront AND Title NOT_CONTAINS CloudWatch match a finding that excludes both CloudFront and CloudWatch in the title.

              You can’t have both a CONTAINS filter and a NOT_CONTAINS filter on the same field. Similarly, you can't provide both an EQUALS filter and a NOT_EQUALS or PREFIX_NOT_EQUALS filter on the same field. Combining filters in this way returns an error. CONTAINS filters can only be used with other CONTAINS filters. NOT_CONTAINS filters can only be used with other NOT_CONTAINS filters.

              You can combine PREFIX filters with NOT_EQUALS or PREFIX_NOT_EQUALS filters for the same field. Security Hub CSPM first processes the PREFIX filters, and then the NOT_EQUALS or PREFIX_NOT_EQUALS filters.

              For example, for the following filters, Security Hub CSPM first identifies findings that have resource types that start with either AwsIam or AwsEc2. It then excludes findings that have a resource type of AwsIamPolicy and findings that have a resource type of AwsEc2NetworkInterface.

              • ResourceType PREFIX AwsIam

              • ResourceType PREFIX AwsEc2

              • ResourceType NOT_EQUALS AwsIamPolicy

              • ResourceType NOT_EQUALS AwsEc2NetworkInterface

              The CONTAINS operator works with automation rules V1 and V2. The NOT_CONTAINS operator works only with automation rules V1. The CONTAINS_WORD operator works only in the GetFindingsV2, GetFindingStatisticsV2, GetResourcesV2, and GetResourcesStatisticsV2 APIs. For more information, see Automation rules in the Security Hub CSPM User Guide.

      • NestedCompositeFilters (list) --

        Provides an additional level of filtering, creating a three-layer nested structure. The first layer is a CompositeFilters array with a CompositeOperator ( AND/ OR). The second layer is a CompositeFilter object that contains direct filters and NestedCompositeFilters. The third layer is NestedCompositeFilters, which contains additional filter conditions.

      • Operator (string) --

        The logical operator used to combine multiple filter conditions.

  • CompositeOperator (string) --

    The logical operator used to combine multiple filter conditions in the structure.

type Scopes:

dict

param Scopes:

Limits the results to resources from specific organizational units or from the delegated administrator's organization. Only the delegated administrator account can use this parameter. Other accounts receive an AccessDeniedException.

This parameter is optional. If you omit it, the delegated administrator sees resources from all accounts across the entire organization. Other accounts see only their own resources.

You can specify up to 10 entries in Scopes.AwsOrganizations. If multiple entries are specified, the entries are combined using OR logic.

  • AwsOrganizations (list) --

    A list of Organizations scopes to include in the query results. Each entry in the list specifies an organization or organizational unit to include for the delegated administrator's account. If the list specifies multiple entries, the entries are combined using OR logic.

    • (dict) --

      Specifies an Organizations scope. Data from the specified organization or organizational unit is included in the response.

      To scope to a specific organizational unit, provide OrganizationalUnitId. You can optionally include OrganizationId. If you omit OrganizationId, Security Hub uses the caller's organization ID. To scope to the delegated administrator's entire organization, provide only OrganizationId.

      The organization ID and organizational unit must belong to the delegated administrator's own organization. Each request must use one scoping approach: either scope to the entire organization by providing an AwsOrganizationScope entry with only OrganizationId, or scope to specific organizational units by providing AwsOrganizationScope entries with OrganizationalUnitId. You can't combine both approaches in the same request.

      • OrganizationId (string) --

        The unique identifier (ID) of the organization (for example, o-abcd1234567890). The organization must be the delegated administrator's own organization. If you omit this value and provide OrganizationalUnitId, Security Hub uses the caller's organization ID.

      • OrganizationalUnitId (string) --

        The unique identifier (ID) of the organizational unit (OU) (for example, ou-ab12-cd345678). The OU must exist within the delegated administrator's own organization. When specified, the results include only data from accounts in this OU.

type SortCriteria:

list

param SortCriteria:

The resource attribute used to sort the list of returned resources, for example Region or ResourceType. You can specify one sort criterion.

  • (dict) --

    A collection of finding attributes used to sort findings.

    • Field (string) --

      The finding attribute used to sort findings.

    • SortOrder (string) --

      The order used to sort findings.

type NextToken:

string

param NextToken:

The token required for pagination. On your first call, set the value of this parameter to NULL. For subsequent calls, to continue listing data, set the value of this parameter to the value returned in the previous response.

A token expires one hour after it's issued. If you change the request parameters between calls, the token is no longer valid and the request fails with a ValidationException.

type MaxResults:

integer

param MaxResults:

The maximum number of results to return. Valid values are 1–100. The default is 100.

rtype:

dict

returns:

Response Syntax

{
    'SoftwareResources': [
        {
            'AccountId': 'string',
            'ResourceType': 'string',
            'Region': 'string',
            'ResourceId': 'string',
            'ResourceProvider': 'string',
            'ResourceOwnerOrgId': 'string',
            'ResourceOwnerAccountId': 'string',
            'ResourceCloudPartition': 'string',
            'ResourceRegion': 'string'
        },
    ],
    'NextToken': 'string'
}

Response Structure

  • (dict) --

    • SoftwareResources (list) --

      An array of resources that contain the specified software package.

      • (dict) --

        Provides information about a resource that contains a software package.

        • AccountId (string) --

          The Amazon Web Services account that recorded the resource data in Security Hub.

        • ResourceType (string) --

          The type of resource, for example AWS::EC2::Instance or AWS::Lambda::Function.

        • Region (string) --

          The Amazon Web Services Region that recorded the resource data in Security Hub.

        • ResourceId (string) --

          The unique identifier for a resource.

        • ResourceProvider (string) --

          The cloud provider where the resource exists. Valid values are AWS and Azure.

        • ResourceOwnerOrgId (string) --

          The identifier of the cloud organization that owns the resource. For Amazon Web Services resources, this is the Organizations ID. For Azure resources, this is the Azure tenant ID.

        • ResourceOwnerAccountId (string) --

          The identifier of the cloud account that owns the resource. For Amazon Web Services resources, this is the Amazon Web Services account ID. For Azure resources, this is the Azure subscription ID.

        • ResourceCloudPartition (string) --

          The cloud partition where the resource exists. For Amazon Web Services, valid values include aws, aws-cn, and aws-us-gov. This field isn't returned for cloud providers that don't use partitions.

        • ResourceRegion (string) --

          The native cloud region where the resource is located. For Amazon Web Services, this is an Amazon Web Services Region (for example, us-east-1). For Azure resources, this is the Azure region (for example, westus2).

    • NextToken (string) --

      The pagination token to use to request the next page of results. Otherwise, this parameter is null.

GetSoftwareV2 (new) Link ¶

Returns a list of software packages installed on your resources. Each result identifies a package by name, version, and type, and includes the number of resources that contain that package.

You can use the Scopes parameter to define the data boundary for the query. Currently, Scopes supports AwsOrganizations, which lets you retrieve software from your entire organization or from specific organizational units. Only the delegated administrator account can use Scopes.

You can use the Filters parameter to refine results based on package and resource attributes. You can use Scopes and Filters independently or together. When both are provided, Scopes narrows the data set first, and then Filters refines results within that scoped data set.

To list the resources that contain a specific package, use GetSoftwareResourcesV2. To get counts of software grouped by a field, use GetSoftwareStatisticsV2.

See also: AWS API Documentation

Request Syntax

client.get_software_v2(
    Filters={
        'CompositeFilters': [
            {
                'StringFilters': [
                    {
                        'FieldName': 'AccountId'|'PackageName'|'PackageVersion'|'PackageType'|'Region'|'ResourceRegion'|'ResourceType'|'ResourceId'|'ResourceProvider'|'ResourceOwnerAccountId'|'ResourceOwnerOrgId'|'ResourceCloudPartition',
                        'Filter': {
                            'Value': 'string',
                            'Comparison': 'EQUALS'|'PREFIX'|'NOT_EQUALS'|'PREFIX_NOT_EQUALS'|'CONTAINS'|'NOT_CONTAINS'|'CONTAINS_WORD'
                        }
                    },
                ],
                'NestedCompositeFilters': {'... recursive ...'},
                'Operator': 'AND'|'OR'
            },
        ],
        'CompositeOperator': 'AND'|'OR'
    },
    Scopes={
        'AwsOrganizations': [
            {
                'OrganizationId': 'string',
                'OrganizationalUnitId': 'string'
            },
        ]
    },
    SortCriteria=[
        {
            'Field': 'string',
            'SortOrder': 'asc'|'desc'
        },
    ],
    NextToken='string',
    MaxResults=123
)
type Filters:

dict

param Filters:

Filters software packages based on a set of criteria. You can nest composite filters up to three levels deep.

  • CompositeFilters (list) --

    A collection of complex filtering conditions that can be applied to software packages.

    • (dict) --

      Enables the creation of criteria for software packages in Security Hub.

      • StringFilters (list) --

        Enables filtering based on string field values.

        • (dict) --

          Enables filtering of software packages based on string field values.

          • FieldName (string) --

            The name of the field.

          • Filter (dict) --

            The string value and comparison operator to filter on. Supported comparisons are EQUALS, NOT_EQUALS, PREFIX, and PREFIX_NOT_EQUALS.

            • Value (string) --

              The string filter value. Filter values are case sensitive. For example, the product name for control-based findings is Security Hub CSPM. If you provide security hub as the filter value, there's no match.

            • Comparison (string) --

              The condition to apply to a string value when filtering Security Hub CSPM findings.

              To search for values that have the filter value, use one of the following comparison operators:

              • To search for values that include the filter value, use CONTAINS. For example, the filter Title CONTAINS CloudFront matches findings that have a Title that includes the string CloudFront.

              • To search for values that contain a word matching the filter value, regardless of case, use CONTAINS_WORD. For example, the filter Title CONTAINS_WORD lambda matches a finding whose Title is GuardDuty Lambda Protection, because the Title contains the word Lambda. Including special characters in the filter value might produce unexpected search results.

              • To search for values that exactly match the filter value, use EQUALS. For example, the filter AwsAccountId EQUALS 123456789012 only matches findings that have an account ID of 123456789012.

              • To search for values that start with the filter value, use PREFIX. For example, the filter ResourceRegion PREFIX us matches findings that have a ResourceRegion that starts with us. A ResourceRegion that starts with a different value, such as af, ap, or ca, doesn't match.

              CONTAINS, EQUALS, and PREFIX filters on the same field are joined by OR. A finding matches if it matches any one of those filters. For example, the filters Title CONTAINS CloudFront OR Title CONTAINS CloudWatch match a finding that includes either CloudFront, CloudWatch, or both strings in the title.

              To search for values that don’t have the filter value, use one of the following comparison operators:

              • To search for values that exclude the filter value, use NOT_CONTAINS. For example, the filter Title NOT_CONTAINS CloudFront matches findings that have a Title that excludes the string CloudFront.

              • To search for values other than the filter value, use NOT_EQUALS. For example, the filter AwsAccountId NOT_EQUALS 123456789012 only matches findings that have an account ID other than 123456789012.

              • To search for values that don't start with the filter value, use PREFIX_NOT_EQUALS. For example, the filter ResourceRegion PREFIX_NOT_EQUALS us matches findings with a ResourceRegion that starts with a value other than us.

              NOT_CONTAINS, NOT_EQUALS, and PREFIX_NOT_EQUALS filters on the same field are joined by AND. A finding matches only if it matches all of those filters. For example, the filters Title NOT_CONTAINS CloudFront AND Title NOT_CONTAINS CloudWatch match a finding that excludes both CloudFront and CloudWatch in the title.

              You can’t have both a CONTAINS filter and a NOT_CONTAINS filter on the same field. Similarly, you can't provide both an EQUALS filter and a NOT_EQUALS or PREFIX_NOT_EQUALS filter on the same field. Combining filters in this way returns an error. CONTAINS filters can only be used with other CONTAINS filters. NOT_CONTAINS filters can only be used with other NOT_CONTAINS filters.

              You can combine PREFIX filters with NOT_EQUALS or PREFIX_NOT_EQUALS filters for the same field. Security Hub CSPM first processes the PREFIX filters, and then the NOT_EQUALS or PREFIX_NOT_EQUALS filters.

              For example, for the following filters, Security Hub CSPM first identifies findings that have resource types that start with either AwsIam or AwsEc2. It then excludes findings that have a resource type of AwsIamPolicy and findings that have a resource type of AwsEc2NetworkInterface.

              • ResourceType PREFIX AwsIam

              • ResourceType PREFIX AwsEc2

              • ResourceType NOT_EQUALS AwsIamPolicy

              • ResourceType NOT_EQUALS AwsEc2NetworkInterface

              The CONTAINS operator works with automation rules V1 and V2. The NOT_CONTAINS operator works only with automation rules V1. The CONTAINS_WORD operator works only in the GetFindingsV2, GetFindingStatisticsV2, GetResourcesV2, and GetResourcesStatisticsV2 APIs. For more information, see Automation rules in the Security Hub CSPM User Guide.

      • NestedCompositeFilters (list) --

        Provides an additional level of filtering, creating a three-layer nested structure. The first layer is a CompositeFilters array with a CompositeOperator ( AND/ OR). The second layer is a CompositeFilter object that contains direct filters and NestedCompositeFilters. The third layer is NestedCompositeFilters, which contains additional filter conditions.

      • Operator (string) --

        The logical operator used to combine multiple filter conditions.

  • CompositeOperator (string) --

    The logical operator used to combine multiple filter conditions in the structure.

type Scopes:

dict

param Scopes:

Limits the results to software on resources from specific organizational units or from the delegated administrator's organization. Only the delegated administrator account can use this parameter. Other accounts receive an AccessDeniedException.

This parameter is optional. If you omit it, the delegated administrator sees software from all accounts across the entire organization. Other accounts see only software on their own resources.

You can specify up to 10 entries in Scopes.AwsOrganizations. If multiple entries are specified, the entries are combined using OR logic.

  • AwsOrganizations (list) --

    A list of Organizations scopes to include in the query results. Each entry in the list specifies an organization or organizational unit to include for the delegated administrator's account. If the list specifies multiple entries, the entries are combined using OR logic.

    • (dict) --

      Specifies an Organizations scope. Data from the specified organization or organizational unit is included in the response.

      To scope to a specific organizational unit, provide OrganizationalUnitId. You can optionally include OrganizationId. If you omit OrganizationId, Security Hub uses the caller's organization ID. To scope to the delegated administrator's entire organization, provide only OrganizationId.

      The organization ID and organizational unit must belong to the delegated administrator's own organization. Each request must use one scoping approach: either scope to the entire organization by providing an AwsOrganizationScope entry with only OrganizationId, or scope to specific organizational units by providing AwsOrganizationScope entries with OrganizationalUnitId. You can't combine both approaches in the same request.

      • OrganizationId (string) --

        The unique identifier (ID) of the organization (for example, o-abcd1234567890). The organization must be the delegated administrator's own organization. If you omit this value and provide OrganizationalUnitId, Security Hub uses the caller's organization ID.

      • OrganizationalUnitId (string) --

        The unique identifier (ID) of the organizational unit (OU) (for example, ou-ab12-cd345678). The OU must exist within the delegated administrator's own organization. When specified, the results include only data from accounts in this OU.

type SortCriteria:

list

param SortCriteria:

The software attributes used to sort the list of returned software packages. You can't sort by ResourceCount.

  • (dict) --

    A collection of finding attributes used to sort findings.

    • Field (string) --

      The finding attribute used to sort findings.

    • SortOrder (string) --

      The order used to sort findings.

type NextToken:

string

param NextToken:

The token required for pagination. On your first call, set the value of this parameter to NULL. For subsequent calls, to continue listing data, set the value of this parameter to the value returned in the previous response.

A token expires one hour after it's issued. If you change Filters or SortCriteria between calls, the token is no longer valid and the request fails with a ValidationException.

type MaxResults:

integer

param MaxResults:

The maximum number of results to return. Valid values are 1–100. The default is 100.

rtype:

dict

returns:

Response Syntax

{
    'Software': [
        {
            'PackageName': 'string',
            'PackageVersion': 'string',
            'PackageType': 'string',
            'ResourceCount': 123
        },
    ],
    'NextToken': 'string'
}

Response Structure

  • (dict) --

    • Software (list) --

      An array of software packages returned by the operation.

      • (dict) --

        Provides information about a software package installed on one or more of your resources.

        • PackageName (string) --

          The name of the software package.

        • PackageVersion (string) --

          The version of the software package.

        • PackageType (string) --

          The type of the software package, for example operating-system, application, or library.

        • ResourceCount (integer) --

          The number of resources that contain this software package. To list these resources, call GetSoftwareResourcesV2.

    • NextToken (string) --

      The pagination token to use to request the next page of results. Otherwise, this parameter is null.