Pregunta más frecuente

Azure Policy - Creación y administración de directivas para aplicar el cumplimiento
Última actualización hace 3 años

Asignación de una directiva

El primer paso para aplicar cumplimientos con Azure Policy es asignar una definición de directiva. Una definición de directiva precisa en qué condiciones se aplica una directiva y qué efecto debe tener. En este ejemplo, asigne una definición de directiva integrada denominada Require SQL Server version 12.0 (Requerir SQL Server 12.0), para aplicar la condición de que todas las bases de datos SQL Server tengan que ser v12.0 para que satisfagan los requisitos de cumplimiento.

  1. Inicie el servicio Azure Policy en Azure Portal. Para ello, haga clic en Todos los servicios y, a continuación, busque y seleccione Directiva.

image


2. Seleccione Asignaciones en el panel izquierdo de la página de Azure Policy. Una asignación es una directiva que se asignó para que se lleve a cabo dentro de un ámbito específico.

3. Seleccione Asignar directiva en la parte superior de la página Policy - Asignaciones.

image


4. En la página Asignar directiva, haga clic en los puntos suspensivos para seleccionar una opción de Ámbito y seleccione una suscripción (obligatorio) y un grupo de recursos (opcional). Un ámbito determina en qué recursos o agrupación de recursos se implementa la asignación de directiva. Después, haga clic en Seleccionar en la parte inferior de la página Ámbito.

En este ejemplo se utiliza la suscripción de Contoso. Su suscripción variará.

5. Si quiere excluir uno o más grupos de recursos (en caso de que solo haya agregado ámbito a una suscripción) o recursos específicos dentro de un grupo de recursos (cualquier caso de ámbito), puede configurar Exclusiones en la asignación de directiva. Déjelo en blanco por ahora.

6. Seleccione los puntos suspensivos de Definición de directiva para abrir la lista de definiciones disponibles. Puede filtrar el campo Tipo de la definición de directiva por Integrada para verlas todas y leer sus descripciones.

7. Seleccione Require SQL Server version 12.0 (Requerir SQL Server 12.0). Si no la encuentra inmediatamente, escriba require sql server en el cuadro de búsqueda y, a continuación, presione ENTRAR o haga clic fuera del cuadro de búsqueda. Haga clic en Seleccionar en la parte inferior de la página Definiciones disponiblesdespués de encontrar y seleccionar la definición de directiva.

image


8. Nombre de asignación

se rellena automáticamente con el nombre de directiva seleccionado, pero puede cambiarlo. En este ejemplo, deje Require SQL Server version 12.0 (Requerir SQL Server 12.0). También puede agregar una Descripciónopcional. La descripción ofrece detalles sobre esta asignación de directiva.

9. Haga clic en Asignar.

Implementación de una nueva directiva personalizada

Ahora que ha asignado una definición de directiva integrada, puede hacer más cosas con Azure Policy. A continuación, creará una nueva directiva personalizada para ahorrar costos, para lo cual se asegurará de que las máquinas virtuales creadas en el entorno no puedan estar en la serie G. De este modo, cada vez que un usuario de su organización intente crear una máquina virtual de la serie G, la solicitud le será denegada.

  1. Seleccione Definiciones en CREACIÓN en el lado izquierdo de la página de Azure Policy.
image


2. Seleccione + Definición de directiva en la parte superior de la página. Se abrirá la página Definición de directiva.

3. Escriba lo siguiente:

  • El grupo de administración o la suscripción donde está guardada la definición de directiva. Para la selección use los puntos suspensivos en Ubicación de definición.

    Nota

    Si planea aplicar esta definición de directiva a varias suscripciones, la ubicación debe ser un grupo de administración que contenga las suscripciones a las que asignará la directiva. Lo mismo puede aplicarse a una definición de iniciativa.

  • El nombre de la definición de directiva: Require VM SKUs smaller than the G series (Requerir SKU de máquina virtual inferiores a la serie G)

  • La descripción de la finalidad de la definición de directiva: esta definición de directiva exige que todas las máquinas virtuales creadas en este ámbito tengan SKU inferiores a la serie G para reducir el costo.

  • Elija entre las opciones existentes o cree una nueva categoría para esta definición de directiva.

  • Copie el siguiente código json y, a continuación, actualícelo según sus necesidades con:
    • Los parámetros de directiva.
    • Las reglas/condiciones de la directiva, en este caso: tamaño de SKU de máquina virtual igual a la serie G
    • El efecto de la directiva, en este caso: Deny (Denegar).

    Este es el aspecto que debería tener el json. Pegue el código revisado en Azure Portal.

    JSONCopiar
    {
       "policyRule": {
           "if": {
               "allOf": [{
                       "field": "type",
                       "equals": "Microsoft.Compute/virtualMachines"
                   },
                   {
                       "field": "Microsoft.Compute/virtualMachines/sku.name",
                       "like": "Standard_G*"
                   }
               ]
           },
           "then": {
               "effect": "deny"
           }
       }
    }
    

    El valor de la propiedad field de la regla de directiva debe ser uno de los siguientes: nombre, tipo, ubicación, etiquetas o un alias. Un ejemplo de un alias podría ser "Microsoft.Compute/VirtualMachines/Size".

    Para ver más ejemplos de directivas de Azure, consulte Plantillas para Azure Policy.

  • Seleccione Guardar.

Creación de una definición de directiva con la API de REST

Puede crear una directiva con la API de REST para definiciones de directiva. La API de REST permite crear y eliminar definiciones de directiva, así como recuperar información sobre las definiciones existentes. Para crear una definición de directiva, use el siguiente ejemplo:

HTTPCopiarPruébelo

PUT https://management.azure.com/subscriptions/{subscription-id}/providers/Microsoft.authorization/policydefinitions/{policyDefinitionName}?api-version={api-version}

Incluya un cuerpo de solicitud similar al ejemplo siguiente:

JSONCopiar

{
    "properties": {
        "parameters": {
            "allowedLocations": {
                "type": "array",
                "metadata": {
                    "description": "The list of locations that can be specified when deploying resources",
                    "strongType": "location",
                    "displayName": "Allowed locations"
                }
            }
        },
        "displayName": "Allowed locations",
        "description": "This policy enables you to restrict the locations your organization can specify when deploying resources.",
        "policyRule": {
            "if": {
                "not": {
                    "field": "location",
                    "in": "[parameters('allowedLocations')]"
                }
            },
            "then": {
                "effect": "deny"
            }
        }
    }
}

Creación de una definición de directiva con PowerShell

Antes de continuar con el ejemplo de PowerShell, asegúrese de que tiene instalada la última versión de Azure PowerShell. Se agregaron parámetros de directiva en la versión 3.6.0. Si tiene una versión anterior, los ejemplos devuelven un error que indica que no se encuentra el parámetro.

Puede crear una definición de directiva con el cmdlet New-AzureRmPolicyDefinition.

Para crear una definición de directiva desde un archivo, pase la ruta de acceso al archivo.Para un archivo externo, use el ejemplo siguiente:

$definition = New-AzureRmPolicyDefinition `
    -Name 'denyCoolTiering' `
    -DisplayName 'Deny cool access tiering for storage' `
    -Policy 'https://raw.githubusercontent.com/Azure/azure-policy-samples/master/samples/Storage/storage-account-access-tier/azurepolicy.rules.json'

Para un archivo local, use el ejemplo siguiente:

$definition = New-AzureRmPolicyDefinition `
    -Name 'denyCoolTiering' `
    -Description 'Deny cool access tiering for storage' `
    -Policy 'c:\policies\coolAccessTier.json'

Para crear una definición de directiva con una regla insertada, use el ejemplo siguiente:

$definition = New-AzureRmPolicyDefinition -Name 'denyCoolTiering' -Description 'Deny cool access tiering for storage' -Policy '{
    "if": {
        "allOf": [{
                "field": "type",
                "equals": "Microsoft.Storage/storageAccounts"
            },
            {
                "field": "kind",
                "equals": "BlobStorage"
            },
            {
                "not": {
                    "field": "Microsoft.Storage/storageAccounts/accessTier",
                    "equals": "cool"
                }
            }
        ]
    },
    "then": {
        "effect": "deny"
    }
}'

La salida se almacena en un objeto $definition, que se usa durante la asignación de directivas. En el ejemplo siguiente se crea una definición de directiva que incluye parámetros:

$policy = '{
    "if": {
        "allOf": [{
                "field": "type",
                "equals": "Microsoft.Storage/storageAccounts"
            },
            {
                "not": {
                    "field": "location",
                    "in": "[parameters(''allowedLocations'')]"
                }
            }
        ]
    },
    "then": {
        "effect": "Deny"
    }
}'

$parameters = '{
    "allowedLocations": {
        "type": "array",
        "metadata": {
            "description": "The list of locations that can be specified when deploying storage accounts.",
            "strongType": "location",
            "displayName": "Allowed locations"
        }
    }
}'

$definition = New-AzureRmPolicyDefinition -Name 'storageLocations' -Description 'Policy to specify locations for storage accounts.' -Policy $policy -Parameter $parameters

Visualización de definiciones de directiva con PowerShell

Para ver todas las definiciones de directiva en su suscripción, utilice el siguiente comando:

Get-AzureRmPolicyDefinition

Devuelve todas las definiciones de directiva disponibles, incluidas las directivas integradas. Cada directiva se devuelve con el formato siguiente:

Copiar

Name               : e56962a6-4747-49cd-b67b-bf8b01975c4c
ResourceId         : /providers/Microsoft.Authorization/policyDefinitions/e56962a6-4747-49cd-b67b-bf8b01975c4c
ResourceName       : e56962a6-4747-49cd-b67b-bf8b01975c4c
ResourceType       : Microsoft.Authorization/policyDefinitions
Properties         : @{displayName=Allowed locations; policyType=BuiltIn; description=This policy enables you to
                     restrict the locations your organization can specify when deploying resources. Use to enforce
                     your geo-compliance requirements.; parameters=; policyRule=}
PolicyDefinitionId : /providers/Microsoft.Authorization/policyDefinitions/e56962a6-4747-49cd-b67b-bf8b01975c4c

Creación de una definición de directiva con la CLI de Azure

Puede crear una definición de directiva mediante la CLI de Azure con el comando de definición de directiva. Para crear una definición de directiva con una regla insertada, use el ejemplo siguiente:

Azure CLICopiarPruébelo

az policy definition create --name 'denyCoolTiering' --description 'Deny cool access tiering for storage' --rules '{
    "if": {
        "allOf": [{
                "field": "type",
                "equals": "Microsoft.Storage/storageAccounts"
            },
            {
                "field": "kind",
                "equals": "BlobStorage"
            },
            {
                "not": {
                    "field": "Microsoft.Storage/storageAccounts/accessTier",
                    "equals": "cool"
                }
            }
        ]
    },
    "then": {
        "effect": "deny"
    }
}'

Visualización de definiciones de directiva con la CLI de Azure

Para ver todas las definiciones de directiva en su suscripción, utilice el siguiente comando:

Azure CLICopiarPruébelo

az policy definition list

Devuelve todas las definiciones de directiva disponibles, incluidas las directivas integradas. Cada directiva se devuelve con el formato siguiente:

JSONCopiar

{
    "description": "This policy enables you to restrict the locations your organization can specify when deploying resources. Use to enforce your geo-compliance requirements.",
    "displayName": "Allowed locations",
    "id": "/providers/Microsoft.Authorization/policyDefinitions/e56962a6-4747-49cd-b67b-bf8b01975c4c",
    "name": "e56962a6-4747-49cd-b67b-bf8b01975c4c",
    "policyRule": {
        "if": {
            "not": {
                "field": "location",
                "in": "[parameters('listOfAllowedLocations')]"
            }
        },
        "then": {
            "effect": "Deny"
        }
    },
    "policyType": "BuiltIn"
}

Creación y asignación de una definición de iniciativa

Con una definición de iniciativa, puede agrupar varias definiciones de directiva para lograr un objetivo general. Cree una definición de iniciativa para asegurarse de que los recursos en el ámbito de la definición permanezcan en conformidad con las definiciones de directiva que componen la definición de iniciativa. Para más información sobre las definiciones de iniciativa, consulte Introducción a Azure Policy.

Creación de una definición de iniciativa

  1. Seleccione Definiciones en CREACIÓN en el lado izquierdo de la página de Azure Policy.
image

2. Seleccione + Initiative Definition (+ Definición de iniciativa) en la parte superior de la página para abrir la página Definición de iniciativa (Definición de iniciativa).

image


3. Use Ubicación de definición para seleccionar una suscripción para almacenar la definición.

4. Defina los campos Nombre y Descripción de la iniciativa.

En este ejemplo, se asegurará de que los recursos guarden conformidad con las definiciones de directiva sobre protección. Por tanto, el nombre de la iniciativa sería Get Secure (Estar protegido) y la descripción sería: This initiative has been created to handle all policy definitions associated with securing resources (Esta iniciativa se ha creado para administrar todas las definiciones de directiva asociadas con la protección de los recursos).

5. En Categoría, elija entre las opciones existentes o cree una nueva categoría.

6. Examine la lista Definiciones disponibles [mitad derecha de la página Initiative definition (definición de iniciativa)] y seleccione las definiciones de directiva que le gustaría agregar a esta iniciativa. En el caso de la iniciativa Get secure (Estar protegido), para agregar las siguientes definiciones de directiva integradas, haga clic en + junto a la información de definición de directiva o en una fila de definición de directiva y, a continuación, en la opción + Agregar de la página de detalles:

  • Requisito de la versión 12.0 de SQL Server
  • [Preview]: Monitor unprotected web applications in Security Center.
  • [Preview]: Monitor permissive network across in Security Center.
  • [Preview]: Monitor possible app Whitelisting in Security Center.
  • [Preview]: Monitor unencrypted VM Disks in Security Center.

Después de seleccionar la definición de directiva de la lista, esta se agregará a POLICIES AND PARAMETERS (DIRECTIVAS Y PARÁMETROS).

image


7. Haga clic en Save(Guardar).

Asignación de una definición de iniciativa

  1. Seleccione Definiciones en CREACIÓN en el lado izquierdo de la página de Azure Policy.
  2. Busque la definición de directiva Get Secure (Estar protegido) que creó anteriormente y selecciónela.

  3. Seleccione Asignar en la parte superior de la página para abrir la página Get Secure: Assign Initiative (Estar protegido: asignar iniciativa).

image

Como alternativa, puede hacer doble clic en la fila seleccionada o hacer clic en los puntos suspensivos al final de la fila de un menú contextual. A continuación, seleccione Asignar.

image


4.

Rellene la página Get Secure: Assign Initiative (Estar protegido: asignar iniciativa) con la siguiente información de ejemplo. Puede usar su propia información.

  • Ámbito: la suscripción donde guardó la iniciativa será la predeterminada.También puede cambiar ámbito para asignar la iniciativa a un grupo de recursos en la ubicación de almacenamiento de la suscripción.

  • Exclusiones: configure los recursos del ámbito para evitar que se les aplique la asignación de iniciativa.

  • Initiative definition (Definición de iniciativa) y Nombre de asignación: Get Secure (Estar protegido; rellenado previamente como el nombre de la iniciativa que se está asignando).

  • Descripción: esta asignación de iniciativa está adaptada para aplicar este grupo de definiciones de directiva.

5. Haga clic en Asignar.

Exclusión de un recurso no conforme o denegado mediante Exclusión

Siguiendo el ejemplo anterior, después de asignar la definición de directiva para requerir SQL Server versión 12.0, un servidor de SQL Server que se cree con cualquier otra versión diferente será denegado. En esta sección se va a examinar cómo resolver un intento denegado de crear un servidor de SQL Server mediante la creación de un exclusión de un grupo de recursos único. La exclusión impide el cumplimiento de la directiva (o iniciativa) en ese recurso. En el ejemplo siguiente, se permitirá cualquier versión de SQL Server en un único grupo de recursos. Se puede aplicar una exclusión a un grupo de recursos o se puede restringir la exclusión a recursos individuales.

Una implementación impedida debido a una directiva o una iniciativa asignada puede verse en dos ubicaciones:

  • En el grupo de recursos de destino de la implementación: seleccione Implementaciones en el lado izquierdo de la página y haga clic en el valor de Nombre de la implementación de la implementación con errores. El recurso denegado se mostrará con el estado Prohibido. Para determinar la directiva o iniciativa y la asignación que denegaron el recurso, haga clic en Failed. Click here for details -> (Error. Haga clic aquí para ver los detalles ->) en la página de información general de la implementación. Se abrirá una ventana en el lado derecho de la página con información sobre el error. En Detalles del error se mostrarán los GUID de los objetos de directiva relacionados.

image


En la página de Azure Policy: seleccione Cumplimiento en el lado izquierdo de la página y haga clic en la directiva Require SQL Server version 12.0 (Requerir SQL Server 12.0). En la página que se abre, debería ver un aumento en el recuento de Denegar. En la pestaña Eventos, también debería ver quién intentó realizar la implementación denegada por la directiva.

Actualización de la asignación con la exclusión

  1. Seleccione Asignaciones en CREACIÓN en el lado izquierdo de la página de Azure Policy.
  2. Examine todas las asignaciones de directiva y abra la asignación Require SQL Server version 12.0 (Requerir SQL Server 12.0).

  3. Para establecer la exclusión, haga clic en los puntos suspensivos y seleccione el grupo de recursos que quiere excluir, SQLServers_Excluded, en este ejemplo.

image


Nota

Dependiendo de la directiva y de su efecto, es posible que la exclusión también se conceda a los recursos específicos dentro de un grupo de recursos dentro del ámbito de la asignación. Dado que se usó un efecto Denegar en este tutorial, no tendría sentido establecer la exclusión en un recurso concreto que ya existe.

4. Haga clic en Seleccionar y después en Guardar.

En esta sección, ha resuelto la denegación del intento para crear un servidor de SQL Server mediante la creación de una exclusión de un grupo de recursos único.

Limpieza de recursos

Si terminó de trabajar con los recursos de este tutorial, use los pasos siguientes para eliminar todas las asignaciones y definiciones creadas anteriormente:

  1. Seleccione Definiciones (o Asignaciones si intenta eliminar una asignación) en CREACIÓN en el lado izquierdo de la página de Azure Policy.
  2. Busque la nueva definición de iniciativa o directiva (o asignación) que quiere quitar.
  3. Haga clic con el botón derecho en la fila o seleccione los puntos suspensivos al final de la definición (o asignación) y elija Eliminar definición (o Eliminar asignación ).

image

Espere, por favor!

Por favor, espere... tomará un segundo!