Otis API customer configurations service (3.0.0)

Download OpenAPI specification:Download

Otis

The Otis service manages tuning options specified by a customer. The defined options are consumed by various services to operate in accordance with the customer's preferences.

Option Representation

An option is a container for the following properties:

  • id - a unique value (UUID) calculated as hash from name + scope
  • name - a name from the list of supported options
  • scope - some optional scope the option is applied for
  • value - arbitrary JSON data

The option ID is a hash calculated by the service based on the option name and scope combination. It is possible to define only one value for one unique scope.

A client can provide multiple option values with different scope. Consumers can use the resolve endpoint to find the most suitable option value for a target scope. If scope is missing then an option is applied on the account level.

Values can be provided on the deployment level and override the account level values, for example:

"scope": {
    "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
}

The region level values have higher priority, for example:

"scope": {
    "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
    "region_key": "/aws/us-east-1"
}

The VPC level values have the highest priority, for example:

"scope": {
    "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
    "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
}

A value depends on the option name and can contain arbitrary JSON data. Please see the section Supported Options for information about valid option values.

Scope Resolving Algorithm

The service provides the resolve endpoint that helps to find the most specific option value for the target scope in case of multiple values specified in different scope.

The algorithm consists of two parts:

  1. exclude all values defined for more narrow scope than the target one
  2. select the best value having maximum number of matching scope properties

For example, there are 3 values for the same option defined in the different scope:

scope/value 1 2 3
account_id 12345678 12345678 12345678
deployment_id AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA
region_key /aws/us-east-1

If the target scope is: {"deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"} then the value 2 wins because the value 3 is defined for the more narrow scope and the value 1 has fewer matching scope properties.

Supported Options

A client is allowed to specify the following options:

abs_follow_internal_scan_schedules

This option tells an ABS agent to follow either internal-network scanning schedules or agent-based scanning schedules configured.

For example, a deployment may be configured to apply the same set of schedules defined for internal network scanning. In this case any existing agent-based scanning schedules are ignored.

{
    "name": "abs_follow_internal_scan_schedules",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    },
    "value": true
}

By default, agent configurations are generated out of agent-based scanning schedules, and the assumed value is false if the option is undefined.

cross_network_protection

This option declares that a given scope is protected by remote IDS appliances from security infrastructure deployed inside another network. All agents running inside the protected scope connect to IDS appliances running in the protecting network.

A value is an object containing a deployment ID and and asset key of the assigned protecting network, for example, a protected network can be declared like this:

{
    "name": "cross_network_protection",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": {
        "deployment_id": "BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000002"
    }
}

or some protected region can be declared as below:

{
    "name": "cross_network_protection",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "region_key": "/aws/us-east-1"
    },
    "value": {
        "deployment_id": "BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000002"
    }
}

discovery_scan_frequency

This option specifies the number of discovery scans to be performed during a day.

The value can be either the string "automatic" or an integer from [1, 2, 3, 4],

for example:

{
    "name": "discovery_scan_frequency",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    },
    "value": 1
}

external_scan_frequency

This option specifies the external scan frequency.

The value can be one of the strings ["automatic", "daily", "weekly", "monthly"], for example:

{
    "name": "external_scan_frequency",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    },
    "value": "daily"
}

ids_appliance_instance_type

This option specifies an instance type that the installation services shall use to launch IDS appliances inside the defined scope. The option affects deployments in automatic mode only.

The value is a string containing a value from the following supported range:

type size
t3 t3.medium, t3.large, t3.xlarge, t3.2xlarge
m4 m4.large, m4.xlarge, m4.2xlarge, m4.4xlarge, m4.10xlarge, m4.16xlarge
m5 m5.large, m5.xlarge, m5.2xlarge, m5.4xlarge, m5.12xlarge, m5.24xlarge
c4 c4.large, c4.xlarge, c4.2xlarge, c4.4xlarge, c4.8xlarge
c5 c5.large, c5.xlarge, c5.2xlarge, c5.4xlarge, c5.9xlarge, c5.18xlarge

for example:

{
    "name": "ids_appliance_instance_type",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": "c5.large"
}

The following instance types are used as defaults: c5.xlarge, m5.xlarge, c4.xlarge depending on availability, if the option is not defined.

ids_appliances_placement (BETA)

Please notice, this is a BETA option that may be a subject for change.

This option declares placement policy for a selected scope. There are two policies supported so far:

  1. automatic - placement managed by Alert Logic

    By default, we deploy one IDS appliance per every inhabited availability zone inside a protected VPC. Useless appliances are removed, when there are no hosts inside availability zones. Also, one hot appliance is never terminated in one of availability zones for empty VPC.

    Two flavors of automatic management supported now:

    1. Automatic with maximum number of protected zones

      A customer can protect some VPC by IDS appliances running in a limited number of availability zones. An optional integer property max_zones defines the maximum number of zones allowed to have appliances inside. Security infrastructure is removed from empty zones automatically.

      For example:

      {
          "name": "ids_appliances_placement",
          "scope": {
              "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
          },
          "value": {
              "policy": "automatic",
              "max_zones": 1
          }
      }
      
    2. Automatic with a list of protected zones defined explicitly

      A customer can also protect some VPC by appliances inside the specific availability zones only. A policy option zone_keys defines zones allowed to deploy IDS appliances. Security infrastructure is automatically removed from empty zones automatically.

      For example:

      {
          "name": "ids_appliances_placement",
          "scope": {
              "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
              "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
          },
          "value": {
              "policy": "automatic",
              "zone_keys": [
                  "/aws/us-east-1/zone/us-east-1a"
              ]
          }
      }
      
  2. constant - placement predefined by a customer

    Sometimes customers know that there are availability zones with stable infrastructure generating traffic, so IDS appliances should be deployed to the preferred zones only and never removed regardless zone population. A policy option zone_keys defines zones where IDS appliances need to be deployed. Traffic from the rest of availability zones will be handled by the appliances living in the preferred zones.

    For example:

    {
        "name": "ids_appliances_placement",
        "scope": {
            "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
            "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
        },
        "value": {
            "policy": "constant",
            "zone_keys": [
                "/aws/us-east-1/zone/us-east-1a",
                "/aws/us-east-1/zone/us-east-1b"
            ]
        }
    }
    

ids_appliances_scaling (BETA)

Please notice, this is a BETA option that may be a subject for change.

The option affects AWS deployments in the automatic mode only.

This option declares IDS appliances scaling for a selected scope. The option value is an object that specifies the desired policy. There are two policies available so far, automatic and constant.

  1. automatic - the number of appliances adjusted automatically

    Once it is selected, then auto-scaling groups in the protected zones will be automatically adjusted to the actual load (the number of agents collecting traffic) respecting the predefined limits.

    For example:

    {
        "name": "ids_appliances_scaling",
        "scope": {
            "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
            "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
        },
        "value": {
            "policy": "automatic",
            "max_instances": 3
        }
    }
    

    If it is detected that all existing appliances inside the protected zone are too close to overloaded state, a new IDS appliance is launched and existing agents are rebalanced accordingly. The number of appliances can be limited with extra options min_instances affecting the lower boundary, and max_instances (8 by default) for the upper boundary. When it is detected that some appliance is idle or its termination will not affect traffic analysis, the useless appliance is terminated to save resources.

  2. constant - the constant number of appliances predefined in advance

    Sometimes it is well known that there is a network with a stable load (the number of agents collecting traffic) inside the protected infrastructure, so the appropriate number of IDS appliances can be deployed to the preferred zones and never scaled down. A policy option num_instances defines the number of appliances to be launched by the auto-scaling group inside every protected zone.

    For example:

    {
       "name": "ids_appliances_scaling",
        "scope": {
            "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
            "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
        },
        "value": {
            "policy": "constant",
            "num_instances": 1
        }
    }
    

ids_security_resource_tags

This option specifies additional tags to be associated with resources deployed automatically as parts of the IDS security infrastructure. The option affects AWS deployments in the automatic and guided mode only.

Please see security_resource_tags for details.

max_vulnerability_scan_jobs

This option specifies the number of vulnerability scan jobs that can be performed concurrently by a scanner.

The value is an integer, for example:

{
    "name": "max_vulnerability_scan_jobs",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    },
    "value": 10
}

max_discovery_scan_jobs

This option specifies the number of discovery scan jobs that can be performed concurrently by a scanner.

The value is an integer, for example:

{
    "name": "max_discovery_scan_jobs",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": 10
}

no_stats_interval_hours

This option specifies for how long the statistics (log or IDS) should be 0 before joey declares a corresponding vulnerability.

The value is integer and specifies the time interval, in hours. Default (also the maximum) value is 24 hours.

For for example:

{
    "name": "no_start_interval_min",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": 24
}

predefined_security_subnet

This option specifies what subnet shall be used as a security subnet by automatic installation services to deploy scan appliances. The option affects deployments in guided mode only.

The value is a string containing a subnet asset key, for example:

{
    "name": "predefined_security_subnet",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": "/aws/us-east-1/subnet/subnet-00000001"
}

scan_appliance_instance_type

This option specifies an instance type that the installation services shall use to launch scan appliances inside the defined scope. The option affects deployments in automatic or guided mode only.

The value is a string containing a value from the following supported range:

type size
m3 m3.medium
t3 t3.medium,t3.large
c4 c4.large
c5 c5.large,c5.xlarge

for example:

{
    "name": "scan_appliance_instance_type",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": "c5.large"
}

The following instance types are used as defaults: m3.medium, c5.large, c4.large depending on availability, if the option is not defined.

scan_appliances_scaling

This option specifies a scaling policy that deployment services shall follow launching scan appliances inside the protected scope. The option affects AWS deployments in automatic, guided and manual mode only.

The option value is an object that specifies the desired policy. There are two policies available so far, automatic and constant.

If the policy automatic is selected, then auto-scaling groups will be automatically configured to run one scan appliance while not-scanned instances found in the protected VPC, and scaled down to zero once all the targets are scanned, for example:

{
    "name": "scan_appliances_scaling",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": {
        "policy": "automatic"
    }
}

If the policy constant is set, then auto-scaling groups will be configured to run the desired number of scan appliances and never scaled down, for example:

{
    "name": "scan_appliances_scaling",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": {
        "policy": "constant",
        "num_instances": 1
    }
}

By default, our deployment service follows the policy automatic.

scan_security_resource_tags

This option specifies additional tags to be associated with resources deployed automatically as parts of the Scan security infrastructure. The option affects AWS deployments in the automatic and guided mode only.

Please see security_resource_tags for details.

scan_security_subnet_cidr_block

This option specifies a CIDR block to be assigned to a security subnet. A deployment service creates a security subnet in the protected VPC to deploy scan appliances, the created subnet is configured to use some free block of /28 size. Once the option is defined, the created security subnet will be configured with the predefined CIDR block. The option affects AWS deployments in the automatic mode only.

The value is a string specifying a CIDR block with the allowed netmask between /16 and /28, for example:

{
    "name": "scan_security_subnet_cidr_block",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/aws/us-east-1/vpc/vpc-00000000000000001"
    },
    "value": "10.0.1.0/28"
}

security_resource_tags

This option specifies additional tags to be associated with security resources deployed by deployment services. The option affects AWS deployments in the automatic and guided mode only.

The value is an array of objects specifying desired tag keys and values, for example:

{
    "name": "security_resource_tags",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    },
    "value": [
        {
            "key": "Key",
            "value": "Value"
        }
    ]
}

All the list items must be unique. The maximum number of tags allowed is 30. Also, the key prefix AlertLogic is reserved and any prefixed tags will be rejected.

span_port_enabled

This option is a hint that IDS appliances detected in VPC must be configured as span port connected.

The value is boolean, for example:

{
    "name": "span_port_enabled",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "vpc_key": "/dc/network/BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB"
    },
    "value": true
}

vulnerability_scan_frequency

This option specifies the vulnerability scan frequency.

The value can be one of the strings ["automatic", "daily", "weekly", "monthly"], for example:

{
    "name": "vulnerability_scan_frequency",
    "scope": {
        "deployment_id": "AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA"
    },
    "value": "daily"
}

CrossNetworkProtection

Cross network protection operations

List protected networks

List protected networks

Authorizations:
X-AIMS-Auth-Token
path Parameters
account_id
required
string (AccountId) non-empty
Example: 12345678

Alert Logic account ID

query Parameters
deployment_id
string (DeploymentId) non-empty
Example: deployment_id=FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
option_id
string (Uuid) ^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{...
Example: option_id=FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

UUID of an option item stored in the database

vpc_key
string (VpcKey) non-empty
Example: vpc_key=/aws/us-east-1/vpc/vpc-00000000000000001

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List protecting networks

List protecting networks

Authorizations:
X-AIMS-Auth-Token
path Parameters
account_id
required
string (AccountId) non-empty
Example: 12345678

Alert Logic account ID

query Parameters
deployment_id
string (DeploymentId) non-empty
Example: deployment_id=FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF
option_id
string (Uuid) ^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{...
Example: option_id=FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

UUID of an option item stored in the database

vpc_key
string (VpcKey) non-empty
Example: vpc_key=/aws/us-east-1/vpc/vpc-00000000000000001

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Options

Otis options operations

Create option.

Create option.

Authorizations:
X-AIMS-Auth-Token
path Parameters
account_id
required
string (AccountId) non-empty
Example: 12345678

Alert Logic account ID

Request Body schema: application/json

Create option request body

One of
name
string
Value: "abs_follow_internal_scan_schedules"
value
required
boolean
required
object

Responses

Request samples

Content type
application/json
Example
{
  • "name": "abs_follow_internal_scan_schedules",
  • "value": true,
  • "scope": {
    }
}

Response samples

Content type
application/json
Example
{
  • "id": "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF",
  • "name": "custom_routing",
  • "value": true,
  • "scope": {
    }
}

List options.

List options.

path Parameters
account_id
required
string (AccountId) non-empty
Example: 12345678

Alert Logic account ID

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Update option value

Update option value

path Parameters
account_id
required
string (AccountId) non-empty
Example: 12345678

Alert Logic account ID

option_id
required
string (Uuid) ^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{...
Example: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

Otis option ID.

Request Body schema: application/json

Update option request body

One of
name
string
Value: "abs_follow_internal_scan_schedules"
value
required
boolean
required
object

Responses

Request samples

Content type
application/json
Example
{
  • "name": "abs_follow_internal_scan_schedules",
  • "value": true,
  • "scope": {
    }
}

Response samples

Content type
application/json
{
  • "value": "string"
}

Get option.

Get option by id.

Authorizations:
X-AIMS-Auth-Token
path Parameters
account_id
required
string (AccountId) non-empty
Example: 12345678

Alert Logic account ID

option_id
required
string (Uuid) ^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{...
Example: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

Otis option ID.

Responses

Response samples

Content type
application/json
Example
{
  • "id": "FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF",
  • "name": "custom_routing",
  • "value": true,
  • "scope": {
    }
}

Delete option.

Delete option by id.

Authorizations:
X-AIMS-Auth-Token
path Parameters
account_id
required
string (AccountId) non-empty
Example: 12345678

Alert Logic account ID

option_id
required
string (Uuid) ^[0-9a-fA-F]{8}\-[0-9a-fA-F]{4}\-[0-9a-fA-F]{...
Example: FFFFFFFF-FFFF-FFFF-FFFF-FFFFFFFFFFFF

Otis option ID.

Responses