Skip to content

Script de Reporte para Federated Identity Credentials

Este conjunto de scripts genera reportes completos de todas las credenciales de identidad federada asociadas a identidades administradas asignadas por el usuario en Azure (Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials).

馃殌 Caracter铆sticas

  • Autenticaci贸n segura: Soporte para Managed Identity y Azure CLI
  • M煤ltiples formatos: Exportaci贸n a JSON, CSV y Excel
  • Filtrado flexible: Por suscripci贸n, grupo de recursos o identidad espec铆fica
  • Soporte multi-suscripci贸n: Procesa todas las suscripciones disponibles con una sola ejecuci贸n
  • Filtrado por tenant: Cuando se especifica un tenant, solo procesa suscripciones de ese tenant
  • Logging detallado: Seguimiento completo de operaciones
  • Manejo robusto de errores: Retry logic con exponential backoff
  • Multiplataforma: Versiones en Python y PowerShell

馃搵 Requisitos

Para la versi贸n Python

# Instalar dependencias
pip install -r requirements-federated-identity-report.txt

Dependencias principales: - azure-identity >= 1.15.0 - azure-mgmt-msi >= 7.0.0 - azure-mgmt-resource >= 23.0.0 - pandas >= 2.0.0 - openpyxl >= 3.1.0

Para la versi贸n PowerShell

# Instalar m贸dulos de Azure PowerShell
Install-Module Az.Accounts -Force
Install-Module Az.ManagedServiceIdentity -Force
Install-Module Az.Resources -Force

# Para exportar a Excel (opcional)
Install-Module ImportExcel -Force

Nota: En PowerShell, el par谩metro -Verbose es proporcionado autom谩ticamente por el framework de PowerShell cuando se usa [CmdletBinding()]. No necesitas definirlo manualmente.

Files

馃攼 Autenticaci贸n

Managed Identity (Recomendado para Azure)

# Python
python federated-identity-credentials-report.py --subscription-id "12345678-1234-1234-1234-123456789012"

# PowerShell
.\federated-identity-credentials-report.ps1 -SubscriptionId "12345678-1234-1234-1234-123456789012"

Azure CLI

# Primero hacer login
az login

# Python
python federated-identity-credentials-report.py --subscription-id "12345678-1234-1234-1234-123456789012" --use-cli-auth

# PowerShell
.\federated-identity-credentials-report.ps1 -SubscriptionId "12345678-1234-1234-1234-123456789012" -UseCliAuth

馃彚 Filtrado por Tenant

Cuando especificas un tenant-id (Python) o TenantId (PowerShell), los scripts autom谩ticamente:

  1. Filtran las suscripciones para procesar 煤nicamente las que pertenecen al tenant especificado
  2. Establecen el contexto de autenticaci贸n en el tenant correcto
  3. Incluyen informaci贸n del tenant en los metadatos del reporte
# Python - Solo suscripciones del tenant espec铆fico
python federated-identity-credentials-report.py --all-subscriptions --tenant-id "df1b7014-cf34-4f82-81dc-f4c1364b9cfc"

# PowerShell - Solo suscripciones del tenant espec铆fico  
.\federated-identity-credentials-report.ps1 -AllSubscriptions -TenantId "df1b7014-cf34-4f82-81dc-f4c1364b9cfc"

鈿狅笍 Nota importante: Sin el par谩metro de tenant, el script procesar谩 suscripciones de todos los tenants a los que tienes acceso.

馃摉 Uso

Ejemplos Python

# Reporte b谩sico de una suscripci贸n espec铆fica
python federated-identity-credentials-report.py \
    --subscription-id "12345678-1234-1234-1234-123456789012"

# Reporte de TODAS las suscripciones disponibles
python federated-identity-credentials-report.py \
    --all-subscriptions

# Especificar tenant espec铆fico
python federated-identity-credentials-report.py \
    --all-subscriptions \
    --tenant-id "your-tenant-id"

# Filtrar por grupo de recursos en todas las suscripciones
python federated-identity-credentials-report.py \
    --all-subscriptions \
    --resource-group "mi-resource-group"

# Filtrar por identidad espec铆fica en una suscripci贸n
python federated-identity-credentials-report.py \
    --subscription-id "12345678-1234-1234-1234-123456789012" \
    --identity-name "mi-managed-identity"

# Exportar a Excel todas las suscripciones
python federated-identity-credentials-report.py \
    --all-subscriptions \
    --format excel \
    --output "reporte-completo.xlsx"

# Modo verbose para debugging
python federated-identity-credentials-report.py \
    --all-subscriptions \
    --verbose

Ejemplos PowerShell

# Reporte b谩sico de una suscripci贸n espec铆fica
.\federated-identity-credentials-report.ps1 -SubscriptionId "12345678-1234-1234-1234-123456789012"

# Reporte de TODAS las suscripciones disponibles
.\federated-identity-credentials-report.ps1 -AllSubscriptions

# Especificar tenant espec铆fico
.\federated-identity-credentials-report.ps1 `
    -AllSubscriptions `
    -TenantId "your-tenant-id"

# Filtrar por grupo de recursos en todas las suscripciones
.\federated-identity-credentials-report.ps1 `
    -AllSubscriptions `
    -ResourceGroupName "mi-resource-group"

# Filtrar por identidad espec铆fica en una suscripci贸n
.\federated-identity-credentials-report.ps1 `
    -SubscriptionId "12345678-1234-1234-1234-123456789012" `
    -IdentityName "mi-managed-identity"

# Exportar a Excel todas las suscripciones
.\federated-identity-credentials-report.ps1 `
    -AllSubscriptions `
    -Format Excel `
    -OutputFile "reporte-completo.xlsx"

# Modo verbose para debugging
.\federated-identity-credentials-report.ps1 `
    -AllSubscriptions `
    -Verbose

馃搳 Estructura del Reporte

El reporte incluye la siguiente informaci贸n para cada credencial de identidad federada:

Informaci贸n de la Identidad Administrada

  • identity_name: Nombre de la identidad administrada
  • identity_id: ID de recurso completo de la identidad
  • identity_resource_group: Grupo de recursos de la identidad
  • identity_location: Regi贸n de Azure donde est谩 la identidad
  • identity_principal_id: Principal ID de la identidad
  • identity_client_id: Client ID de la identidad
  • identity_tenant_id: Tenant ID de la identidad

Informaci贸n de la Credencial Federada

  • credential_name: Nombre de la credencial federada
  • credential_id: ID de recurso completo de la credencial
  • credential_issuer: Issuer de la credencial (ej: GitHub, OIDC provider)
  • credential_subject: Subject claim de la credencial
  • credential_audiences: Audiencias de la credencial
  • credential_description: Descripci贸n de la credencial
  • credential_type: Tipo de recurso de la credencial

Metadatos del Reporte

  • subscription_id: ID de la suscripci贸n de Azure
  • subscription_name: Nombre de la suscripci贸n de Azure
  • tenant_id: ID del tenant de Azure
  • report_timestamp: Timestamp de generaci贸n del reporte

馃幆 Casos de Uso

1. Auditor铆a de Seguridad

Identifica todas las credenciales federadas en tu entorno Azure para auditor铆as de seguridad y compliance.

2. Gesti贸n de Accesos

Revisa qu茅 identidades externas (GitHub Actions, OIDC providers) tienen acceso a tus recursos de Azure.

3. Inventario de Recursos

Mant茅n un inventario actualizado de todas las configuraciones de identidad federada.

4. Troubleshooting

Diagnostica problemas de autenticaci贸n identificando configuraciones incorrectas o faltantes.

5. Compliance y Governance

Genera reportes regulares para demostrar compliance con pol铆ticas de seguridad corporativas.

馃攳 Formatos de Salida

JSON

{
  "identity_name": "github-actions-identity",
  "identity_id": "/subscriptions/.../resourcegroups/rg/providers/Microsoft.ManagedIdentity/userAssignedIdentities/github-actions-identity",
  "credential_issuer": "https://token.actions.githubusercontent.com",
  "credential_subject": "repo:myorg/myrepo:ref:refs/heads/main",
  "credential_audiences": ["api://AzureADTokenExchange"]
}

CSV

Formato tabular ideal para an谩lisis en Excel o herramientas de BI.

Excel

Incluye formato autom谩tico, anchos de columna ajustados y hojas organizadas.

馃毃 Troubleshooting

Error de Autenticaci贸n

# Verificar login de Azure CLI
az account show

# Verificar permisos
az role assignment list --assignee $(az account show --query user.name -o tsv)

Error de Permisos

Aseg煤rate de tener los siguientes permisos: - Microsoft.ManagedIdentity/userAssignedIdentities/read - Microsoft.ManagedIdentity/userAssignedIdentities/federatedIdentityCredentials/read - Microsoft.Resources/subscriptions/resourceGroups/read

Dependencias Faltantes

# Python
pip install --upgrade azure-identity azure-mgmt-msi pandas openpyxl

# PowerShell
Update-Module Az -Force

馃摑 Logging

Los scripts generan logs detallados en federated_identity_report.log que incluyen: - Timestamps de operaciones - Errores y advertencias - Progreso de procesamiento - Informaci贸n de autenticaci贸n

馃敀 Mejores Pr谩cticas de Seguridad

  1. Usa Managed Identity cuando sea posible en lugar de Service Principals
  2. Rota credenciales regularmente si usas autenticaci贸n basada en secretos
  3. Aplica principio de menor privilegio para los permisos de RBAC
  4. Audita regularmente las credenciales federadas usando estos reportes
  5. Mant茅n logs seguros y considera usar Azure Monitor para logging centralizado

馃 Contribuciones

Este script sigue las mejores pr谩cticas de Azure y est谩 dise帽ado para ser extensible. Sugerencias de mejora:

  • Soporte para filtros adicionales
  • Integraci贸n con Azure Monitor
  • Exportaci贸n a otros formatos (XML, YAML)
  • Configuraci贸n desde archivos de configuraci贸n
  • Integraci贸n con pipelines de CI/CD

馃搫 Licencia

Este script es proporcionado como ejemplo educativo y debe ser revisado y adaptado seg煤n las necesidades espec铆ficas de tu organizaci贸n antes de usar en producci贸n.


Nota: Este script fue generado siguiendo las mejores pr谩cticas de desarrollo de Azure, incluyendo el uso de Managed Identity, manejo robusto de errores, y logging comprehensivo.