Compartir vía


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

Puede configurar Microsoft Security 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 Microsoft Security 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 examinar el repositorio conectado o proyecto específicamente para problemas de seguridad de IaC mediante reglas de DevOps de seguridad de Microsoft.

Requisitos previos

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 examen 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, agregue este código:

    with:
        categories: 'IaC'
    

    Nota:

    Los valores distinguen mayúsculas de minúsculas.

    Este es un ejemplo:

    Captura de pantalla que muestra la información que debe agregarse al archivo YAML.

  6. Seleccione Confirmar cambios....

  7. Seleccione Commit changes (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 nuevo archivo.

    6. Escriba un nombre para el archivo.

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

    8. Seleccione Commit new file (Confirmar nuevo archivo).

    El archivo de plantilla se agrega al repositorio.

    Captura de pantalla que muestra que el nuevo archivo que ha creado se agrega a su 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. Vaya a Seguridad>Alertas de examen de código para ver los resultados del examen.

    Puede filtrar por herramienta para ver solo los hallazgos de IaC.

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 Microsoft Security DevOps.

  5. Seleccione Editar canalización.

  6. En el archivo de configuración de YAML de canalización, debajo de la línea displayName de la tarea MicrosoftSecurityDevOps@1, agregue este código:

    inputs:
        categories: 'IaC'
    

    Este es un ejemplo:

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

  7. Seleccione 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. Consulte más detalles y 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 Microsoft Security DevOps son el Analizador de plantillas (PSRule se incluye en el Analizador de plantillas) y Terrascan.

El Analizador de plantillas ejecuta reglas en plantillas de Azure Resource Manager (plantillas de ARM) y plantillas de Bicep. Para obtener más información, consulte las reglas del Analizador de plantillas y los detalles de corrección.

Terrascan ejecuta reglas en plantillas y plantillas de ARM para CloudFormation, Docker, Helm, Kubernetes, Kustomize y Terraform. Para obtener más información, consulte las reglas de Terrascan.

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

En este artículo, ha aprendido a configurar una acción de GitHub y una extensión de Azure DevOps para que Microsoft Security DevOps examine errores de configuración de seguridad de IaC y cómo ver los resultados.

Más información: