Amazon GuardDuty

2023/12/20 - Amazon GuardDuty - 1 new 1 updated api methods

Changes  This release 1) introduces a new API: GetOrganizationStatistics , and 2) adds a new UsageStatisticType TOP_ACCOUNTS_BY_FEATURE for GetUsageStatistics API

GetOrganizationStatistics (new) Link ¶

Retrieves how many active member accounts in your Amazon Web Services organization have each feature enabled within GuardDuty. Only a delegated GuardDuty administrator of an organization can run this API.

When you create a new Amazon Web Services organization, it might take up to 24 hours to generate the statistics for the entire organization.

See also: AWS API Documentation

Request Syntax

client.get_organization_statistics()
rtype

dict

returns

Response Syntax

{
    'OrganizationDetails': {
        'UpdatedAt': datetime(2015, 1, 1),
        'OrganizationStatistics': {
            'TotalAccountsCount': 123,
            'MemberAccountsCount': 123,
            'ActiveAccountsCount': 123,
            'EnabledAccountsCount': 123,
            'CountByFeature': [
                {
                    'Name': 'S3_DATA_EVENTS'|'EKS_AUDIT_LOGS'|'EBS_MALWARE_PROTECTION'|'RDS_LOGIN_EVENTS'|'EKS_RUNTIME_MONITORING'|'LAMBDA_NETWORK_LOGS'|'RUNTIME_MONITORING',
                    'EnabledAccountsCount': 123,
                    'AdditionalConfiguration': [
                        {
                            'Name': 'EKS_ADDON_MANAGEMENT'|'ECS_FARGATE_AGENT_MANAGEMENT',
                            'EnabledAccountsCount': 123
                        },
                    ]
                },
            ]
        }
    }
}

Response Structure

  • (dict) --

    • OrganizationDetails (dict) --

      Information about the statistics report for your organization.

      • UpdatedAt (datetime) --

        The timestamp at which the organization statistics was last updated. This is in UTC format.

      • OrganizationStatistics (dict) --

        Information about the GuardDuty coverage statistics for members in your Amazon Web Services organization.

        • TotalAccountsCount (integer) --

          Total number of accounts in your Amazon Web Services organization.

        • MemberAccountsCount (integer) --

          Total number of accounts in your Amazon Web Services organization that are associated with GuardDuty.

        • ActiveAccountsCount (integer) --

          Total number of active accounts in your Amazon Web Services organization that are associated with GuardDuty.

        • EnabledAccountsCount (integer) --

          Total number of accounts that have enabled GuardDuty.

        • CountByFeature (list) --

          Retrieves the coverage statistics for each feature.

          • (dict) --

            Information about the number of accounts that have enabled a specific feature.

            • Name (string) --

              Name of the feature.

            • EnabledAccountsCount (integer) --

              Total number of accounts that have enabled a specific feature.

            • AdditionalConfiguration (list) --

              Name of the additional configuration.

              • (dict) --

                Information about the coverage statistic for the additional configuration of the feature.

                • Name (string) --

                  Name of the additional configuration within a feature.

                • EnabledAccountsCount (integer) --

                  Total number of accounts that have enabled the additional configuration.

GetUsageStatistics (updated) Link ¶
Changes (request, response)
Request
{'UsageStatisticType': {'TOP_ACCOUNTS_BY_FEATURE'}}
Response
{'UsageStatistics': {'TopAccountsByFeature': [{'Accounts': [{'AccountId': 'string',
                                                             'Total': {'Amount': 'string',
                                                                       'Unit': 'string'}}],
                                               'Feature': 'FLOW_LOGS | '
                                                          'CLOUD_TRAIL | '
                                                          'DNS_LOGS | '
                                                          'S3_DATA_EVENTS | '
                                                          'EKS_AUDIT_LOGS | '
                                                          'EBS_MALWARE_PROTECTION '
                                                          '| RDS_LOGIN_EVENTS '
                                                          '| '
                                                          'LAMBDA_NETWORK_LOGS '
                                                          '| '
                                                          'EKS_RUNTIME_MONITORING '
                                                          '| '
                                                          'FARGATE_RUNTIME_MONITORING '
                                                          '| '
                                                          'EC2_RUNTIME_MONITORING'}]}}

Lists Amazon GuardDuty usage statistics over the last 30 days for the specified detector ID. For newly enabled detectors or data sources, the cost returned will include only the usage so far under 30 days. This may differ from the cost metrics in the console, which project usage over 30 days to provide a monthly cost estimate. For more information, see Understanding How Usage Costs are Calculated.

See also: AWS API Documentation

Request Syntax

client.get_usage_statistics(
    DetectorId='string',
    UsageStatisticType='SUM_BY_ACCOUNT'|'SUM_BY_DATA_SOURCE'|'SUM_BY_RESOURCE'|'TOP_RESOURCES'|'SUM_BY_FEATURES'|'TOP_ACCOUNTS_BY_FEATURE',
    UsageCriteria={
        'AccountIds': [
            'string',
        ],
        'DataSources': [
            'FLOW_LOGS'|'CLOUD_TRAIL'|'DNS_LOGS'|'S3_LOGS'|'KUBERNETES_AUDIT_LOGS'|'EC2_MALWARE_SCAN',
        ],
        'Resources': [
            'string',
        ],
        'Features': [
            'FLOW_LOGS'|'CLOUD_TRAIL'|'DNS_LOGS'|'S3_DATA_EVENTS'|'EKS_AUDIT_LOGS'|'EBS_MALWARE_PROTECTION'|'RDS_LOGIN_EVENTS'|'LAMBDA_NETWORK_LOGS'|'EKS_RUNTIME_MONITORING'|'FARGATE_RUNTIME_MONITORING'|'EC2_RUNTIME_MONITORING',
        ]
    },
    Unit='string',
    MaxResults=123,
    NextToken='string'
)
type DetectorId

string

param DetectorId

[REQUIRED]

The ID of the detector that specifies the GuardDuty service whose usage statistics you want to retrieve.

type UsageStatisticType

string

param UsageStatisticType

[REQUIRED]

The type of usage statistics to retrieve.

type UsageCriteria

dict

param UsageCriteria

[REQUIRED]

Represents the criteria used for querying usage.

  • AccountIds (list) --

    The account IDs to aggregate usage statistics from.

    • (string) --

  • DataSources (list) --

    The data sources to aggregate usage statistics from.

    • (string) --

  • Resources (list) --

    The resources to aggregate usage statistics from. Only accepts exact resource names.

    • (string) --

  • Features (list) --

    The features to aggregate usage statistics from.

    • (string) --

type Unit

string

param Unit

The currency unit you would like to view your usage statistics in. Current valid values are USD.

type MaxResults

integer

param MaxResults

The maximum number of results to return in the response.

type NextToken

string

param NextToken

A token to use for paginating results that are returned in the response. Set the value of this parameter to null for the first request to a list action. For subsequent calls, use the NextToken value returned from the previous request to continue listing results after the first page.

rtype

dict

returns

Response Syntax

{
    'UsageStatistics': {
        'SumByAccount': [
            {
                'AccountId': 'string',
                'Total': {
                    'Amount': 'string',
                    'Unit': 'string'
                }
            },
        ],
        'TopAccountsByFeature': [
            {
                'Feature': 'FLOW_LOGS'|'CLOUD_TRAIL'|'DNS_LOGS'|'S3_DATA_EVENTS'|'EKS_AUDIT_LOGS'|'EBS_MALWARE_PROTECTION'|'RDS_LOGIN_EVENTS'|'LAMBDA_NETWORK_LOGS'|'EKS_RUNTIME_MONITORING'|'FARGATE_RUNTIME_MONITORING'|'EC2_RUNTIME_MONITORING',
                'Accounts': [
                    {
                        'AccountId': 'string',
                        'Total': {
                            'Amount': 'string',
                            'Unit': 'string'
                        }
                    },
                ]
            },
        ],
        'SumByDataSource': [
            {
                'DataSource': 'FLOW_LOGS'|'CLOUD_TRAIL'|'DNS_LOGS'|'S3_LOGS'|'KUBERNETES_AUDIT_LOGS'|'EC2_MALWARE_SCAN',
                'Total': {
                    'Amount': 'string',
                    'Unit': 'string'
                }
            },
        ],
        'SumByResource': [
            {
                'Resource': 'string',
                'Total': {
                    'Amount': 'string',
                    'Unit': 'string'
                }
            },
        ],
        'TopResources': [
            {
                'Resource': 'string',
                'Total': {
                    'Amount': 'string',
                    'Unit': 'string'
                }
            },
        ],
        'SumByFeature': [
            {
                'Feature': 'FLOW_LOGS'|'CLOUD_TRAIL'|'DNS_LOGS'|'S3_DATA_EVENTS'|'EKS_AUDIT_LOGS'|'EBS_MALWARE_PROTECTION'|'RDS_LOGIN_EVENTS'|'LAMBDA_NETWORK_LOGS'|'EKS_RUNTIME_MONITORING'|'FARGATE_RUNTIME_MONITORING'|'EC2_RUNTIME_MONITORING',
                'Total': {
                    'Amount': 'string',
                    'Unit': 'string'
                }
            },
        ]
    },
    'NextToken': 'string'
}

Response Structure

  • (dict) --

    • UsageStatistics (dict) --

      The usage statistics object. If a UsageStatisticType was provided, the objects representing other types will be null.

      • SumByAccount (list) --

        The usage statistic sum organized by account ID.

        • (dict) --

          Contains information on the total of usage based on account IDs.

          • AccountId (string) --

            The Account ID that generated usage.

          • Total (dict) --

            Represents the total of usage for the Account ID.

            • Amount (string) --

              The total usage.

            • Unit (string) --

              The currency unit that the amount is given in.

      • TopAccountsByFeature (list) --

        Lists the top 50 accounts by feature that have generated the most GuardDuty usage, in the order from most to least expensive.

        Currently, this doesn't support RDS_LOGIN_EVENTS .

        • (dict) --

          Information about the usage statistics, calculated by top accounts by feature.

          • Feature (string) --

            Features by which you can generate the usage statistics.

            RDS_LOGIN_EVENTS is currently not supported with topAccountsByFeature .

          • Accounts (list) --

            The accounts that contributed to the total usage cost.

            • (dict) --

              Contains information on the total of usage based on the topmost 50 account IDs.

              • AccountId (string) --

                The unique account ID.

              • Total (dict) --

                Contains the total usage with the corresponding currency unit for that value.

                • Amount (string) --

                  The total usage.

                • Unit (string) --

                  The currency unit that the amount is given in.

      • SumByDataSource (list) --

        The usage statistic sum organized by on data source.

        • (dict) --

          Contains information on the result of usage based on data source type.

          • DataSource (string) --

            The data source type that generated usage.

          • Total (dict) --

            Represents the total of usage for the specified data source.

            • Amount (string) --

              The total usage.

            • Unit (string) --

              The currency unit that the amount is given in.

      • SumByResource (list) --

        The usage statistic sum organized by resource.

        • (dict) --

          Contains information on the sum of usage based on an Amazon Web Services resource.

          • Resource (string) --

            The Amazon Web Services resource that generated usage.

          • Total (dict) --

            Represents the sum total of usage for the specified resource type.

            • Amount (string) --

              The total usage.

            • Unit (string) --

              The currency unit that the amount is given in.

      • TopResources (list) --

        Lists the top 50 resources that have generated the most GuardDuty usage, in order from most to least expensive.

        • (dict) --

          Contains information on the sum of usage based on an Amazon Web Services resource.

          • Resource (string) --

            The Amazon Web Services resource that generated usage.

          • Total (dict) --

            Represents the sum total of usage for the specified resource type.

            • Amount (string) --

              The total usage.

            • Unit (string) --

              The currency unit that the amount is given in.

      • SumByFeature (list) --

        The usage statistic sum organized by feature.

        • (dict) --

          Contains information about the result of the total usage based on the feature.

          • Feature (string) --

            The feature that generated the usage cost.

          • Total (dict) --

            Contains the total usage with the corresponding currency unit for that value.

            • Amount (string) --

              The total usage.

            • Unit (string) --

              The currency unit that the amount is given in.

    • NextToken (string) --

      The pagination parameter to be used on the next list operation to retrieve more items.