Condividi tramite


Analizzare il repository GitHub connesso o il progetto Azure DevOps

È possibile configurare Microsoft Security DevOps per analizzare il repository GitHub connesso o il progetto Azure DevOps. Usare un'azione GitHub o un'estensione Azure DevOps per eseguire Microsoft Security DevOps solo nel codice sorgente dell'infrastruttura come codice (IaC) e ridurre il runtime della pipeline.

Questo articolo illustra come applicare un file di configurazione YAML modello per analizzare il repository o il progetto connesso in modo specifico per i problemi di sicurezza IaC usando le regole di Microsoft Security DevOps.

Prerequisiti

Configurare ed eseguire un'azione GitHub per analizzare il codice sorgente IaC connesso

Per configurare un'azione e visualizzare i risultati dell'analisi in GitHub:

  1. Accedi a GitHub.

  2. Passare alla pagina principale del repository.

  3. Nella directory del file selezionare .github>flussi di lavoro>msdevopssec.yml.

    Per altre informazioni sull'uso di un'azione in GitHub, vedere Prerequisiti.

  4. Selezionare l'icona (matita) Modifica file.

    Screenshot che evidenzia l'icona Modifica questo file per il file msdevopssec.yml.

  5. Nella sezione Esegui analizzatori del file YAML aggiungere questo codice:

    with:
        categories: 'IaC'
    

    Nota

    Valori dei tag si distingue tra maiuscole e minuscole.

    Ecco un esempio:

    Screenshot che mostra le informazioni da aggiungere al file YAML.

  6. Selezionare Esegui commit modifiche . . . .

  7. Selezionare Eseguire il commit delle modifiche.

    Screenshot che mostra dove selezionare Esegui commit delle modifiche nella pagina GitHub.

  8. (Facoltativo) Aggiungere un modello IaC al repository. Se nel repository è già presente un modello IaC, ignorare questo passaggio.

    Ad esempio, eseguire il commit di un modello IaC che è possibile usare per distribuire un'applicazione Web Linux di base.

    1. Selezionare il file azuredeploy.json.

      Screenshot che mostra dove si trova il file azuredeploy.json.

    2. Selezionare Non elaborato.

    3. Copiare tutte le informazioni nel file, come nell'esempio seguente:

      {
        "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
        "contentVersion": "1.0.0.0",
        "parameters": {
          "webAppName": {
            "type": "string",
            "defaultValue": "AzureLinuxApp",
            "metadata": {
              "description": "The base name of the resource, such as the web app name or the App Service plan."
            },
            "minLength": 2
          },
          "sku": {
            "type": "string",
            "defaultValue": "S1",
            "metadata": {
              "description": "The SKU of the App Service plan."
            }
          },
          "linuxFxVersion": {
            "type": "string",
            "defaultValue": "php|7.4",
            "metadata": {
              "description": "The runtime stack of the current web app."
            }
          },
          "location": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "metadata": {
              "description": "The location for all resources."
            }
          }
        },
        "variables": {
          "webAppPortalName": "[concat(parameters('webAppName'), '-webapp')]",
          "appServicePlanName": "[concat('AppServicePlan-', parameters('webAppName'))]"
        },
        "resources": [
          {
            "type": "Microsoft.Web/serverfarms",
            "apiVersion": "2020-06-01",
            "name": "[variables('appServicePlanName')]",
            "location": "[parameters('location')]",
            "sku": {
              "name": "[parameters('sku')]"
            },
            "kind": "linux",
            "properties": {
              "reserved": true
            }
          },
          {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2020-06-01",
            "name": "[variables('webAppPortalName')]",
            "location": "[parameters('location')]",
            "kind": "app",
            "dependsOn": [
              "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]"
            ],
            "properties": {
              "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('appServicePlanName'))]",
              "siteConfig": {
                "linuxFxVersion": "[parameters('linuxFxVersion')]"
              }
            }
          }
        ]
      }
      
    4. Nel repository GitHub passare alla cartella .github/workflows.

    5. Selezionare Aggiungi file>Crea nuovo file.

      Screenshot che mostra come creare un nuovo file.

    6. Immetti un nome per il file.

    7. Incollare le informazioni copiate nel file.

    8. Selezionare Esegui il commit del nuovo file.

    Il file modello viene aggiunto al repository.

    Screenshot che mostra che il nuovo file creato viene aggiunto al repository.

  9. Verificare che l'analisi di Microsoft Security DevOps sia stata completata:

    1. Per il repository selezionare Azioni.

    2. Selezionare il flusso di lavoro per visualizzare lo stato dell'azione.

  10. Per visualizzare i risultati dell'analisi, passare a Defender per il Cloud>DevOps security (Nessun prerequisito GHAS) o Sicurezza>Avvisi di scansione del codie nativamente su GitHub (richiede una licenza GHAS).

Configurare ed eseguire un'estensione Azure DevOps per analizzare il codice sorgente IaC connesso

Per configurare un'estensione e visualizzare i risultati dell'analisi in Azure DevOps:

  1. Accedere a Azure DevOps.

  2. Seleziona il progetto.

  3. Seleziona pipeline.

  4. Selezionare la pipeline in cui è configurata l'estensione Azure DevOps per Microsoft Security DevOps.

  5. Selezionare Modifica pipeline.

  6. Nel file di configurazione YAML della pipeline, sotto la riga displayName per l'attività MicrosoftSecurityDevOps@1, aggiungere questo codice:

    inputs:
        categories: 'IaC'
    

    Ecco un esempio:

    Screenshot che mostra dove aggiungere la riga categorie IaC nel file YAML di configurazione della pipeline.

  7. Seleziona Salva.

  8. (Facoltativo) Aggiungere un modello IaC al progetto Azure DevOps. Se nel progetto è già presente un modello IaC, ignorare questo passaggio.

  9. Scegliere se eseguire il commit direttamente nel ramo principale o creare un nuovo ramo per il commit e quindi selezionare Salva.

  10. Per visualizzare i risultati dell'analisi IaC, selezionare Pipeline, quindi selezionare la pipeline modificata.

  11. Per altre informazioni, vedere Selezionare un'esecuzione della pipeline specifica.

Visualizzare i dettagli e le informazioni di correzione per le regole IaC applicate

Gli strumenti di analisi IaC inclusi in Microsoft Security DevOps sono Analizzatore modelli (PSRule è incluso in Analizzatore modelli), Checkov e Terrascan.

L'analizzatore modelli esegue regole nei modelli di Azure Resource Manager (modelli ARM) e nei modelli Bicep. Per altre informazioni vedere le regole e i dettagli di correzione di Analizzatore modelli.

Terrascan esegue regole su modelli e modelli ARM per CloudFormation, Docker, Helm, Kubernetes, Kustomize e Terraform. Per altre informazioni, vedere le regole di Terrascan.

Chekov esegue regole su modelli e modelli ARM per CloudFormation, Docker, Helm, Kubernetes, Kustomize e Terraform. Per altre informazioni, vedere le regole Checkov.

Per altre informazioni sugli strumenti di analisi IaC inclusi in Microsoft Security DevOps, vedere:

In questo articolo è stato illustrato come configurare un'azione GitHub e un'estensione Azure DevOps per Microsoft Security DevOps per analizzare errori di configurazione della sicurezza IaC e come visualizzare i risultati.

Per ottenere altre informazioni: