Поделиться через


Оценки Microsoft.Security

Определение ресурсов Bicep

Тип ресурса оценки можно развернуть с помощью операций, предназначенных для следующих операций:

Список измененных свойств в каждой версии API см. в журнала изменений.

Формат ресурса

Чтобы создать ресурс Microsoft.Security/assessments, добавьте следующий Bicep в шаблон.

resource symbolicname 'Microsoft.Security/assessments@2025-05-04-preview' = {
  scope: resourceSymbolicName or scope
  name: 'string'
  properties: {
    additionalData: {
      {customized property}: 'string'
    }
    metadata: {
      assessmentType: 'string'
      categories: [
        'string'
      ]
      description: 'string'
      displayName: 'string'
      implementationEffort: 'string'
      partnerData: {
        partnerName: 'string'
        productName: 'string'
        secret: 'string'
      }
      preview: bool
      remediationDescription: 'string'
      severity: 'string'
      threats: [
        'string'
      ]
      userImpact: 'string'
    }
    partnersData: {
      partnerName: 'string'
      secret: 'string'
    }
    resourceDetails: {
      source: 'string'
      // For remaining properties, see ResourceDetails objects
    }
    risk: {
      attackPathsReferences: [
        'string'
      ]
      isContextualRisk: bool
      level: 'string'
      paths: [
        {
          edges: [
            {
              id: 'string'
              sourceId: 'string'
              targetId: 'string'
            }
          ]
          id: 'string'
          nodes: [
            {
              id: 'string'
              nodePropertiesLabel: [
                'string'
              ]
            }
          ]
        }
      ]
      riskFactors: [
        'string'
      ]
    }
    status: {
      cause: 'string'
      code: 'string'
      description: 'string'
    }
  }
}

Объекты ResourceDetails

Задайте свойство источника , чтобы указать тип объекта.

Для Azureиспользуйте:

{
  source: 'Azure'
}

Для OnPremiseSqlиспользуйте следующую команду:

{
  databaseName: 'string'
  machineName: 'string'
  serverName: 'string'
  source: 'OnPremiseSql'
  sourceComputerId: 'string'
  vmuuid: 'string'
  workspaceId: 'string'
}

Значения свойств

Microsoft.Безопасность/оценки

Имя Описание Ценность
имя Имя ресурса строка (обязательно)
свойства Описывает свойства оценки. SecurityAssessmentPropertiesИлиSecurityAssessmentPropertiesResponse
размах Используется при создании ресурса в области, отличной от области развертывания. Задайте для этого свойства символьное имя ресурса, чтобы применить ресурс расширения.

AssessmentStatusOrAssessmentStatusResponse

Имя Описание Ценность
причина Программный код для причины состояния оценки струна
код Программный код для состояния оценки "Здоровый"
NotApplicable
"Неработоспособный" (обязательный)
описание Удобочитаемое описание состояния оценки струна

AzureResourceDetails

Имя Описание Ценность
источник Платформа, на которой находится оцененный ресурс Azure (обязательно)

Компоненты1Uu4J47SchemasSecurityassessmentpropertiesbasePropertiesRiskPropertiesPathsItemsPropertiesEdgesItems

Имя Описание Ценность
идентификатор Идентификатор ребра строка (обязательно)
sourceId Идентификатор исходного узла строка (обязательно)
targetId Идентификатор целевого узла строка (обязательно)

OnPremiseSqlResourceDetails

Имя Описание Ценность
Имя базы данных Имя базы данных Sql, установленное на компьютере строка (обязательно)
ИмяМашины Имя компьютера строка (обязательно)
имя сервера Имя sql server, установленное на компьютере строка (обязательно)
источник Платформа, на которой находится оцененный ресурс OnPremiseSql (обязательно)
sourceComputerId Идентификатор агента oms, установленный на компьютере строка (обязательно)
vmuuid Уникальный идентификатор компьютера строка (обязательно)
WorkspaceId Идентификатор ресурса Azure рабочей области, к которому подключен компьютер строка (обязательно)

Сведения о ресурсе

Имя Описание Ценность
источник Установите значение "Azure" для типа AzureResourceDetails. Установите значение OnPremiseSql для типа OnPremiseSqlResourceDetails. Azure
OnPremiseSql (обязательно)

БезопасностьОценкаМетаданныеПартнерДанные

Имя Описание Ценность
Имя партнёра Имя компании партнера строка (обязательно)
названиеПродукта Имя продукта партнера, создавшего оценку струна
секрет Секрет проверки подлинности партнера и проверка его создания — только запись струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра. (обязательно)

SecurityAssessmentMetadataProperties

Имя Описание Ценность
Тип оценки Встроенная оценка, основанная на встроенном определении политики Azure, настраиваемая, если оценка основана на пользовательском определении политики Azure. "BuiltIn"
«Встроенная политика»
CustomerManaged
CustomPolicy
'DynamicBuiltIn'
'РучнойВстроенный'
«Встроенная политика руководства»
«РучнаяПользовательская Политика»
"VerifiedPartner" (обязательный)
Категории Массив строк, содержащий любой из:
«AppServices»
"Вычисление"
Контейнер
"Данные"
IdentityAndAccess
IoT
"Сеть"
описание Удобочитаемое описание оценки струна
отображаемое имя Понятное отображаемое имя оценки строка (обязательно)
реализацияУсилия Усилия по реализации, необходимые для устранения этой оценки "Высокий"
"Низкий"
"Умеренный"
partnerData Описание партнера, создавшего оценку БезопасностьОценкаМетаданныеПартнерДанные
Предварительный просмотр Значение true, если эта оценка находится в состоянии предварительной версии выпуска булевая переменная (bool)
исправлениеDescription Читаемое человеком описание того, что следует сделать для устранения этой проблемы безопасности струна
суровость Уровень серьезности оценки "Критический"
"Высокий"
"Низкий"
"Средний" (обязательный)
Угроз Массив строк, содержащий любой из:
AccountBreach
DataExfiltration
DataSpillage
"denialOfService"
'elevationOfPrivilege'
"вредоносныйInsider"
"missingCoverage"
"threatResistance"
Влияние на пользователя Влияние пользователя на оценку "Высокий"
"Низкий"
"Умеренный"

Данные партнера по оценке безопасности

Имя Описание Ценность
Имя партнёра Имя компании партнера строка (обязательно)
секрет секрет для проверки подлинности партнера — только запись струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра. (обязательно)

БезопасностьОценкаСвойстваБазаДополнительные данные

Имя Описание Ценность

БезопасностьОценкаСвойстваБазаРиск

Имя Описание Ценность
attackPathsReferences Пути атаки ссылаются на риск строка[]
isContextualRisk Указывает, является ли риск контекстуальным или статическим булевая переменная (bool)
уровень Уровень риска "Высокий"
"Низкий"
"Средний"
Пути SecurityAssessmentPropertiesBaseRiskPathsItem[]
рискФакторы Факторы добавления базового коэффициента риска строка[]

SecurityAssessmentPropertiesBaseRiskPathsItem

Имя Описание Ценность
Края Связи между узлами Компоненты1Uu4J47SchemasSecurityassessmentpropertiesbasePropertiesRiskPropertiesPathsItemsPropertiesEdgesItems[]
идентификатор Уникальный идентификатор пути струна
узлы SecurityAssessmentPropertiesBaseRiskPathsPropertiesItemsItem[]

SecurityAssessmentPropertiesBaseRiskPathsPropertiesItemsItem

Имя Описание Ценность
идентификатор Идентификатор узла струна
nodePropertiesLabel Свойства, связанные с узлом строка[]

SecurityAssessmentPropertiesИлиSecurityAssessmentPropertiesResponse

Имя Описание Ценность
дополнительные данные Дополнительные данные об оценке БезопасностьОценкаСвойстваБазаДополнительные данные
метаданные Описывает свойства метаданных оценки. SecurityAssessmentMetadataProperties
partnersData Данные о 3-сторонней интеграции партнеров Данные партнера по оценке безопасности
ресурсПодробнее Сведения о ресурсе, который был оценен ResourceDetails (обязательно)
риск Внешняя модель результата риска БезопасностьОценкаСвойстваБазаРиск
статус Результат оценки AssessmentStatusOrAssessmentStatusResponse (обязательно)

Определение ресурса шаблона ARM

Тип ресурса оценки можно развернуть с помощью операций, предназначенных для следующих операций:

Список измененных свойств в каждой версии API см. в журнала изменений.

Формат ресурса

Чтобы создать ресурс Microsoft.Security/assessments, добавьте следующий код JSON в шаблон.

{
  "type": "Microsoft.Security/assessments",
  "apiVersion": "2025-05-04-preview",
  "name": "string",
  "properties": {
    "additionalData": {
      "{customized property}": "string"
    },
    "metadata": {
      "assessmentType": "string",
      "categories": [ "string" ],
      "description": "string",
      "displayName": "string",
      "implementationEffort": "string",
      "partnerData": {
        "partnerName": "string",
        "productName": "string",
        "secret": "string"
      },
      "preview": "bool",
      "remediationDescription": "string",
      "severity": "string",
      "threats": [ "string" ],
      "userImpact": "string"
    },
    "partnersData": {
      "partnerName": "string",
      "secret": "string"
    },
    "resourceDetails": {
      "source": "string"
      // For remaining properties, see ResourceDetails objects
    },
    "risk": {
      "attackPathsReferences": [ "string" ],
      "isContextualRisk": "bool",
      "level": "string",
      "paths": [
        {
          "edges": [
            {
              "id": "string",
              "sourceId": "string",
              "targetId": "string"
            }
          ],
          "id": "string",
          "nodes": [
            {
              "id": "string",
              "nodePropertiesLabel": [ "string" ]
            }
          ]
        }
      ],
      "riskFactors": [ "string" ]
    },
    "status": {
      "cause": "string",
      "code": "string",
      "description": "string"
    }
  }
}

Объекты ResourceDetails

Задайте свойство источника , чтобы указать тип объекта.

Для Azureиспользуйте:

{
  "source": "Azure"
}

Для OnPremiseSqlиспользуйте следующую команду:

{
  "databaseName": "string",
  "machineName": "string",
  "serverName": "string",
  "source": "OnPremiseSql",
  "sourceComputerId": "string",
  "vmuuid": "string",
  "workspaceId": "string"
}

Значения свойств

Microsoft.Безопасность/оценки

Имя Описание Ценность
apiVersion Версия API «2025-05-04-превью»
имя Имя ресурса строка (обязательно)
свойства Описывает свойства оценки. SecurityAssessmentPropertiesИлиSecurityAssessmentPropertiesResponse
тип Тип ресурса "Microsoft.Security/assessments"

AssessmentStatusOrAssessmentStatusResponse

Имя Описание Ценность
причина Программный код для причины состояния оценки струна
код Программный код для состояния оценки "Здоровый"
NotApplicable
"Неработоспособный" (обязательный)
описание Удобочитаемое описание состояния оценки струна

AzureResourceDetails

Имя Описание Ценность
источник Платформа, на которой находится оцененный ресурс Azure (обязательно)

Компоненты1Uu4J47SchemasSecurityassessmentpropertiesbasePropertiesRiskPropertiesPathsItemsPropertiesEdgesItems

Имя Описание Ценность
идентификатор Идентификатор ребра строка (обязательно)
sourceId Идентификатор исходного узла строка (обязательно)
targetId Идентификатор целевого узла строка (обязательно)

OnPremiseSqlResourceDetails

Имя Описание Ценность
Имя базы данных Имя базы данных Sql, установленное на компьютере строка (обязательно)
ИмяМашины Имя компьютера строка (обязательно)
имя сервера Имя sql server, установленное на компьютере строка (обязательно)
источник Платформа, на которой находится оцененный ресурс OnPremiseSql (обязательно)
sourceComputerId Идентификатор агента oms, установленный на компьютере строка (обязательно)
vmuuid Уникальный идентификатор компьютера строка (обязательно)
WorkspaceId Идентификатор ресурса Azure рабочей области, к которому подключен компьютер строка (обязательно)

Сведения о ресурсе

Имя Описание Ценность
источник Установите значение "Azure" для типа AzureResourceDetails. Установите значение OnPremiseSql для типа OnPremiseSqlResourceDetails. Azure
OnPremiseSql (обязательно)

БезопасностьОценкаМетаданныеПартнерДанные

Имя Описание Ценность
Имя партнёра Имя компании партнера строка (обязательно)
названиеПродукта Имя продукта партнера, создавшего оценку струна
секрет Секрет проверки подлинности партнера и проверка его создания — только запись струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра. (обязательно)

SecurityAssessmentMetadataProperties

Имя Описание Ценность
Тип оценки Встроенная оценка, основанная на встроенном определении политики Azure, настраиваемая, если оценка основана на пользовательском определении политики Azure. "BuiltIn"
«Встроенная политика»
CustomerManaged
CustomPolicy
'DynamicBuiltIn'
'РучнойВстроенный'
«Встроенная политика руководства»
«РучнаяПользовательская Политика»
"VerifiedPartner" (обязательный)
Категории Массив строк, содержащий любой из:
«AppServices»
"Вычисление"
Контейнер
"Данные"
IdentityAndAccess
IoT
"Сеть"
описание Удобочитаемое описание оценки струна
отображаемое имя Понятное отображаемое имя оценки строка (обязательно)
реализацияУсилия Усилия по реализации, необходимые для устранения этой оценки "Высокий"
"Низкий"
"Умеренный"
partnerData Описание партнера, создавшего оценку БезопасностьОценкаМетаданныеПартнерДанные
Предварительный просмотр Значение true, если эта оценка находится в состоянии предварительной версии выпуска булевая переменная (bool)
исправлениеDescription Читаемое человеком описание того, что следует сделать для устранения этой проблемы безопасности струна
суровость Уровень серьезности оценки "Критический"
"Высокий"
"Низкий"
"Средний" (обязательный)
Угроз Массив строк, содержащий любой из:
AccountBreach
DataExfiltration
DataSpillage
"denialOfService"
'elevationOfPrivilege'
"вредоносныйInsider"
"missingCoverage"
"threatResistance"
Влияние на пользователя Влияние пользователя на оценку "Высокий"
"Низкий"
"Умеренный"

Данные партнера по оценке безопасности

Имя Описание Ценность
Имя партнёра Имя компании партнера строка (обязательно)
секрет секрет для проверки подлинности партнера — только запись струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра. (обязательно)

БезопасностьОценкаСвойстваБазаДополнительные данные

Имя Описание Ценность

БезопасностьОценкаСвойстваБазаРиск

Имя Описание Ценность
attackPathsReferences Пути атаки ссылаются на риск строка[]
isContextualRisk Указывает, является ли риск контекстуальным или статическим булевая переменная (bool)
уровень Уровень риска "Высокий"
"Низкий"
"Средний"
Пути SecurityAssessmentPropertiesBaseRiskPathsItem[]
рискФакторы Факторы добавления базового коэффициента риска строка[]

SecurityAssessmentPropertiesBaseRiskPathsItem

Имя Описание Ценность
Края Связи между узлами Компоненты1Uu4J47SchemasSecurityassessmentpropertiesbasePropertiesRiskPropertiesPathsItemsPropertiesEdgesItems[]
идентификатор Уникальный идентификатор пути струна
узлы SecurityAssessmentPropertiesBaseRiskPathsPropertiesItemsItem[]

SecurityAssessmentPropertiesBaseRiskPathsPropertiesItemsItem

Имя Описание Ценность
идентификатор Идентификатор узла струна
nodePropertiesLabel Свойства, связанные с узлом строка[]

SecurityAssessmentPropertiesИлиSecurityAssessmentPropertiesResponse

Имя Описание Ценность
дополнительные данные Дополнительные данные об оценке БезопасностьОценкаСвойстваБазаДополнительные данные
метаданные Описывает свойства метаданных оценки. SecurityAssessmentMetadataProperties
partnersData Данные о 3-сторонней интеграции партнеров Данные партнера по оценке безопасности
ресурсПодробнее Сведения о ресурсе, который был оценен ResourceDetails (обязательно)
риск Внешняя модель результата риска БезопасностьОценкаСвойстваБазаРиск
статус Результат оценки AssessmentStatusOrAssessmentStatusResponse (обязательно)

Примеры использования

Определение ресурса Terraform (поставщик AzAPI)

Тип ресурса оценки можно развернуть с помощью операций, предназначенных для следующих операций:

Список измененных свойств в каждой версии API см. в журнала изменений.

Формат ресурса

Чтобы создать ресурс Microsoft.Security/assessments, добавьте следующий объект Terraform в шаблон.

resource "azapi_resource" "symbolicname" {
  type = "Microsoft.Security/assessments@2025-05-04-preview"
  name = "string"
  parent_id = "string"
  body = {
    properties = {
      additionalData = {
        {customized property} = "string"
      }
      metadata = {
        assessmentType = "string"
        categories = [
          "string"
        ]
        description = "string"
        displayName = "string"
        implementationEffort = "string"
        partnerData = {
          partnerName = "string"
          productName = "string"
          secret = "string"
        }
        preview = bool
        remediationDescription = "string"
        severity = "string"
        threats = [
          "string"
        ]
        userImpact = "string"
      }
      partnersData = {
        partnerName = "string"
        secret = "string"
      }
      resourceDetails = {
        source = "string"
        // For remaining properties, see ResourceDetails objects
      }
      risk = {
        attackPathsReferences = [
          "string"
        ]
        isContextualRisk = bool
        level = "string"
        paths = [
          {
            edges = [
              {
                id = "string"
                sourceId = "string"
                targetId = "string"
              }
            ]
            id = "string"
            nodes = [
              {
                id = "string"
                nodePropertiesLabel = [
                  "string"
                ]
              }
            ]
          }
        ]
        riskFactors = [
          "string"
        ]
      }
      status = {
        cause = "string"
        code = "string"
        description = "string"
      }
    }
  }
}

Объекты ResourceDetails

Задайте свойство источника , чтобы указать тип объекта.

Для Azureиспользуйте:

{
  source = "Azure"
}

Для OnPremiseSqlиспользуйте следующую команду:

{
  databaseName = "string"
  machineName = "string"
  serverName = "string"
  source = "OnPremiseSql"
  sourceComputerId = "string"
  vmuuid = "string"
  workspaceId = "string"
}

Значения свойств

Microsoft.Безопасность/оценки

Имя Описание Ценность
имя Имя ресурса строка (обязательно)
идентификатор_родителя Идентификатор ресурса для применения этого ресурса расширения. строка (обязательно)
свойства Описывает свойства оценки. SecurityAssessmentPropertiesИлиSecurityAssessmentPropertiesResponse
тип Тип ресурса "Microsoft.Security/assessments@2025-05-04-preview"

AssessmentStatusOrAssessmentStatusResponse

Имя Описание Ценность
причина Программный код для причины состояния оценки струна
код Программный код для состояния оценки "Здоровый"
NotApplicable
"Неработоспособный" (обязательный)
описание Удобочитаемое описание состояния оценки струна

AzureResourceDetails

Имя Описание Ценность
источник Платформа, на которой находится оцененный ресурс Azure (обязательно)

Компоненты1Uu4J47SchemasSecurityassessmentpropertiesbasePropertiesRiskPropertiesPathsItemsPropertiesEdgesItems

Имя Описание Ценность
идентификатор Идентификатор ребра строка (обязательно)
sourceId Идентификатор исходного узла строка (обязательно)
targetId Идентификатор целевого узла строка (обязательно)

OnPremiseSqlResourceDetails

Имя Описание Ценность
Имя базы данных Имя базы данных Sql, установленное на компьютере строка (обязательно)
ИмяМашины Имя компьютера строка (обязательно)
имя сервера Имя sql server, установленное на компьютере строка (обязательно)
источник Платформа, на которой находится оцененный ресурс OnPremiseSql (обязательно)
sourceComputerId Идентификатор агента oms, установленный на компьютере строка (обязательно)
vmuuid Уникальный идентификатор компьютера строка (обязательно)
WorkspaceId Идентификатор ресурса Azure рабочей области, к которому подключен компьютер строка (обязательно)

Сведения о ресурсе

Имя Описание Ценность
источник Установите значение "Azure" для типа AzureResourceDetails. Установите значение OnPremiseSql для типа OnPremiseSqlResourceDetails. Azure
OnPremiseSql (обязательно)

БезопасностьОценкаМетаданныеПартнерДанные

Имя Описание Ценность
Имя партнёра Имя компании партнера строка (обязательно)
названиеПродукта Имя продукта партнера, создавшего оценку струна
секрет Секрет проверки подлинности партнера и проверка его создания — только запись струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра. (обязательно)

SecurityAssessmentMetadataProperties

Имя Описание Ценность
Тип оценки Встроенная оценка, основанная на встроенном определении политики Azure, настраиваемая, если оценка основана на пользовательском определении политики Azure. "BuiltIn"
«Встроенная политика»
CustomerManaged
CustomPolicy
'DynamicBuiltIn'
'РучнойВстроенный'
«Встроенная политика руководства»
«РучнаяПользовательская Политика»
"VerifiedPartner" (обязательный)
Категории Массив строк, содержащий любой из:
«AppServices»
"Вычисление"
Контейнер
"Данные"
IdentityAndAccess
IoT
"Сеть"
описание Удобочитаемое описание оценки струна
отображаемое имя Понятное отображаемое имя оценки строка (обязательно)
реализацияУсилия Усилия по реализации, необходимые для устранения этой оценки "Высокий"
"Низкий"
"Умеренный"
partnerData Описание партнера, создавшего оценку БезопасностьОценкаМетаданныеПартнерДанные
Предварительный просмотр Значение true, если эта оценка находится в состоянии предварительной версии выпуска булевая переменная (bool)
исправлениеDescription Читаемое человеком описание того, что следует сделать для устранения этой проблемы безопасности струна
суровость Уровень серьезности оценки "Критический"
"Высокий"
"Низкий"
"Средний" (обязательный)
Угроз Массив строк, содержащий любой из:
AccountBreach
DataExfiltration
DataSpillage
"denialOfService"
'elevationOfPrivilege'
"вредоносныйInsider"
"missingCoverage"
"threatResistance"
Влияние на пользователя Влияние пользователя на оценку "Высокий"
"Низкий"
"Умеренный"

Данные партнера по оценке безопасности

Имя Описание Ценность
Имя партнёра Имя компании партнера строка (обязательно)
секрет секрет для проверки подлинности партнера — только запись струна

Ограничения целостности:
Конфиденциальное значение. Передайте в качестве безопасного параметра. (обязательно)

БезопасностьОценкаСвойстваБазаДополнительные данные

Имя Описание Ценность

БезопасностьОценкаСвойстваБазаРиск

Имя Описание Ценность
attackPathsReferences Пути атаки ссылаются на риск строка[]
isContextualRisk Указывает, является ли риск контекстуальным или статическим булевая переменная (bool)
уровень Уровень риска "Высокий"
"Низкий"
"Средний"
Пути SecurityAssessmentPropertiesBaseRiskPathsItem[]
рискФакторы Факторы добавления базового коэффициента риска строка[]

SecurityAssessmentPropertiesBaseRiskPathsItem

Имя Описание Ценность
Края Связи между узлами Компоненты1Uu4J47SchemasSecurityassessmentpropertiesbasePropertiesRiskPropertiesPathsItemsPropertiesEdgesItems[]
идентификатор Уникальный идентификатор пути струна
узлы SecurityAssessmentPropertiesBaseRiskPathsPropertiesItemsItem[]

SecurityAssessmentPropertiesBaseRiskPathsPropertiesItemsItem

Имя Описание Ценность
идентификатор Идентификатор узла струна
nodePropertiesLabel Свойства, связанные с узлом строка[]

SecurityAssessmentPropertiesИлиSecurityAssessmentPropertiesResponse

Имя Описание Ценность
дополнительные данные Дополнительные данные об оценке БезопасностьОценкаСвойстваБазаДополнительные данные
метаданные Описывает свойства метаданных оценки. SecurityAssessmentMetadataProperties
partnersData Данные о 3-сторонней интеграции партнеров Данные партнера по оценке безопасности
ресурсПодробнее Сведения о ресурсе, который был оценен ResourceDetails (обязательно)
риск Внешняя модель результата риска БезопасностьОценкаСвойстваБазаРиск
статус Результат оценки AssessmentStatusOrAssessmentStatusResponse (обязательно)

Примеры использования

Примеры Terraform

Простой пример развертывания оценки Центра безопасности для Центра безопасности Azure.

terraform {
  required_providers {
    azapi = {
      source = "Azure/azapi"
    }
  }
}

provider "azapi" {
  skip_provider_registration = false
}

data "azapi_client_config" "current" {}

variable "resource_name" {
  type    = string
  default = "acctest0001"
}

variable "location" {
  type    = string
  default = "westus"
}

resource "azapi_resource" "resourceGroup" {
  type     = "Microsoft.Resources/resourceGroups@2020-06-01"
  name     = var.resource_name
  location = var.location
}

resource "azapi_resource" "assessmentMetadata" {
  type      = "Microsoft.Security/assessmentMetadata@2021-06-01"
  parent_id = "/subscriptions/${data.azapi_client_config.current.subscription_id}"
  name      = "fdaaa62c-1d42-45ab-be2f-2af194dd1700"
  body = {
    properties = {
      assessmentType = "CustomerManaged"
      description    = "Test Description"
      displayName    = "Test Display Name"
      severity       = "Medium"
    }
  }
}

resource "azapi_resource" "pricing" {
  type      = "Microsoft.Security/pricings@2023-01-01"
  parent_id = "/subscriptions/${data.azapi_client_config.current.subscription_id}"
  name      = "VirtualMachines"
  body = {
    properties = {
      extensions  = []
      pricingTier = "Standard"
      subPlan     = "P2"
    }
  }
}

resource "azapi_resource" "virtualNetwork" {
  type      = "Microsoft.Network/virtualNetworks@2024-05-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-vnet"
  location  = var.location
  body = {
    properties = {
      addressSpace = {
        addressPrefixes = ["10.0.0.0/16"]
      }
      dhcpOptions = {
        dnsServers = []
      }
      privateEndpointVNetPolicies = "Disabled"
    }
  }
}

resource "azapi_resource" "subnet" {
  type      = "Microsoft.Network/virtualNetworks/subnets@2024-05-01"
  parent_id = azapi_resource.virtualNetwork.id
  name      = "internal"
  body = {
    properties = {
      addressPrefix                     = "10.0.2.0/24"
      defaultOutboundAccess             = true
      delegations                       = []
      privateEndpointNetworkPolicies    = "Disabled"
      privateLinkServiceNetworkPolicies = "Enabled"
      serviceEndpointPolicies           = []
      serviceEndpoints                  = []
    }
  }
}

resource "azapi_resource" "virtualMachineScaleSet" {
  type      = "Microsoft.Compute/virtualMachineScaleSets@2024-11-01"
  parent_id = azapi_resource.resourceGroup.id
  name      = "${var.resource_name}-vmss"
  location  = var.location
  body = {
    properties = {
      additionalCapabilities                 = {}
      doNotRunExtensionsOnOverprovisionedVMs = false
      orchestrationMode                      = "Uniform"
      overprovision                          = true
      singlePlacementGroup                   = true
      upgradePolicy = {
        mode = "Manual"
      }
      virtualMachineProfile = {
        diagnosticsProfile = {
          bootDiagnostics = {
            enabled    = false
            storageUri = ""
          }
        }
        extensionProfile = {
          extensionsTimeBudget = "PT1H30M"
        }
        networkProfile = {
          networkInterfaceConfigurations = [{
            name = "example"
            properties = {
              dnsSettings = {
                dnsServers = []
              }
              enableAcceleratedNetworking = false
              enableIPForwarding          = false
              ipConfigurations = [{
                name = "internal"
                properties = {
                  applicationGatewayBackendAddressPools = []
                  applicationSecurityGroups             = []
                  loadBalancerBackendAddressPools       = []
                  loadBalancerInboundNatPools           = []
                  primary                               = true
                  privateIPAddressVersion               = "IPv4"
                  subnet = {
                    id = azapi_resource.subnet.id
                  }
                }
              }]
              primary = true
            }
          }]
        }
        osProfile = {
          adminPassword            = "P@ssword1234!"
          adminUsername            = "adminuser"
          allowExtensionOperations = true
          computerNamePrefix       = "${var.resource_name}-vmss"
          linuxConfiguration = {
            disablePasswordAuthentication = false
            provisionVMAgent              = true
            ssh = {
              publicKeys = []
            }
          }
          secrets = []
        }
        priority = "Regular"
        storageProfile = {
          dataDisks = []
          imageReference = {
            offer     = "0001-com-ubuntu-server-jammy"
            publisher = "Canonical"
            sku       = "22_04-lts"
            version   = "latest"
          }
          osDisk = {
            caching      = "ReadWrite"
            createOption = "FromImage"
            managedDisk = {
              storageAccountType = "Standard_LRS"
            }
            osType                  = "Linux"
            writeAcceleratorEnabled = false
          }
        }
      }
    }
    sku = {
      capacity = 1
      name     = "Standard_B1s"
    }
  }
}

resource "azapi_resource" "assessment" {
  type      = "Microsoft.Security/assessments@2020-01-01"
  parent_id = azapi_resource.virtualMachineScaleSet.id
  name      = "fdaaa62c-1d42-45ab-be2f-2af194dd1700"
  body = {
    properties = {
      additionalData = {}
      resourceDetails = {
        source = "Azure"
      }
      status = {
        cause       = ""
        code        = "Healthy"
        description = ""
      }
    }
  }
}