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
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
- federated-identity-credentials-report.py: Script en Python para generar reportes de credenciales federadas.
- federated-identity-credentials-report.ps1: Script en PowerShell para generar reportes de credenciales federadas.
- requirements-federated-identity-report.txt: Archivo de dependencias para la versi贸n Python.
馃攼 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:
- Filtran las suscripciones para procesar 煤nicamente las que pertenecen al tenant especificado
- Establecen el contexto de autenticaci贸n en el tenant correcto
- 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 administradaidentity_id
: ID de recurso completo de la identidadidentity_resource_group
: Grupo de recursos de la identidadidentity_location
: Regi贸n de Azure donde est谩 la identidadidentity_principal_id
: Principal ID de la identidadidentity_client_id
: Client ID de la identidadidentity_tenant_id
: Tenant ID de la identidad
Informaci贸n de la Credencial Federada
credential_name
: Nombre de la credencial federadacredential_id
: ID de recurso completo de la credencialcredential_issuer
: Issuer de la credencial (ej: GitHub, OIDC provider)credential_subject
: Subject claim de la credencialcredential_audiences
: Audiencias de la credencialcredential_description
: Descripci贸n de la credencialcredential_type
: Tipo de recurso de la credencial
Metadatos del Reporte
subscription_id
: ID de la suscripci贸n de Azuresubscription_name
: Nombre de la suscripci贸n de Azuretenant_id
: ID del tenant de Azurereport_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
- Usa Managed Identity cuando sea posible en lugar de Service Principals
- Rota credenciales regularmente si usas autenticaci贸n basada en secretos
- Aplica principio de menor privilegio para los permisos de RBAC
- Audita regularmente las credenciales federadas usando estos reportes
- 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.