Examen del repositorio de GitHub conectado o del proyecto de Azure DevOps

Puede configurar Seguridad de Microsoft DevOps para examinar el repositorio de GitHub conectado o el proyecto de Azure DevOps. Use una acción de GitHub o una extensión de Azure DevOps para ejecutar Seguridad de Microsoft DevOps solo en el código fuente infraestructura como código fuente (IaC) y ayudar a reducir el tiempo de ejecución de la canalización.

En este artículo se muestra cómo aplicar un archivo de configuración YAML de plantilla para analizar su repositorio o proyecto conectado específicamente en busca de problemas de seguridad de IaC mediante las reglas de Seguridad de Microsoft DevOps. Antes de empezar, asegúrate de tener un repositorio de GitHub conectado o un proyecto Azure DevOps y revisa los requisitos previos.

Prerequisites

  • Para Seguridad de Microsoft DevOps, configure la acción de GitHub o la extensión de Azure DevOps en función del sistema de administración de código fuente:
  • Asegúrese de que tiene una plantilla de IaC en el repositorio.

Configuración y ejecución de una acción de GitHub para examinar el código fuente de IaC conectado

Para configurar una acción y ver los resultados del análisis de escaneo en GitHub:

  1. Inicie sesión en GitHub.

  2. Vaya a la página principal del repositorio.

  3. En el directorio de archivos, seleccione .github>workflows>msdevopssec.yml.

    Para obtener más información sobre cómo trabajar con una acción en GitHub, consulte Requisitos previos.

  4. Seleccione el icono Editar este archivo (lápiz).

    Captura de pantalla que resalta el icono Editar este archivo para el archivo msdevopssec.yml.

  5. En la sección Ejecutar analizadores del archivo YAML, añade el siguiente código para habilitar el escaneo de Infraestructura como Código:

    with:
        categories: 'IaC'
    

    Note

    Los valores distinguen entre mayúsculas y minúsculas.

    La siguiente captura de pantalla muestra un ejemplo de la configuración actualizada del YAML:

    Captura de pantalla que muestra la información que se va a agregar al archivo YAML.

  6. Seleccione Confirmar cambios . . . .

  7. Seleccione Confirmar cambios.

    Captura de pantalla que muestra dónde seleccionar Confirmar cambios en la página de GitHub.

  8. (Opcional) Agregue una plantilla de IaC al repositorio. Si ya tiene una plantilla de IaC en el repositorio, omita este paso.

    Por ejemplo, confirme una plantilla de IaC que puede usar para implementar una aplicación web básica de Linux.

    1. Seleccione el archivo azuredeploy.json .

      Captura de pantalla que muestra dónde se encuentra el archivo azuredeploy.json.

    2. Seleccione Raw.

    3. Copie toda la información del archivo, como en el ejemplo siguiente:

      {
        "$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. En el repositorio de GitHub, vaya a la carpeta .github/workflows .

    5. Seleccione Agregar archivo>Crear nuevo archivo.

      Captura de pantalla que muestra cómo crear un archivo.

    6. Escriba un nombre para el archivo.

    7. Pegue la información copiada en el archivo.

    8. Seleccione Confirmar nuevo archivo.

    El archivo de plantilla se agrega al repositorio.

    Captura de pantalla que muestra que el nuevo archivo que creó se agrega al repositorio.

  9. Compruebe que el examen de DevOps de seguridad de Microsoft ha finalizado:

    1. En el repositorio, seleccione Acciones.

    2. Seleccione el flujo de trabajo para ver el estado de la acción.

  10. Para ver los resultados del escaneo, utilice una de las siguientes opciones:

    • Ve a Defender for CloudDevOps>security. Esta opción no requiere una licencia de GitHub Advanced Security (GHAS).
    • Si tienes una licencia de GitHub Advanced Security (GHAS), ve a> Security Codescanning alerts de forma nativa en GitHub.

Configuración y ejecución de una extensión de Azure DevOps para examinar el código fuente de IaC conectado

Para configurar una extensión y ver los resultados del examen en Azure DevOps:

  1. Inicie sesión en Azure DevOps.

  2. Seleccione su proyecto.

  3. Seleccione Canalizaciones.

  4. Seleccione la canalización en la que está configurada la extensión de Azure DevOps para Seguridad de Microsoft.

  5. Seleccione Editar canalización.

  6. En el archivo de configuración YAML de la pipeline, debajo de la displayName línea para la tarea MicrosoftSecurityDevOps@1 , añade el siguiente código para habilitar el escaneo de Infraestructura como Código:

    inputs:
        categories: 'IaC'
    

    La siguiente captura de pantalla muestra un ejemplo de la configuración YAML de la tubería con la categoría IaC añadida:

    Captura de pantalla que muestra dónde agregar la línea de categorías iaC en el archivo YAML de configuración de canalización.

  7. Haga clic en Guardar.

  8. (Opcional) Agregue una plantilla de IaC al proyecto de Azure DevOps. Si ya tiene una plantilla de IaC en el proyecto, omita este paso.

  9. Elija si desea confirmar directamente en la rama principal o crear una nueva rama para la confirmación y, a continuación, seleccione Guardar.

  10. Para ver los resultados del examen de IaC, seleccione Canalizaciones y, a continuación, seleccione la canalización que modificó.

  11. Para ver más detalles, seleccione una ejecución de canalización específica.

Ver detalles e información de corrección para las reglas de IaC aplicadas

Las herramientas de análisis de IaC que se incluyen con Seguridad de Microsoft DevOps son el Analizador de plantillas (PSRule se incluye en el Analizador de plantillas), Checkov y Terrascan.

El Analizador de plantillas ejecuta reglas en plantillas de Azure Resource Manager (plantillas de ARM) y plantillas de Bicep. Consulte las reglas Template Analyzer y los detalles de corrección.

Terrascan ejecuta reglas en plantillas de ARM y plantillas para CloudFormation, Docker, Helm, Kubernetes, Kustomize y Terraform. Consulte las reglas de Terrascan.

Chekov ejecuta reglas en plantillas de ARM y plantillas para CloudFormation, Docker, Helm, Kubernetes, Kustomize y Terraform. Consulte las reglas de Checkov.

Para obtener más información sobre las herramientas de análisis de IaC que se incluyen con Seguridad de Microsoft DevOps, consulte:

En este artículo, aprende cómo configurar una acción de GitHub y una extensión de Azure DevOps para que Seguridad de Microsoft DevOps escanee configuraciones erróneas de seguridad en IaC y cómo ver los resultados.

Para obtener más información: