All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.azurenative.securityinsights.kotlin.AnomalySecurityMLAnalyticsSettings.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.azurenative.securityinsights.kotlin

import com.pulumi.azurenative.securityinsights.kotlin.outputs.SecurityMLAnalyticsSettingsDataSourceResponse
import com.pulumi.azurenative.securityinsights.kotlin.outputs.SystemDataResponse
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Any
import kotlin.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import com.pulumi.azurenative.securityinsights.kotlin.outputs.SecurityMLAnalyticsSettingsDataSourceResponse.Companion.toKotlin as securityMLAnalyticsSettingsDataSourceResponseToKotlin
import com.pulumi.azurenative.securityinsights.kotlin.outputs.SystemDataResponse.Companion.toKotlin as systemDataResponseToKotlin

/**
 * Builder for [AnomalySecurityMLAnalyticsSettings].
 */
@PulumiTagMarker
public class AnomalySecurityMLAnalyticsSettingsResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: AnomalySecurityMLAnalyticsSettingsArgs = AnomalySecurityMLAnalyticsSettingsArgs()

    public var opts: CustomResourceOptions = CustomResourceOptions()

    /**
     * @param name The _unique_ name of the resulting resource.
     */
    public fun name(`value`: String) {
        this.name = value
    }

    /**
     * @param block The arguments to use to populate this resource's properties.
     */
    public suspend fun args(block: suspend AnomalySecurityMLAnalyticsSettingsArgsBuilder.() -> Unit) {
        val builder = AnomalySecurityMLAnalyticsSettingsArgsBuilder()
        block(builder)
        this.args = builder.build()
    }

    /**
     * @param block A bag of options that control this resource's behavior.
     */
    public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
        this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
    }

    internal fun build(): AnomalySecurityMLAnalyticsSettings {
        val builtJavaResource =
            com.pulumi.azurenative.securityinsights.AnomalySecurityMLAnalyticsSettings(
                this.name,
                this.args.toJava(),
                this.opts.toJava(),
            )
        return AnomalySecurityMLAnalyticsSettings(builtJavaResource)
    }
}

/**
 * Represents Anomaly Security ML Analytics Settings
 * Azure REST API version: 2023-02-01. Prior API version in Azure Native 1.x: 2022-05-01-preview.
 * ## Example Usage
 * ### Creates or updates a Anomaly Security ML Analytics Settings.
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using AzureNative = Pulumi.AzureNative;
 * return await Deployment.RunAsync(() =>
 * {
 *     var anomalySecurityMLAnalyticsSettings = new AzureNative.SecurityInsights.AnomalySecurityMLAnalyticsSettings("anomalySecurityMLAnalyticsSettings", new()
 *     {
 *         AnomalySettingsVersion = 0,
 *         AnomalyVersion = "1.0.5",
 *         CustomizableObservations = new Dictionary
 *         {
 *             ["multiSelectObservations"] = null,
 *             ["prioritizeExcludeObservations"] = null,
 *             ["singleSelectObservations"] = new[]
 *             {
 *                 new Dictionary
 *                 {
 *                     ["description"] = "Select device vendor of network connection logs from CommonSecurityLog",
 *                     ["name"] = "Device vendor",
 *                     ["rerun"] = "RerunAlways",
 *                     ["sequenceNumber"] = 1,
 *                     ["supportedValues"] = new[]
 *                     {
 *                         "Palo Alto Networks",
 *                         "Fortinet",
 *                         "Check Point",
 *                     },
 *                     ["supportedValuesKql"] = null,
 *                     ["value"] = new[]
 *                     {
 *                         "Palo Alto Networks",
 *                     },
 *                     ["valuesKql"] = null,
 *                 },
 *             },
 *             ["singleValueObservations"] = null,
 *             ["thresholdObservations"] = new[]
 *             {
 *                 new Dictionary
 *                 {
 *                     ["description"] = "Suppress anomalies when daily data transfered (in MB) per hour is less than the chosen value",
 *                     ["maximum"] = "100",
 *                     ["minimum"] = "1",
 *                     ["name"] = "Daily data transfer threshold in MB",
 *                     ["rerun"] = "RerunAlways",
 *                     ["sequenceNumber"] = 1,
 *                     ["value"] = "25",
 *                 },
 *                 new Dictionary
 *                 {
 *                     ["description"] = "Triggers anomalies when number of standard deviations is greater than the chosen value",
 *                     ["maximum"] = "10",
 *                     ["minimum"] = "2",
 *                     ["name"] = "Number of standard deviations",
 *                     ["rerun"] = "RerunAlways",
 *                     ["sequenceNumber"] = 2,
 *                     ["value"] = "3",
 *                 },
 *             },
 *         },
 *         Description = "When account logs from a source region that has rarely been logged in from during the last 14 days, an anomaly is triggered.",
 *         DisplayName = "Login from unusual region",
 *         Enabled = true,
 *         Frequency = "PT1H",
 *         IsDefaultSettings = true,
 *         Kind = "Anomaly",
 *         RequiredDataConnectors = new[]
 *         {
 *             new AzureNative.SecurityInsights.Inputs.SecurityMLAnalyticsSettingsDataSourceArgs
 *             {
 *                 ConnectorId = "AWS",
 *                 DataTypes = new[]
 *                 {
 *                     "AWSCloudTrail",
 *                 },
 *             },
 *         },
 *         ResourceGroupName = "myRg",
 *         SettingsDefinitionId = "f209187f-1d17-4431-94af-c141bf5f23db",
 *         SettingsResourceName = "f209187f-1d17-4431-94af-c141bf5f23db",
 *         SettingsStatus = AzureNative.SecurityInsights.SettingsStatus.Production,
 *         Tactics = new[]
 *         {
 *             AzureNative.SecurityInsights.AttackTactic.Exfiltration,
 *             AzureNative.SecurityInsights.AttackTactic.CommandAndControl,
 *         },
 *         Techniques = new[]
 *         {
 *             "T1037",
 *             "T1021",
 *         },
 *         WorkspaceName = "myWorkspace",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	securityinsights "github.com/pulumi/pulumi-azure-native-sdk/securityinsights/v2"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := securityinsights.NewAnomalySecurityMLAnalyticsSettings(ctx, "anomalySecurityMLAnalyticsSettings", &securityinsights.AnomalySecurityMLAnalyticsSettingsArgs{
 * 			AnomalySettingsVersion: pulumi.Int(0),
 * 			AnomalyVersion:         pulumi.String("1.0.5"),
 * 			CustomizableObservations: pulumi.Any(map[string]interface{}{
 * 				"multiSelectObservations":       nil,
 * 				"prioritizeExcludeObservations": nil,
 * 				"singleSelectObservations": []map[string]interface{}{
 * 					map[string]interface{}{
 * 						"description":    "Select device vendor of network connection logs from CommonSecurityLog",
 * 						"name":           "Device vendor",
 * 						"rerun":          "RerunAlways",
 * 						"sequenceNumber": 1,
 * 						"supportedValues": []string{
 * 							"Palo Alto Networks",
 * 							"Fortinet",
 * 							"Check Point",
 * 						},
 * 						"supportedValuesKql": nil,
 * 						"value": []string{
 * 							"Palo Alto Networks",
 * 						},
 * 						"valuesKql": nil,
 * 					},
 * 				},
 * 				"singleValueObservations": nil,
 * 				"thresholdObservations": []interface{}{
 * 					map[string]interface{}{
 * 						"description":    "Suppress anomalies when daily data transfered (in MB) per hour is less than the chosen value",
 * 						"maximum":        "100",
 * 						"minimum":        "1",
 * 						"name":           "Daily data transfer threshold in MB",
 * 						"rerun":          "RerunAlways",
 * 						"sequenceNumber": 1,
 * 						"value":          "25",
 * 					},
 * 					map[string]interface{}{
 * 						"description":    "Triggers anomalies when number of standard deviations is greater than the chosen value",
 * 						"maximum":        "10",
 * 						"minimum":        "2",
 * 						"name":           "Number of standard deviations",
 * 						"rerun":          "RerunAlways",
 * 						"sequenceNumber": 2,
 * 						"value":          "3",
 * 					},
 * 				},
 * 			}),
 * 			Description:       pulumi.String("When account logs from a source region that has rarely been logged in from during the last 14 days, an anomaly is triggered."),
 * 			DisplayName:       pulumi.String("Login from unusual region"),
 * 			Enabled:           pulumi.Bool(true),
 * 			Frequency:         pulumi.String("PT1H"),
 * 			IsDefaultSettings: pulumi.Bool(true),
 * 			Kind:              pulumi.String("Anomaly"),
 * 			RequiredDataConnectors: securityinsights.SecurityMLAnalyticsSettingsDataSourceArray{
 * 				&securityinsights.SecurityMLAnalyticsSettingsDataSourceArgs{
 * 					ConnectorId: pulumi.String("AWS"),
 * 					DataTypes: pulumi.StringArray{
 * 						pulumi.String("AWSCloudTrail"),
 * 					},
 * 				},
 * 			},
 * 			ResourceGroupName:    pulumi.String("myRg"),
 * 			SettingsDefinitionId: pulumi.String("f209187f-1d17-4431-94af-c141bf5f23db"),
 * 			SettingsResourceName: pulumi.String("f209187f-1d17-4431-94af-c141bf5f23db"),
 * 			SettingsStatus:       pulumi.String(securityinsights.SettingsStatusProduction),
 * 			Tactics: pulumi.StringArray{
 * 				pulumi.String(securityinsights.AttackTacticExfiltration),
 * 				pulumi.String(securityinsights.AttackTacticCommandAndControl),
 * 			},
 * 			Techniques: pulumi.StringArray{
 * 				pulumi.String("T1037"),
 * 				pulumi.String("T1021"),
 * 			},
 * 			WorkspaceName: pulumi.String("myWorkspace"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.azurenative.securityinsights.AnomalySecurityMLAnalyticsSettings;
 * import com.pulumi.azurenative.securityinsights.AnomalySecurityMLAnalyticsSettingsArgs;
 * import com.pulumi.azurenative.securityinsights.inputs.SecurityMLAnalyticsSettingsDataSourceArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var anomalySecurityMLAnalyticsSettings = new AnomalySecurityMLAnalyticsSettings("anomalySecurityMLAnalyticsSettings", AnomalySecurityMLAnalyticsSettingsArgs.builder()
 *             .anomalySettingsVersion(0)
 *             .anomalyVersion("1.0.5")
 *             .customizableObservations(Map.ofEntries(
 *                 Map.entry("multiSelectObservations", null),
 *                 Map.entry("prioritizeExcludeObservations", null),
 *                 Map.entry("singleSelectObservations", Map.ofEntries(
 *                     Map.entry("description", "Select device vendor of network connection logs from CommonSecurityLog"),
 *                     Map.entry("name", "Device vendor"),
 *                     Map.entry("rerun", "RerunAlways"),
 *                     Map.entry("sequenceNumber", 1),
 *                     Map.entry("supportedValues",
 *                         "Palo Alto Networks",
 *                         "Fortinet",
 *                         "Check Point"),
 *                     Map.entry("supportedValuesKql", null),
 *                     Map.entry("value", "Palo Alto Networks"),
 *                     Map.entry("valuesKql", null)
 *                 )),
 *                 Map.entry("singleValueObservations", null),
 *                 Map.entry("thresholdObservations",
 *                     Map.ofEntries(
 *                         Map.entry("description", "Suppress anomalies when daily data transfered (in MB) per hour is less than the chosen value"),
 *                         Map.entry("maximum", "100"),
 *                         Map.entry("minimum", "1"),
 *                         Map.entry("name", "Daily data transfer threshold in MB"),
 *                         Map.entry("rerun", "RerunAlways"),
 *                         Map.entry("sequenceNumber", 1),
 *                         Map.entry("value", "25")
 *                     ),
 *                     Map.ofEntries(
 *                         Map.entry("description", "Triggers anomalies when number of standard deviations is greater than the chosen value"),
 *                         Map.entry("maximum", "10"),
 *                         Map.entry("minimum", "2"),
 *                         Map.entry("name", "Number of standard deviations"),
 *                         Map.entry("rerun", "RerunAlways"),
 *                         Map.entry("sequenceNumber", 2),
 *                         Map.entry("value", "3")
 *                     ))
 *             ))
 *             .description("When account logs from a source region that has rarely been logged in from during the last 14 days, an anomaly is triggered.")
 *             .displayName("Login from unusual region")
 *             .enabled(true)
 *             .frequency("PT1H")
 *             .isDefaultSettings(true)
 *             .kind("Anomaly")
 *             .requiredDataConnectors(SecurityMLAnalyticsSettingsDataSourceArgs.builder()
 *                 .connectorId("AWS")
 *                 .dataTypes("AWSCloudTrail")
 *                 .build())
 *             .resourceGroupName("myRg")
 *             .settingsDefinitionId("f209187f-1d17-4431-94af-c141bf5f23db")
 *             .settingsResourceName("f209187f-1d17-4431-94af-c141bf5f23db")
 *             .settingsStatus("Production")
 *             .tactics(
 *                 "Exfiltration",
 *                 "CommandAndControl")
 *             .techniques(
 *                 "T1037",
 *                 "T1021")
 *             .workspaceName("myWorkspace")
 *             .build());
 *     }
 * }
 * ```
 * ## Import
 * An existing resource can be imported using its type token, name, and identifier, e.g.
 * ```sh
 * $ pulumi import azure-native:securityinsights:AnomalySecurityMLAnalyticsSettings f209187f-1d17-4431-94af-c141bf5f23db /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.OperationalInsights/workspaces/{workspaceName}/providers/Microsoft.SecurityInsights/securityMLAnalyticsSettings/{settingsResourceName}
 * ```
 */
public class AnomalySecurityMLAnalyticsSettings internal constructor(
    override val javaResource: com.pulumi.azurenative.securityinsights.AnomalySecurityMLAnalyticsSettings,
) : KotlinCustomResource(javaResource, AnomalySecurityMLAnalyticsSettingsMapper) {
    /**
     * The anomaly settings version of the Anomaly security ml analytics settings that dictates whether job version gets updated or not.
     */
    public val anomalySettingsVersion: Output?
        get() = javaResource.anomalySettingsVersion().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The anomaly version of the AnomalySecurityMLAnalyticsSettings.
     */
    public val anomalyVersion: Output
        get() = javaResource.anomalyVersion().applyValue({ args0 -> args0 })

    /**
     * The customizable observations of the AnomalySecurityMLAnalyticsSettings.
     */
    public val customizableObservations: Output?
        get() = javaResource.customizableObservations().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The description of the SecurityMLAnalyticsSettings.
     */
    public val description: Output?
        get() = javaResource.description().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The display name for settings created by this SecurityMLAnalyticsSettings.
     */
    public val displayName: Output
        get() = javaResource.displayName().applyValue({ args0 -> args0 })

    /**
     * Determines whether this settings is enabled or disabled.
     */
    public val enabled: Output
        get() = javaResource.enabled().applyValue({ args0 -> args0 })

    /**
     * Etag of the azure resource
     */
    public val etag: Output?
        get() = javaResource.etag().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })

    /**
     * The frequency that this SecurityMLAnalyticsSettings will be run.
     */
    public val frequency: Output
        get() = javaResource.frequency().applyValue({ args0 -> args0 })

    /**
     * Determines whether this anomaly security ml analytics settings is a default settings
     */
    public val isDefaultSettings: Output
        get() = javaResource.isDefaultSettings().applyValue({ args0 -> args0 })

    /**
     * The kind of security ML analytics settings
     * Expected value is 'Anomaly'.
     */
    public val kind: Output
        get() = javaResource.kind().applyValue({ args0 -> args0 })

    /**
     * The last time that this SecurityMLAnalyticsSettings has been modified.
     */
    public val lastModifiedUtc: Output
        get() = javaResource.lastModifiedUtc().applyValue({ args0 -> args0 })

    /**
     * The name of the resource
     */
    public val name: Output
        get() = javaResource.name().applyValue({ args0 -> args0 })

    /**
     * The required data sources for this SecurityMLAnalyticsSettings
     */
    public val requiredDataConnectors: Output>?
        get() = javaResource.requiredDataConnectors().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0.let({ args0 ->
                        securityMLAnalyticsSettingsDataSourceResponseToKotlin(args0)
                    })
                })
            }).orElse(null)
        })

    /**
     * The anomaly settings definition Id
     */
    public val settingsDefinitionId: Output?
        get() = javaResource.settingsDefinitionId().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * The anomaly SecurityMLAnalyticsSettings status
     */
    public val settingsStatus: Output
        get() = javaResource.settingsStatus().applyValue({ args0 -> args0 })

    /**
     * Azure Resource Manager metadata containing createdBy and modifiedBy information.
     */
    public val systemData: Output
        get() = javaResource.systemData().applyValue({ args0 ->
            args0.let({ args0 ->
                systemDataResponseToKotlin(args0)
            })
        })

    /**
     * The tactics of the SecurityMLAnalyticsSettings
     */
    public val tactics: Output>?
        get() = javaResource.tactics().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0
                })
            }).orElse(null)
        })

    /**
     * The techniques of the SecurityMLAnalyticsSettings
     */
    public val techniques: Output>?
        get() = javaResource.techniques().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.map({ args0 ->
                    args0
                })
            }).orElse(null)
        })

    /**
     * The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
     */
    public val type: Output
        get() = javaResource.type().applyValue({ args0 -> args0 })
}

public object AnomalySecurityMLAnalyticsSettingsMapper :
    ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.azurenative.securityinsights.AnomalySecurityMLAnalyticsSettings::class == javaResource::class

    override fun map(javaResource: Resource): AnomalySecurityMLAnalyticsSettings =
        AnomalySecurityMLAnalyticsSettings(
            javaResource as
                com.pulumi.azurenative.securityinsights.AnomalySecurityMLAnalyticsSettings,
        )
}

/**
 * @see [AnomalySecurityMLAnalyticsSettings].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [AnomalySecurityMLAnalyticsSettings].
 */
public suspend fun anomalySecurityMLAnalyticsSettings(
    name: String,
    block: suspend AnomalySecurityMLAnalyticsSettingsResourceBuilder.() -> Unit,
): AnomalySecurityMLAnalyticsSettings {
    val builder = AnomalySecurityMLAnalyticsSettingsResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [AnomalySecurityMLAnalyticsSettings].
 * @param name The _unique_ name of the resulting resource.
 */
public fun anomalySecurityMLAnalyticsSettings(name: String): AnomalySecurityMLAnalyticsSettings {
    val builder = AnomalySecurityMLAnalyticsSettingsResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy