Inicio rápido: Creación de una asignación de directiva para identificar recursos no compatibles mediante Azure PowerShellQuickstart: Create a policy assignment to identify non-compliant resources using Azure PowerShell

El primer paso para entender el cumplimiento en Azure es identificar el estado de sus recursos.The first step in understanding compliance in Azure is to identify the status of your resources. En esta guía de inicio rápido, se crea una asignación de directiva para identificar máquinas virtuales que no usan discos administrados.In this quickstart, you create a policy assignment to identify virtual machines that aren't using managed disks. Cuando haya finalizado, podrá identificar máquinas virtuales que no estén conformes.When complete, you'll identify virtual machines that are non-compliant.

El módulo Azure PowerShell se usa para administrar recursos de Azure desde la línea de comandos o en scripts.The Azure PowerShell module is used to manage Azure resources from the command line or in scripts. En esta guía se explica cómo usar el módulo Az para crear una asignación de directiva.This guide explains how to use Az module to create a policy assignment.

PrerrequisitosPrerequisites

  • Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

  • Antes de comenzar, asegúrese de tener instalada la versión más reciente de Azure PowerShell.Before you start, make sure that the latest version of Azure PowerShell is installed. Consulte Instalación del módulo de Azure PowerShell para más información.See Install Azure PowerShell module for detailed information.

  • Registre el proveedor de recursos de Azure Policy Insights mediante Azure PowerShell.Register the Azure Policy Insights resource provider using Azure PowerShell. El registro del proveedor de recursos garantiza que la suscripción funcionará con él.Registering the resource provider makes sure that your subscription works with it. Para registrar un proveedor de recursos, debe tener permiso para registrar la operación del proveedor de recursos.To register a resource provider, you must have permission to the register resource provider operation. Esta operación está incluida en los roles Colaborador y Propietario.This operation is included in the Contributor and Owner roles. Para registrar el proveedor de recursos, ejecute el siguiente comando:Run the following command to register the resource provider:

    # Register the resource provider if it's not already registered
    Register-AzResourceProvider -ProviderNamespace 'Microsoft.PolicyInsights'
    

    Para más información sobre el registro y la visualización de los proveedores de recursos, consulte Tipos y proveedores de recursos.For more information about registering and viewing resource providers, see Resource Providers and Types.

Uso de Azure Cloud ShellUse Azure Cloud Shell

En Azure se hospeda Azure Cloud Shell, un entorno de shell interactivo que puede utilizar mediante el explorador.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Puede usar Bash o PowerShell con Cloud Shell para trabajar con los servicios de Azure.You can use either Bash or PowerShell with Cloud Shell to work with Azure services. Puede usar los comandos preinstalados de Cloud Shell para ejecutar el código de este artículo sin tener que instalar nada en su entorno local.You can use the Cloud Shell preinstalled commands to run the code in this article without having to install anything on your local environment.

Para iniciar Azure Cloud Shell:To start Azure Cloud Shell:

OpciónOption Ejemplo o vínculoExample/Link
Seleccione Pruébelo en la esquina superior derecha de un bloque de código.Select Try It in the upper-right corner of a code block. Solo con seleccionar Pruébelo no se copia automáticamente el código en Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Ejemplo de Probarlo para Azure Cloud Shell
Vaya a https://shell.azure.com o seleccione el botón Iniciar Cloud Shell para abrir Cloud Shell en el explorador.Go to https://shell.azure.com, or select the Launch Cloud Shell button to open Cloud Shell in your browser. Iniciar Cloud Shell en una nueva ventanaLaunch Cloud Shell in a new window
Seleccione el botón Cloud Shell en la barra de menús de la esquina superior derecha de Azure Portal.Select the Cloud Shell button on the menu bar at the upper right in the Azure portal. Botón Cloud Shell en Azure Portal

Para ejecutar el código de este artículo en Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Inicie Cloud Shell.Start Cloud Shell.

  2. Seleccione el botón Copiar de un bloque de código para copiar el código.Select the Copy button on a code block to copy the code.

  3. Pegue el código en la sesión de Cloud Shell. Para ello, seleccione Ctrl+Mayús+V en Windows y Linux, o bien seleccione Cmd+Mayús+V en macOS.Paste the code into the Cloud Shell session by selecting Ctrl+Shift+V on Windows and Linux or by selecting Cmd+Shift+V on macOS.

  4. Seleccione Entrar para ejecutar el código.Select Enter to run the code.

Creación de una asignación de directivaCreate a policy assignment

En esta guía de inicio rápido, se crea una asignación de directiva para la definición de Auditoría de máquinas virtuales sin discos administrados.In this quickstart, you create a policy assignment for the Audit VMs without managed disks definition. Esta definición de directiva identifica las máquinas virtuales que no utilizan discos administrados.This policy definition identifies virtual machines not using managed disks.

Ejecute los comandos siguientes para crear una nueva asignación de directiva:Run the following commands to create a new policy assignment:

# Get a reference to the resource group that will be the scope of the assignment
$rg = Get-AzResourceGroup -Name '<resourceGroupName>'

# Get a reference to the built-in policy definition that will be assigned
$definition = Get-AzPolicyDefinition | Where-Object { $_.Properties.DisplayName -eq 'Audit VMs that do not use managed disks' }

# Create the policy assignment with the built-in definition against your resource group
New-AzPolicyAssignment -Name 'audit-vm-manageddisks' -DisplayName 'Audit VMs without managed disks Assignment' -Scope $rg.ResourceId -PolicyDefinition $definition

Los comandos anteriores usan la siguiente información:The preceding commands use the following information:

  • Nombre: el nombre real de la asignación.Name - The actual name of the assignment. En este ejemplo se usa audit-vm-manageddisks.For this example, audit-vm-manageddisks was used.
  • DisplayName: nombre para mostrar de la asignación de directiva.DisplayName - Display name for the policy assignment. En este caso, usará Auditoría de máquinas virtuales sin discos administrados.In this case, you're using Audit VMs without managed disks Assignment.
  • Definition: definición de la directiva, según la opción utilizada para crear la asignación.Definition – The policy definition, based on which you're using to create the assignment. En este caso, es el identificador de la definición de directiva Auditoría de máquinas virtuales que no usan discos administrados.In this case, it's the ID of policy definition Audit VMs that do not use managed disks.
  • Scope: un ámbito determina en qué recursos o agrupación de recursos se aplica la asignación de directiva.Scope - A scope determines what resources or grouping of resources the policy assignment gets enforced on. Puede abarcar desde una suscripción hasta grupos de recursos.It could range from a subscription to resource groups. Asegúrese de sustituir <scope> por el nombre del grupo de recursos.Be sure to replace <scope> with the name of your resource group.

Ahora ya está listo para identificar los recursos no compatibles a fin de conocer el estado de cumplimiento de su entorno.You're now ready to identify non-compliant resources to understand the compliance state of your environment.

Identificación de recursos no compatiblesIdentify non-compliant resources

Utilice la siguiente información para identificar los recursos que no son compatibles con la asignación de directiva que ha creado.Use the following information to identify resources that aren't compliant with the policy assignment you created. Ejecute los comandos siguientes:Run the following commands:

# Get the resources in your resource group that are non-compliant to the policy assignment
Get-AzPolicyState -ResourceGroupName $rg.ResourceGroupName -PolicyAssignmentName 'audit-vm-manageddisks' -Filter 'IsCompliant eq false'

Para obtener más información sobre cómo obtener el estado de la directiva, consulte Get-AzPolicyState.For more information about getting policy state, see Get-AzPolicyState.

Los resultados deben tener una apariencia similar al ejemplo siguiente:Your results resemble the following example:

Timestamp                   : 3/9/19 9:21:29 PM
ResourceId                  : /subscriptions/{subscriptionId}/resourcegroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmId}
PolicyAssignmentId          : /subscriptions/{subscriptionId}/providers/microsoft.authorization/policyassignments/audit-vm-manageddisks
PolicyDefinitionId          : /providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d
IsCompliant                 : False
SubscriptionId              : {subscriptionId}
ResourceType                : /Microsoft.Compute/virtualMachines
ResourceTags                : tbd
PolicyAssignmentName        : audit-vm-manageddisks
PolicyAssignmentOwner       : tbd
PolicyAssignmentScope       : /subscriptions/{subscriptionId}
PolicyDefinitionName        : 06a78e20-9358-41c9-923c-fb736d382a4d
PolicyDefinitionAction      : audit
PolicyDefinitionCategory    : Compute
ManagementGroupIds          : {managementGroupId}

Los resultados coinciden con lo que ve en la pestaña de cumplimiento de recursos de una asignación de directiva en la vista de Azure Portal.The results match what you see in the Resource compliance tab of a policy assignment in the Azure portal view.

Limpieza de recursosClean up resources

Para quitar la asignación creada, ejecute el siguiente comando:To remove the assignment created, use the following command:

# Removes the policy assignment
Remove-AzPolicyAssignment -Name 'audit-vm-manageddisks' -Scope '/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>'

Pasos siguientesNext steps

En este inicio rápido, se asigna una definición de directiva para identificar los recursos incompatibles en el entorno de Azure.In this quickstart, you assigned a policy definition to identify non-compliant resources in your Azure environment.

Para más información sobre la asignación de directivas para garantizar la compatibilidad de los nuevos recursos, continúe con el tutorial para:To learn more about assigning policies to validate that new resources are compliant, continue to the tutorial for: