Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
EAST — Herramienta de seguridad de Azure extensible - Documentación | Kitploit
Herramientas/GitHubGitHub/jsa2/east
Seguridad de Infraestructura en la NubeEscáneres de VulnerabilidadesAuditoría de ConfiguraciónPruebas de PenetraciónSeguridad en la NubeGestión de Identidad y Acceso (IAM)Análisis de RegistrosArchived
GitHubjsa2/east

EAST

Herramienta de seguridad de Azure extensible - Documentación

Ver Repositorio
841112hace 3 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

Herramienta de Seguridad Extensible de Azure

Herramienta de Seguridad Extensible de Azure (referida posteriormente como E.A.S.T) es una herramienta para evaluar controles de seguridad de Azure y, en cierta medida, de Azure AD. El caso de uso principal de EAST es la recopilación de datos de seguridad para su evaluación en Evaluaciones de Azure. Esta información (contenido JSON) puede luego utilizarse en diversas herramientas de informes, que usamos para correlacionar e investigar más a fondo los datos.

Esta herramienta está licenciada bajo la licencia MIT.

img

image

Colaboradores

  • Yo mismo
  • Nixu Equipo de Seguridad en la Nube

Tabla de contenidos

  • Herramienta de Seguridad Extensible de Azure
  • Colaboradores
  • Notas de la versión
  • Importante
  • Operación de la herramienta
    • Dependencias
    • Controles
      • Básico
      • Avanzado
      • Compuesto
    • Informes
      • Ejecutar escaneo EAST
        • Prerrequisitos detallados (Esto es si optaste por no hacer la versión "dispara y olvida")
Descargar herramienta
  • Iniciar sesión en Az CLI y ejecutar el escaneo
  • Licencia
  • Documentación de operación de la herramienta
    • Principios
      • USO DE AZCLI
      • Aceleración
    • Referencia de parámetros
    • (Altamente experimental) Ejecución en entornos restringidos donde solo está disponible el uso del navegador
    • Desarrollo de controles
    • Actualizaciones y ejemplos
      • Auditoría del proveedor Microsoft.Web (Functions y aplicaciones web)
      • Autorización base de Azure RBAC
    • Contribuciones
      • Otro

  • Notas de la versión

    v 0.5

    • Refactorizaciones:
      • La asignación de roles de Managed Identity y Azure AD ahora se realiza mediante un solo módulo, la versión anterior mostraba su antigüedad y la lógica ya no era correcta. El nuevo módulo es miGeneral.js
      • ASB ya no es ASB, ahora es el punto de referencia de seguridad en la nube de Microsoft, consulte query.js

    v 0.4

    • Rama de vista previa introducida

      Cambios:

      • La instalación ahora tiene en cuenta el uso de la versión actualizada de Azure Cloud Shell en cuanto a dependencias (Cloud Shell ahora tiene instalada la versión Node.JS v 16)

      • Verificación de tipos de clúster de Databricks según aviso

        • Audita los clústeres de Databricks por posible elevación de privilegios - Este control normalmente requiere permisos en el clúster de Databricks"
      • Content.json ahora tiene ordenación por clave y contenido. Esto permite realizar comprobaciones delta con git diff HEAD^1 ¹ ya que content.json tiene un orden predeterminado de resultados

        image

      ¹ ⚠️ Palabra de precaución, si deseas comprobar deltas de content.json, entonces content.json deberá ser "designorado" del .gitignore exponiendo los resultados a cualquier repositorio upstream que puedas tener configurado.

      Usa esta función con precaución y asegúrate de no tener un upstream público configurado para la rama en la que estás usando esta función

    • Cambio de patrones de programación para evitar posibles condiciones de carrera con conjuntos de datos más grandes. Esto es principalmente cambios de usar var a let en bucles de estilo for await


    Importante

    ⚠️ El estado actual de la herramienta es beta

    • Las correcciones, actualizaciones, etc. se realizan sobre la base de "Mejor esfuerzo", sin garantía de tiempo ni calidad de la posible corrección aplicada
    • Realizamos algunos ajustes adicionales antes de usar EAST en nuestro trabajo diario, como aplicar varias restricciones de ejecución y entorno, además de familiarizarnos con el entorno en cuestión. Por lo tanto, actualmente recomendamos que EAST se ejecute solo en entornos de prueba y con permisos de solo lectura.
      • Todas las llamadas en el servicio son en gran medida a IPs de Azure Cloud, por lo que debería funcionar bien en entornos endurecidos donde se aplican restricciones de IP salientes. Esto reduce el riesgo de que esta herramienta contenga paquetes maliciosos que podrían "llamar a casa" sin tener también C2 en Azure.
        • Ejecutarlo en modo de solo lectura reduce gran parte del riesgo asociado con paquetes NPM posiblemente comprometidos (Google comprometió NPM)
        • Errores, etc.: Puedes proteger tu entorno contra ciertos errores en este código ejecutando la herramienta con permisos de solo lectura
    • Gran parte del código es "TAL CUAL": Es decir, ha servido solo para crear un resultado determinado; Queda mucho trabajo de limpieza y modularización por terminar
    • Actualmente no hay pruebas, aparte de ciertas comprobaciones manuales que se ejecutan después de cambios en main.js y varios controles más avanzados.
    • Las descripciones de controles en esta etapa no son el producto final, por lo que dar retroalimentación sobre ellas, aunque es apreciado, no es el enfoque de la herramienta en esta etapa
    • Como su nombre indica, lo usamos como herramienta para evaluar entornos. No está destinado a ejecutarse sin supervisión por el momento, y no debe ejecutarse en ningún servicio expuesto a Internet que acepte conexiones entrantes.
    • La documentación podría describirse como incompleta por el momento
    • EAST se centra principalmente en recursos PaaS, ya que la mayoría de nuestras evaluaciones de Azure se centran en este tipo de recurso
    • ⚠️ No se realiza sanitización de entrada en los parámetros de inicio, ya que siempre se asume que la entrada de estos parámetros está controlada. Dicho esto, la herramienta utiliza extensivamente exec() - Aunque no he revisado todas las rutas, creo que lograr la ejecución de shellcode es trivial. Esta herramienta no asume entradas hostiles, por lo que se recomienda que no pegues argumentos de inicio en la línea de comandos sin revisarlos primero.

    Operación de la herramienta

    Dependencias

    Para reducir la cantidad de código, utilizamos las siguientes dependencias para operación y estética (Kudos a los mantenedores de estos fantásticos paquetes)

    paqueteestéticaoperaciónlicencia
    axios✅MIT
    yargs✅MIT
    jsonwebtoken✅MIT
    chalk✅MIT
    js-beautify ✅MIT

    Otras dependencias para ejecutar la herramienta: Si planeas ejecutar esto en Azure Cloud Shell, no necesitas instalar Azure CLI:

    • Esta herramienta no incluye ni distribuye Microsoft Azure CLI, sino que lo utiliza cuando está instalado en el sistema fuente (como Azure Cloud Shell, que es la plataforma principal para ejecutar EAST)

    Azure Cloud Shell (BASH) o distribución Linux / WSL aplicable

    Requisitodescripcióninstalación
    ✅ AZ CLIUSO DE AZCLIcurl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
    ✅ Node.js runtime 14Runtime de Node.js para EASTinstalar con NVM

    Controles

    EAST proporciona tres categorías de controles: Básico, Avanzado y Compuesto

    El control legible por máquina se ve así, independientemente del tipo (Básico/Avanzado/Compuesto):```json { "name": "fn-sql-2079", "resource": "/subscriptions/6193053b-408b-44d0-b20f-4e29b9b67394/resourcegroups/rg-fn-2079/providers/microsoft.web/sites/fn-sql-2079", "controlId": "managedIdentity", "isHealthy": true, "id": "/subscriptions/6193053b-408b-44d0-b20f-4e29b9b67394/resourcegroups/rg-fn-2079/providers/microsoft.web/sites/fn-sql-2079", "Description": "\r\n Ensure The Service calls downstream resources with managed identity", "metadata": { "principalId": { "type": "SystemAssigned", "tenantId": "033794f5-7c9d-4e98-923d-7b49114b7ac3", "principalId": "cb073f1e-03bc-440e-874d-5ed3ce6df7f8" }, "roles": [{ "role": [{ "properties": { "roleDefinitionId": "/subscriptions/6193053b-408b-44d0-b20f-4e29b9b67394/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c", "principalId": "cb073f1e-03bc-440e-874d-5ed3ce6df7f8", "scope": "/subscriptions/6193053b-408b-44d0-b20f-4e29b9b67394/resourceGroups/RG-FN-2079", "createdOn": "2021-12-27T06:03:09.7052113Z", "updatedOn": "2021-12-27T06:03:09.7052113Z", "createdBy": "4257db31-3f22-4c0f-bd57-26cbbd4f5851", "updatedBy": "4257db31-3f22-4c0f-bd57-26cbbd4f5851" }, "id": "/subscriptions/6193053b-408b-44d0-b20f-4e29b9b67394/resourceGroups/RG-FN-2079/providers/Microsoft.Authorization/roleAssignments/ada69f21-790e-4386-9f47-c9b8a8c15674", "type": "Microsoft.Authorization/roleAssignments", "name": "ada69f21-790e-4386-9f47-c9b8a8c15674", "RoleName": "Contributor" }] }] }, "category": "Access" },

    root@kitploit:~
    ### Básico
    
    Los controles básicos incluyen verificaciones sobre el objeto ARM inicial para configuraciones booleanas simples de "activar/desactivar" de dicho servicio.
    
    **Ejemplo: adminUser de Azure Container Registry**
    
    [acr_adminUser](https://github.com/jsa2/east/blob/public/providers/microsoft.containerregistry/functions/acr_adminUser.js)
    
    Portal|EAST
    -|-
      ![image](https://assets.kitploit.com/production/public/readmes/5701/955386627eceb05ef02ac4f9aed2c6671397ff9f86946fab1422f65c40510e5d.png) | ``if (item.properties?.adminUserEnabled == false ){returnObject.isHealthy = true }``
    
    
    
    ### Avanzado
    
    Los controles avanzados incluyen verificaciones más allá del objeto ARM inicial. A menudo invocan nuevas solicitudes para obtener más información sobre el recurso en cuestión y su relación con otros servicios.
    
    
    **Ejemplo: Asignaciones de roles**
    
    Además de verificar las asignaciones de roles de la suscripción, se realiza una verificación adicional a través del Informe de acceso condicional de Azure AD para MFA, y que las cuentas privilegiadas no estén protegidas solo por contraseñas (SPN con secretos de cliente).
    
    **Ejemplo: Azure Data Factory**
    
    [ADF_pipeLineRuns](https://github.com/jsa2/east/blob/public/providers/microsoft.datafactory/functions/ADF_pipeLineRuns.js)
    
    El mapeo de canalizaciones de Azure Data Factory combina canalizaciones -> actividades -> y destinos de datos, y luego verifica si hay secretos filtrados en los registros a través del historial de ejecución de dichas actividades.
    
    ![img](https://assets.kitploit.com/production/public/readmes/5701/bceb35d6b891df36e341228206a02952c46b7a271be23b40d9a72ff76a0c357f.png)
    
    ---
    
    ### Compuesto
    
    Los controles compuestos combinan dos o más resultados de control de la canalización, para formar uno o más controles nuevos. El uso de compuestos resuelve dos casos de uso para EAST:
    1. No se puede garantizar un orden en que los resultados de control sean devueltos en la canalización.
    2. Se necesita devolver más de un resultado de control de una sola verificación.
    
    **Ejemplo: [composite_resolve_alerts](https://github.com/jsa2/east/blob/public/composites/composite_resolve_alerts.js)**
    
    1. Obtener alertas de Microsoft Cloud Defender en la verificación de suscripción.
    2. Formar nuevos controles por resourceProvider para alertas.
    
    ## Informes
    
    EAST no está enfocado en proporcionar generación automática de informes, ya que principalmente proporciona archivos JSON con el estado del control y la evaluación. La idea es usar herramientas separadas para crear informes, lo cual es bastante trivial de automatizar mediante scripts de creación de markdown y herramientas como [Pandoc](https://github.com/jgm/pandoc#the-universal-markup-converter).
    
    - Si bien el enfoque no está en los informes, este repositorio incluye automatización de ejemplo para la creación de informes con pandoc para facilitar la lectura de los resultados en un formato de documento único.
    
    Si bien esta herramienta no distribuye pandoc, se puede usar al crear los informes, por lo tanto se añade la siguiente cita: https://github.com/jgm/pandoc/blob/master/CITATION.cff```
    cff-version: 1.2.0
    title: Pandoc
    message: "If you use this software, please cite it as below."
    type: software
    url: "https://github.com/jgm/pandoc"
    authors:
      - given-names: John
        family-names: MacFarlane
        email: [email protected]
        orcid: 'https://orcid.org/0000-0003-2557-9090'
      - given-names: Albert
        family-names: Krewinkel
        email: [email protected]
        orcid: '0000-0002-9455-0796'
      - given-names: Jesse
        family-names: Rosenthal
        email: [email protected]
    

    Ejecutando el escaneo EAST

    Esta parte contiene una guía sobre cómo ejecutar esto ya sea en BASH@linux, o BASH en Azure Cloud Shell (obviamente Cloud Shell también es Linux, pero no requiere que tengas tu propio equipo Linux para usarlo)

    ⚠️ Si estás ejecutando la herramienta en Cloud Shell, es posible que necesites volver a aplicar algunas de las instalaciones, ya que Cloud Shell no conserva varias configuraciones de sesión.

    Prerrequisitos de 'disparar y olvidar' en cloud shell```bash curl -o- https://raw.githubusercontent.com/jsa2/EAST/preview/sh/initForuse.sh | bash;

    root@kitploit:~
    [jump to next step](#login-az-cli-and-run-the-scan)
    
    #### Requisitos previos detallados (Esto es si optaste por no hacer la versión "disparar y olvidar")
    
    **Requisitos previos**```bash
    
    git clone https://github.com/jsa2/EAST --branch preview
    cd EAST;
    npm install
    
    

    Instalación de Pandoc en cloud shell```bash

    Get pandoc for reporting (first time only)

    wget "https://github.com/jgm/pandoc/releases/download/2.17.1.1/pandoc-2.17.1.1-linux-amd64.tar.gz"; tar xvzf "pandoc-2.17.1.1-linux-amd64.tar.gz" --strip-components 1 -C ~

    root@kitploit:~
    **Instalando pandoc en distribuciones que soportan APT**```bash
    # Get pandoc for reporting (first time only)
    sudo apt install pandoc
    

    Iniciar sesión en Az CLI y ejecutar el escaneo```bash

    Relogin is required to ensure token cache is placed on session on cloud shell

    az account clear az login

    cd EAST

    replace the subid below with your subscription ID!

    subId=6193053b-408b-44d0-b20f-4e29b9b67394

    node ./plugins/main.js --batch=10 --nativescope=true --roleAssignments=true --helperTexts=true --checkAad=true --scanAuditLogs --composites --subInclude=$subId

    root@kitploit:~
    ![img](https://assets.kitploit.com/production/public/readmes/5701/e85a6607ac555d9bbde7a179042df2a344b0a9f004e99f27ade78e0bc20af5b5.gif)
    
    
    
    
    
    **Generar informe**
    
    ``cd EAST; node templatehelpers/eastReports.js --doc`` 
    
    - Si desea incluir todos los resultados de Azure Security Benchmark en el informe
    
    ``cd EAST; node templatehelpers/eastReports.js --doc --asb`` 
    
    **Exportar informe desde cloud shell**
    
    `` pandoc -s fullReport2.md -f markdown -t docx --reference-doc=pandoc-template.docx -o fullReport2.docx `` 
    
    ![image](https://assets.kitploit.com/production/public/readmes/5701/503e773de2e18294b3d74101d8c2eb6f675e1057c838e89703b440650450c374.png)
    
    **Azure Devops (Experimental)**
    Hay un control de Azure Devops para volcar registros de canalización. Puede especificar la ejecución del control siguiendo el ejemplo:``` node ./plugins/main.js --batch=10 --nativescope=true --roleAssignments=true --helperTexts=true --checkAad=true --scanAuditLogs --composites --subInclude=$subId --azdevops "organizationName" ```
    
    --- 
    ## Licensing
    
    **Community use**
    - Share relevant controls across multiple environments as community effort
    
    **Company use**
    - Companies have possibility to develop company specific controls which apply to company specific work. Companies can then control these implementations by decision to share, or not share them based on the operating principle of that company. 
    
    **Non IPR components**
    - Code logic and functions are under MIT license. since code logic and functions are alredy based on open-source components & vendor API's, it does not make sense to restrict something that is already based on open source
    
    If you use this tool as part of your commercial effort we only require, that you follow the very relaxed terms of [MIT license](https://github.com/jsa2/east/blob/public/LICENSE)
    
    [Read license](https://github.com/jsa2/EAST/blob/public/LICENSE)
    
    ---
    
    # Tool operation documentation
    
    ## Principles
    
    
    ### AZCLI USE
    **Existing tooling enhanced with Node.js runtime**
    
    Use rich and maintained context of [Microsoft Azure CLI](https://github.com/Azure/azure-cli#microsoft-azure-cli) ``login & commands``  with Node.js control flow which supplies enhanced rest-requests and maps results to schema.
     - This tool does not include or distribute Microsoft Azure CLI, but rather uses it when it has been installed on the source system (Such as Azure Cloud Shell, which is primary platform for running EAST)
    
    ### Speedup
    
    View more [details](https://github.com/jsa2/east/blob/public/speedup.md)
    
    ✅ Using Node.js runtime as orchestrator utilises Nodes asynchronous nature allowing batching of requests. Batching of requests utilizes the full extent of Azure Resource Managers incredible speed. 
    
    ✅ Compared to running requests one-by-one, the speedup can be up to 10x, when Node executes the batch of requests instead of single request at time
    
    ## Parameters reference
    
    
    **Example:**
    ```shell
    node ./plugins/main.js --batch=10 --nativescope --roleAssignments --helperTexts=true --checkAad --scanAuditLogs --composites --shuffle --clearTokens``` 
    
    Param| Description | Default if undefined
    -|-|-
    `` --nativescope `` | Currently mandatory parameter | no values
    `` --shuffle `` | Can help with throttling. Shuffles the resource list to reduce the possibility of resource provider throttling threshold being met  | no values 
    `` --roleAssignments `` | Checks controls as per [microsoft.authorization](https://github.com/jsa2/east/blob/public/providers/microsoft.authorization/controls) | no values
    `` --includeRG `` | Checks controls with ResourceGroups as per [microsoft.authorization](https://github.com/jsa2/east/blob/public/providers/microsoft.authorization/controls) | no values
    `` --checkAad `` | Checks controls as per [microsoft.azureactivedirectory](https://github.com/jsa2/east/blob/public/providers/microsoft.azureactivedirectory/controls) | no values
    `` --subInclude `` | Defines subscription scope | no default, requires subscriptionID/s, if not defined will enumerate all subscriptions the user have access to
    `` --namespace `` | text filter which matches full, or part of the resource ID <br> **example** `` /microsoft.storage/storageaccounts`` all storage accounts in the scope| optional parameter
    `` --notIncludes `` | text filter which matches full, or part of the resource ID <br> **example** `` /microsoft.storage/storageaccounts`` all storage accounts in the scope are **excluded**| optional parameter
    `` --batch `` | size of batch interval between throttles |5
    `` --wait `` | size of batch interval between throttles | 1500
    `` --scanAuditLogs `` | optional parameter. When defined in hours will toggle Azure Activity Log scanning for weak authentication events <br> **defined in:** [scanAuditLogs](https://github.com/jsa2/east/blob/public/providers/microsoft.authorization/functions/scanAuditLogs.js) | 24h
    `` --composites `` | read [composite](#composite)| no values
    `` --clearTokens `` | clears tokens in session folder, use this if you get authorization errors, or have just changed to other `` az login `` account <br> use `` az account clear`` if you want to clear AZ CLI cache too | no values
    `` --tag `` | Filter all results in the end based on single tag``--tag=svc=aksdev``  | no values
    ``--ignorePreCheck``  | use this option when used with browser delegated tokens| no values
    ``--helperTexts``  | Will append text descriptions from [general](https://github.com/jsa2/east/blob/public/providers/microsoft.general/controls) to manual controls| no values
    ``--reprocess``  | Will update results to existing content.json. Useful for incremental runs| no values
    
    
    **Parameters reference for example report:**
    ```shell
    node templatehelpers/eastReports.js --asb``` 
    
    Param| Description | Default if undefined
    -|-|-
    `` --asb `` | gets all ASB results available to users | no values
    `` --policy `` | gets all Policy results available to users | no values
    ``  --doc`` | prints pandoc string for export to console | no values
    
    ## (Highly experimental) Running in restricted environments where only browser use is available
    
    Read here [Running in restricted environments](https://github.com/jsa2/EAST/tree/DelegationToken#highly-experimental---bypassing-trusted-device-requirements-for-azure-cli-in-highly-restricted-environments-where-apis-are-available-for-browser-sessions)
    
    ## Developing controls 
    Developer guide including control flow description is here [``dev-guide.md``](https://github.com/jsa2/east/blob/public/dev-guide.md)
    
            
    ## Updates and examples
    ### Auditing Microsoft.Web provider (Functions and web apps)
    
    ✅ Check roles that are assigned to function managed identity in Azure AD and all Azure Subscriptions the audit account has access to <br>
    ✅ Relation mapping, check which keyVaults the function uses across all subs the audit account has access to<br>
    ✅ Check if Azure AD authentication is enabled
    ✅ Check that generation of access tokens to the api requires assigment ``.appRoleAssignmentRequired`` <br>
    ✅ Audit bindings <br>
      - Function or Azure AD Authentication enabled
      - Count and type of triggers
    <br>
    
    ✅ Check if [SCM](https://docs.microsoft.com/en-us/azure/azure-functions/security-concepts#secure-the-scm-endpoint) and [FTP](https://docs.microsoft.com/en-us/azure/azure-functions/security-concepts#disable-ftp) endpoints are secured 
    
    
    ![image](https://assets.kitploit.com/production/public/readmes/5701/b074ecdbe5d910c416ad2bbc5b5c57295c3f61348d5a8bb35146112959a15be8.png)
    
    
    ### Azure RBAC baseline authorization 
    
    ⚠️ Detect principals in privileged subscriptions roles protected only by password-based single factor authentication. 
    -  Checks for users without MFA policies applied for set of conditions
    -  Checks for ServicePrincipals protected only by password (as opposed to using Certificate Credential, workload federation and or workload identity CA policy)
      
      Maps to [App Registration Best Practices](https://docs.microsoft.com/en-us/azure/active-directory/develop/security-best-practices-for-app-registration#credential-configuration)
    - *An unused credential on an application can result in security breach. While it's convenient to use  <span style="color:red">password</span>. secrets as a credential, we strongly recommend that you use x509 certificates as the only credential type for getting tokens for your application*
    
    ``✅State healthy`` - **User result example**  
    ```JSON
    { 
      "subscriptionName": "EAST -msdn",
      "friendlyName": "[email protected]",
        "mfaResults": {
          "oid": "138ac68f-d8a7-4000-8d41-c10ff26a9097",
          "appliedPol": [{
            "GrantConditions": "challengeWithMfa",
            "policy": "baseline",
            "oid": "138ac68f-d8a7-4000-8d41-c10ff26a9097"
          }],
          "checkType": "mfa"
        },
        "basicAuthResults": {
          "oid": "138ac68f-d8a7-4000-8d41-c10aa26a9097",
          "appliedPol": [{
            "GrantConditions": "challengeWithMfa",
            "policy": "baseline",
            "oid": "138ac68f-d8a7-4000-8d41-c10aa26a9097"
          }],
          "checkType": "basicAuth"
          },
        }
    

    ⚠️State unHealthy - Application principal example

    root@kitploit:~
    { 
      "subscriptionName": "EAST - HoneyPot",
          "friendlyName": "thx138-kvref-6193053b-408b-44d0-b20f-4e29b9b67394",
          "creds": {
            "@odata.context": "https://graph.microsoft.com/beta/$metadata#servicePrincipals(id,displayName,appId,keyCredentials,passwordCredentials,servicePrincipalType)/$entity",
            "id": "babec804-037d-4caf-946e-7a2b6de3a45f",
            "displayName": "thx138-kvref-6193053b-408b-44d0-b20f-4e29b9b67394",
            "appId": "5af1760e-89ff-46e4-a968-0ac36a7b7b69",
            "servicePrincipalType": "Application",
            "keyCredentials": [],
            "passwordCredentials": [],
            "OnlySingleFactor": [{
              "customKeyIdentifier": null,
              "endDateTime": "2023-10-20T06:54:59.2014093Z",
              "keyId": "7df44f81-a52c-4fd6-b704-4b046771f85a",
              "startDateTime": "2021-10-20T06:54:59.2014093Z",
              "secretText": null,
              "hint": null,
              "displayName": null
            }],
            "StrongSingleFactor": []
            }
    }
    
    

    Contributing

    Following methods work for contributing for the time being:

    1. Submit a pull request with code / documentation change
    2. Submit a issue
      • issue can be a:
      • ⚠️ Problem (issue)
      • 📝 Feature request
      • ❔Question

    Other

    1. By default EAST tries to work with the current depedencies - Introducing new (direct) depedencies is not directly encouraged with EAST. If such vital depedency is introduced, then review licensing of such depedency, and update readme.md - depedencies
      • There is nothing to prevent you from creating your own fork of EAST with your own depedencies