Obtención de datos de cumplimiento de los recursos de Azure
Artículo
Una de las ventajas más grandes de Azure Policy es la información y los controles que proporciona sobre los recursos de una suscripción o grupo de administración de suscripciones. Este control puede usarse para evitar que los recursos se creen en una ubicación incorrecta, forzar un uso común y coherente de las etiquetas, o auditar los recursos existentes para ver si las opciones y configuraciones son apropiadas. En todos los casos, los datos se generan en Azure Policy para que pueda conocer el estado de cumplimiento de su entorno.
Antes de pasar a los métodos que informan sobre el cumplimiento, veamos cuándo se actualiza la información de cumplimiento y la frecuencia y eventos que desencadenan un ciclo de evaluación.
Desencadenadores de evaluación
Los resultados de un ciclo de evaluación completo están disponibles en el proveedor de recursos Microsoft.PolicyInsights por medio de las operaciones PolicyStates y PolicyEvents. Para más información sobre las operaciones de la API REST Azure Policy Insights, consulte Azure Policy Insights.
Las evaluaciones de directivas asignadas e iniciativas se producen como resultado de varios eventos:
Una directiva o iniciativa se asigna recientemente a un ámbito. La asignación tarda unos cinco minutos en aplicarse al ámbito definido y, luego, comienza el ciclo de evaluación de los recursos aplicables con respecto a la directiva o iniciativa recién asignadas. En función de los efectos usados, los recursos se marcan como compatibles, no compatibles, exentos o desconocidos. Una directiva o iniciativa grande evaluada en un ámbito amplio de recursos puede tardar bastante tiempo, por lo que no hay una predicción de cuándo se completará el ciclo de evaluación. Una vez completado, los resultados de cumplimiento actualizados están disponibles en el portal y en los SDK.
Una directiva o iniciativa que ya está asignada a un ámbito se actualiza. El ciclo de evaluación y control de tiempo en este escenario es el mismo que para una nueva asignación a un ámbito.
Un recurso se implementa o actualiza en un ámbito con una asignación mediante Azure Resource Manager, la API REST o un SDK compatible. En este escenario, el evento de efecto (anexar, auditar, denegar, implementar) y la información de estado de cumplimiento para el recurso individual están disponibles en el portal y en los SDK unos 15 minutos más tarde. Este evento no causa una evaluación de otros recursos.
Una suscripción (tipo de recurso Microsoft.Resources/subscriptions) se crea o mueve dentro de una jerarquía de grupos de administración con una definición de directiva asignada que tiene como destino el tipo de recurso de suscripción. La evaluación de los efectos admitidos de la suscripción (audit, auditIfNotExist, deployIfNotExists, modify), el registro y cualquier acción de corrección tarda aproximadamente 30 minutos.
Se crea, actualiza o elimina una directiva de exención. En este escenario, se evalúa el ámbito de exención definido en la asignación correspondiente.
Ciclo de evaluación de cumplimiento estándar. Una vez cada 24 horas, las asignaciones se vuelven a evaluar automáticamente. Una directiva o iniciativa grande de muchos recursos puede tardar bastante tiempo, por lo que no hay una predicción de cuándo se completará el ciclo de evaluación. Una vez completado, los resultados de cumplimiento actualizados están disponibles en el portal y en los SDK.
Un recurso administrado actualiza el proveedor de recursos Configuración de la máquina con los detalles de cumplimiento.
Examen a petición
Nota
Por naturaleza, Azure Policy exime a todos los recursos del proveedor de recursos (RP) Microsoft.Resources de la evaluación de directivas con la excepción de las suscripciones y los grupos de recursos, que sí se pueden evaluar.
Examen de evaluación a petición
Un examen de evaluación de una suscripción o un grupo de recursos se puede iniciar con la CLI de Azure, Azure PowerShell, una llamada a la API de REST o mediante la acción de GitHub del examen de cumplimiento de Azure Policy. Este examen es un proceso asincrónico.
Nota
No todos los proveedores de recursos de Azure admiten exámenes de evaluación a petición. Por ejemplo, actualmente Azure Virtual Network Manager (AVNM) no admite desencadenadores manuales ni el ciclo de evaluación de cumplimiento de directivas estándar (exámenes diarios).
Detección de evaluaciones a petición: acción de GitHub
Use la acción de Azure Policy de análisis de cumplimiento para desencadenar un análisis de evaluación a petición desde el flujo de trabajo de GitHub en uno o varios recursos, grupos de recursos o suscripciones, y para canalizar el flujo de trabajo en función del estado de cumplimiento de los recursos. También puede configurar el flujo de trabajo para que se ejecute a una hora programada, y así poder obtener el estado de cumplimiento más reciente en un momento adecuado. Opcionalmente, Acciones de GitHub puede generar un informe sobre el estado de cumplimiento de los recursos examinados para analizarlos más en profundidad o archivarlos.
En el ejemplo siguiente se ejecuta el examen de cumplimiento de una suscripción.
De forma predeterminada, az policy state trigger-scan inicia una evaluación de todos los recursos de la suscripción actual. Para iniciar una evaluación en un grupo de recursos específico, use el parámetro resource-group. En el ejemplo siguiente se inicia un examen de cumplimiento de la suscripción actual para el grupo de recursos MyRG:
Azure CLI
az policy state trigger-scan --resource-group"MyRG"
Puede optar por no esperar a que se complete el proceso asincrónico antes de continuar con el parámetro no-wait.
Análisis de evaluación a petición: Azure PowerShell
De forma predeterminada, Start-AzPolicyComplianceScan inicia una evaluación de todos los recursos de la suscripción actual. Para iniciar una evaluación en un grupo de recursos específico, use el parámetro ResourceGroupName. En el ejemplo siguiente se inicia un examen de cumplimiento de la suscripción actual para el grupo de recursos MyRG:
Puede hacer que PowerShell espere a que se complete la llamada asincrónica antes de proporcionar la salida de resultados o hacer que se ejecute en segundo plano como un trabajo. Para usar un trabajo de PowerShell para ejecutar el examen de cumplimiento en segundo plano, use el parámetro AsJob y establezca el valor en un objeto, como $job en este ejemplo:
Azure PowerShell
$job = Start-AzPolicyComplianceScan -AsJob
Para comprobar el estado del trabajo, compruebe el objeto $job. El trabajo es del tipo Microsoft.Azure.Commands.Common.AzureLongRunningJob. Use Get-Member en el objeto $job para ver las propiedades y los métodos disponibles.
Mientras se ejecuta el examen de cumplimiento, la comprobación del objeto $job genera resultados como los siguientes:
Azure PowerShell
$job
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
2 Long Running O... AzureLongRunni... Running True localhost Start-AzPolicyCompliance...
Cuando se completa el examen de cumplimiento, la propiedad State cambia a Completado.
Examen de evaluación a petición: REST
En cuanto proceso asincrónico, el punto de conexión de REST que inicia el examen no espera a que esté completo para responder. En su lugar, proporciona un URI para consultar el estado de la evaluación solicitada.
En cada identificador URI de la API REST, hay variables usadas que se deben reemplazar por sus propios valores:
{YourRG}: reemplácelo por el nombre del grupo de recursos
{subscriptionId}: reemplácelo por el identificador de suscripción
El examen admite la evaluación de recursos de una suscripción o de un grupo de recursos. Inicie un examen para el ámbito con un comando POST de API REST mediante las siguientes estructuras de URI:
Subscription
HTTP
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
Resource group
HTTP
POST https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{YourRG}/providers/Microsoft.PolicyInsights/policyStates/latest/triggerEvaluation?api-version=2019-10-01
La llamada devuelve un estado 202 - Aceptado. En el encabezado de la respuesta se incluye una propiedad location con el formato siguiente:
{ResourceContainerGUID} se genera estáticamente para el ámbito solicitado. Si un ámbito ya está ejecutando un examen a petición, no se iniciará un nuevo examen. En su lugar, se proporciona a la nueva solicitud el mismo URI de {ResourceContainerGUID} de location para el estado. Un comando GET de API REST en el URI location devolverá una respuesta 202 - Aceptado mientras la evaluación esté en curso. Una vez completado el examen de evaluación, devuelve un estado de 200 OK. El cuerpo de un examen completo es una respuesta JSON con el estado:
JSON
{
"status": "Succeeded"
}
Examen de evaluación a petición: Visual Studio Code
La extensión de Azure Policy para Visual Studio Code puede ejecutar un examen de evaluación para un recurso específico. Este examen es un proceso sincrónico, a diferencia de los métodos de Azure PowerShell y REST. Para obtener más información y conocer los pasos, consulte Evaluación a petición con la extensión VS Code.
Portal
Azure Portal presenta de forma gráfica la visualización y el reconocimiento del estado de cumplimiento de normas en su entorno. En la página Directiva, la opción Información general proporciona detalles sobre el cumplimiento de directivas e iniciativas por parte de los ámbitos disponibles. Junto con el recuento y el estado de cumplimiento por asignación, contiene un gráfico que muestra el cumplimiento durante los últimos siete días. La página Cumplimiento contiene gran parte de esta misma información (excepto el gráfico), pero ofrece más opciones de filtrado y ordenación.
Dado que una directiva o iniciativa se puede asignar a distintos ámbitos, la tabla incluye el ámbito de cada asignación y el tipo de definición que se asignó. También se proporciona el número de directivas y recursos no compatibles para cada asignación. Al seleccionar una directiva o una iniciativa de la tabla, se proporciona más información sobre el cumplimiento de esa asignación en particular.
La lista de recursos de la pestaña Compatibilidad de recursos muestra el estado de evaluación de los recursos existentes para la asignación actual. El valor predeterminado de la pestaña es No compatible, pero se puede filtrar. Los eventos (anexar, auditar, denegar, implementar, modificar) que desencadena la solicitud para crear un recurso se muestran en la pestaña Eventos.
En cuanto a los recursos del modo de proveedor de recursos, en la pestaña Resource compliance (Compatibilidad de recursos), si selecciona el recurso o hace clic con el botón derecho en la fila y selecciona View compliance details (Ver detalles de cumplimiento), se abren los detalles de cumplimiento de los componentes. Esta página también ofrece pestañas para ver las directivas que se asignan a este recurso, eventos, eventos de componentes e historial de cambios.
De vuelta a la página de cumplimiento de recursos, seleccione y mantenga pulsada (o haga clic con el botón derecho) la fila del evento sobre el que quiere recopilar información más detallada y seleccione Show activity logs (Mostrar los registros de actividad). Se abre la página de registro de actividad y se filtra previamente para mostrar detalles de la asignación y los eventos. El registro de actividad proporciona contexto e información sobre esos eventos.
La misma información que está disponible en el portal se puede recuperar mediante la API REST (incluso con ARMClient), Azure PowerShell y la CLI de Azure. Para detalles completos sobre la API REST, consulte la referencia de Azure Policy. Las páginas de referencia de la API REST tienen un botón verde Probarlo en cada operación que le permite probarla directamente en el navegador.
Use ARMClient o una herramienta similar para tratar la autenticación en Azure para los ejemplos de la API REST.
Resumen de resultados
Con la API REST, el resumen se puede realizar por contenedor, definición o asignación. Este es un ejemplo de resumen en el nivel de suscripción mediante Resumen de la suscripción de Azure Policy Insights:
HTTP
POST https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/summarize?api-version=2019-10-01
La salida resume la suscripción. En la salida del ejemplo siguiente, el cumplimiento resumido se encuentra en value.results.nonCompliantResources y value.results.nonCompliantPolicies. Esta solicitud proporciona más detalles, incluida cada asignación que compone los números no compatibles y la información de definición de cada asignación. Cada objeto de directiva de la jerarquía proporciona un elemento queryResultsUri que puede utilizarse para obtener detalles adicionales en ese nivel.
En el ejemplo anterior, value.policyAssignments.policyDefinitions.results.queryResultsUri proporciona un URI de ejemplo para todos los recursos no compatibles para una definición de directiva específica. En el valor $filter, ComplianceState es igual (eq) a NonCompliant, se especifica PolicyAssignmentId para la definición de directiva y, a continuación, el propio PolicyDefinitionId. La razón para incluir PolicyAssignmentId en el filtro es que PolicyDefinitionId podría existir en varias asignaciones de directivas o de iniciativas con diversos ámbitos. Al especificar tanto el PolicyAssignmentId como el PolicyDefinitionId, podemos ser explícitos en los resultados que estamos buscando. Anteriormente, para PolicyStates usamos latest, que establece automáticamente un período de tiempo de from y to de las últimas 24 horas.
HTTP
https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$from=2018-05-18 04:28:22Z&$to=2018-05-19 04:28:22Z&$filter=ComplianceState eq 'NonCompliant' and PolicyAssignmentId eq '/subscriptions/{subscriptionId}/resourcegroups/rg-tags/providers/microsoft.authorization/policyassignments/37ce239ae4304622914f0c77' and PolicyDefinitionId eq '/providers/microsoft.authorization/policydefinitions/1e30110a-5ceb-460c-a204-c1c3969c6d62'
La siguiente respuesta de ejemplo se ha recortado a un único recurso no compatible para mayor brevedad. La respuesta detallada tiene varios elementos de datos sobre el recurso, la directiva (o iniciativa) y la asignación. Tenga en cuenta que también puede ver qué parámetros de asignación se han pasado a la definición de directiva.
Cuando se crea o actualiza un recurso, se genera un resultado de evaluación de directiva. Los resultados se denominan eventos de directiva. Utilice el siguiente URI para ver eventos recientes de directiva asociados a la suscripción.
Ejemplo: Obtener el registro de estado para el recurso evaluado más recientemente (el valor predeterminado es por marca de tiempo en orden descendente).
El módulo Azure PowerShell para Azure Policy está disponible en la Galería de PowerShell como Az.PolicyInsights. Con el uso de PowerShellGet, puede instalar el módulo con Install-Module -Name Az.PolicyInsights (asegúrese de tener instalada la última versión de Azure PowerShell):
Azure PowerShell
# Install from PowerShell Gallery via PowerShellGetInstall-Module -Name Az.PolicyInsights
# Import the downloaded moduleImport-Module Az.PolicyInsights
# Login with Connect-AzAccount if not using Cloud ShellConnect-AzAccount
El módulo incluye los siguientes cmdlets:
Get-AzPolicyStateSummary
Get-AzPolicyState
Get-AzPolicyEvent
Get-AzPolicyRemediation
Remove-AzPolicyRemediation
Start-AzPolicyRemediation
Stop-AzPolicyRemediation
Ejemplo: Obtener el resumen de estado para la directiva asignada superior con el mayor número de recursos no compatibles.
Ejemplo: Obtener el registro de estado para el recurso evaluado más recientemente (el valor predeterminado es por marca de tiempo en orden descendente).
Ejemplo: obtención de eventos relacionados con recursos de red virtual no compatibles que se produjeron después de una fecha concreta, conversión a un objeto CSV y exportación a un archivo.
El campo PrincipalOid se puede usar para obtener un usuario específico con el cmdlet de Azure PowerShell Get-AzADUser. Reemplace {principalOid} por la respuesta que obtiene del ejemplo anterior.
Si tiene vinculada a la suscripción un área de trabajo de Log Analytics con el valor AzureActivity de la solución Activity Log Analytics, también puede ver los resultados referentes a elementos no compatibles de la evaluación de los recursos nuevos y actualizados mediante consultas sencillas de Kusto y la tabla AzureActivity. Con los detalles de los registros de Azure Monitor, se pueden configurar alertas para comprobar la opción de no compatibilidad.
Azure Resource Graph
Los registros de cumplimiento se almacenan en Azure Resource Graph (ARG). Los datos se pueden exportar desde las consultas de ARG para formar paneles personalizados en función de los ámbitos y las directivas de interés. Revise nuestras consultas de ejemplo para exportar los datos de cumplimiento mediante ARG.
Demuestre los aspectos básicos de la seguridad de los datos, la administración del ciclo de vida, la seguridad de la información y el cumplimiento para proteger una implementación de Microsoft 365.
Se enumeran las definiciones de directiva integradas para Azure Policy. Las categorías incluyen Etiquetas, Cumplimiento de normativas, Key Vault, Kubernetes, Azure Machine Configuration, y mucho más.
Se enumeran las iniciativas de directiva integradas para Azure Policy. Las categorías incluyen Cumplimiento de normativas, Configuración de máquinas de Azure, etc.