Skanna din anslutna GitHub-lagringsplats eller Azure DevOps-projekt

Du kan konfigurera Microsoft Security DevOps för att genomsöka din anslutna GitHub-lagringsplats eller Azure DevOps-projekt. Använd en GitHub-åtgärd eller ett Azure DevOps-tillägg för att endast köra Microsoft Security DevOps på källkoden infrastruktur som kod (IaC) och minska pipelinekörningen.

Den här artikeln visar hur du använder en YAML-mallkonfigurationsfil för att söka igenom den anslutna lagringsplatsen eller projektet specifikt efter IaC-säkerhetsproblem med hjälp av Microsoft Security DevOps-regler.

Förutsättningar

Konfigurera och köra en GitHub-åtgärd för att genomsöka din anslutna IaC-källkod

Så här konfigurerar du en åtgärd och visar genomsökningsresultat i GitHub:

  1. Logga in på GitHub.

  2. Gå till huvudsidan för lagringsplatsen.

  3. I filkatalogen väljer du .github-arbetsflöden>>msdevopssec.yml.

    Mer information om hur du arbetar med en åtgärd i GitHub finns i Krav.

  4. Välj ikonen Redigera den här filen (pennan).

    Screenshot that highlights the Edit this file icon for the msdevopssec.yml file.

  5. I avsnittet Kör analysverktyg i YAML-filen lägger du till den här koden:

    with:
        categories: 'IaC'
    

    Kommentar

    Värden är skiftlägeskänsliga.

    Här är ett exempel:

    Screenshot that shows the information to add to the YAML file.

  6. Välj Genomför ändringar . . .

  7. Välj Genomför ändringar.

    Screenshot that shows where to select Commit changes on the GitHub page.

  8. (Valfritt) Lägg till en IaC-mall till lagringsplatsen. Om du redan har en IaC-mall på lagringsplatsen hoppar du över det här steget.

    Du kan till exempel checka in en IaC-mall som du kan använda för att distribuera ett grundläggande Linux-webbprogram.

    1. Välj filen azuredeploy.json .

      Screenshot that shows where the azuredeploy.json file is located.

    2. Välj .

    3. Kopiera all information i filen, som i följande exempel:

      {
        "$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. Gå till mappen .github/workflows på gitHub-lagringsplatsen .

    5. Välj Lägg till fil>Skapa ny fil.

      Screenshot that shows you how to create a new file.

    6. Ange ett namn på filen.

    7. Klistra in den kopierade informationen i filen.

    8. Välj Checka in ny fil.

    Mallfilen läggs till i lagringsplatsen.

    Screenshot that shows that the new file you created is added to your repository.

  9. Kontrollera att Microsoft Security DevOps-genomsökningen är klar:

    1. Välj Åtgärder för lagringsplatsen.

    2. Välj arbetsflödet för att se åtgärdsstatusen.

  10. Om du vill visa resultatet av genomsökningen går du till Säkerhetskodgenomsökningsaviseringar>.

    Du kan filtrera efter verktyg för att bara se IaC-resultaten.

Konfigurera och köra ett Azure DevOps-tillägg för att genomsöka din anslutna IaC-källkod

Så här konfigurerar du ett tillägg och visar genomsökningsresultat i Azure DevOps:

  1. Logga in på Azure DevOps.

  2. Välj ditt projekt.

  3. Välj Pipelines.

  4. Välj den pipeline där ditt Azure DevOps-tillägg för Microsoft Security DevOps har konfigurerats.

  5. Välj Redigera pipeline.

  6. Lägg till den displayName här koden under raden för MicrosoftSecurityDevOps@1-uppgiften i YAML-konfigurationsfilen för pipelinen:

    inputs:
        categories: 'IaC'
    

    Här är ett exempel:

    Screenshot that shows where to add the IaC categories line in the pipeline configuration YAML file.

  7. Välj Spara.

  8. (Valfritt) Lägg till en IaC-mall i ditt Azure DevOps-projekt. Om du redan har en IaC-mall i projektet hoppar du över det här steget.

  9. Välj om du vill checka in direkt till huvudgrenen eller skapa en ny gren för incheckningen och välj sedan Spara.

  10. Om du vill visa resultatet av IaC-genomsökningen väljer du Pipelines och sedan den pipeline som du ändrade.

  11. Se mer information, välj en specifik pipelinekörning.

Visa information och reparationsinformation för tillämpade IaC-regler

IaC-genomsökningsverktygen som ingår i Microsoft Security DevOps är Template Analyzer (PSRule ingår i Template Analyzer) och Terrascan.

Template Analyzer kör regler för Azure Resource Manager-mallar (ARM-mallar) och Bicep-mallar. Mer information finns i mallanalysregler och reparationsinformation.

Terrascan kör regler för ARM-mallar och mallar för CloudFormation, Docker, Helm, Kubernetes, Kustomize och Terraform. Mer information finns i Terrascan-reglerna.

Mer information om IaC-genomsökningsverktygen som ingår i Microsoft Security DevOps finns i:

I den här artikeln har du lärt dig hur du konfigurerar en GitHub-åtgärd och ett Azure DevOps-tillägg för Microsoft Security DevOps för att söka efter felkonfigurationer för IaC-säkerhet och hur du visar resultatet.

Så här får du mer information: