Uso de Azure Policy para implementar la gobernanza y los controles de recursos de Azure Cosmos DB

SE APLICA A: NoSQL MongoDB Cassandra Gremlin Table

Azure Policy ayuda a aplicar estándares de gobernanza de la organización, a valorar el cumplimiento de los recursos y a implementar correcciones automáticas. Algunos casos de uso comunes son la seguridad, la administración de costos y la coherencia de la configuración.

Azure Policy proporciona definiciones de directivas integradas Puede crear definiciones de directivas personalizadas para escenarios en los que no sirvan las definiciones de directivas integradas. Para más información, consulte la documentación de Azure Policy.

Importante

Azure Policy se aplica a los servicios de Azure en el nivel de proveedor de recursos. Los SDK de Azure Cosmos DB pueden realizar la mayoría de las operaciones de administración en los recursos de base de datos, contenedor y rendimiento que pasan por alto el proveedor de recursos de Azure Cosmos DB, de forma que se omiten las directivas creadas mediante Azure Policy. Para garantizar la aplicación de las directivas, consulte Bloqueo en los SDK de Azure Cosmos DB para evitar cambios.

Asignación de una definición de directiva integrada

Las definiciones de directivas describen las condiciones de cumplimiento de los recursos y qué sucederá si se cumple una condición. Las asignaciones de directiva se crean a partir de definiciones de directivas. Puede usar definiciones de directivas integradas o personalizadas con los recursos de Azure Cosmos DB. Las asignaciones de directiva se limitan a un grupo de administración de Azure, una suscripción de Azure o un grupo de recursos, y se aplican a los recursos dentro del ámbito seleccionado. Opcionalmente, puede excluir recursos específicos del ámbito.

Puede crear asignaciones de directiva con Azure Portal, Azure PowerShell, la CLI de Azure o plantillas de ARM.

Para crear una asignación de directiva a partir de una definición de directiva integrada para Azure Cosmos DB, siga los pasos descritos en el artículo Creación de una asignación de directiva con Azure Portal.

En el paso para seleccionar una definición de directiva, escriba Azure Cosmos DB en el campo de búsqueda para filtrar la lista de definiciones de directivas integradas disponibles. Seleccione una de las definiciones de directivas integradas disponibles y, luego, elija Seleccionar para continuar con la creación de la asignación de directiva.

Sugerencia

También puede usar los nombres de definición de directiva integrada que se muestran en el panel Definiciones disponibles con Azure PowerShell, la CLI de Azure o plantillas de ARM para crear asignaciones de directivas.

Búsqueda de definiciones de directivas integradas de Azure Cosmos DB

Creación de una definición de directiva personalizada

En el caso de escenarios específicos en los que no sirvan las directivas integradas, puede crear una definición de directiva personalizada. Más adelante creará una asignación de directiva a partir de la definición de directiva personalizada.

Tipos y alias de propiedades en reglas de directiva

Use los pasos de definición de directiva personalizada para identificar las propiedades de recursos y los alias de propiedad, que son necesarios para crear reglas de directiva.

Para identificar alias de propiedad específicos de Azure Cosmos DB, use el espacio de nombres Microsoft.DocumentDB con uno de los métodos que se muestran en el artículo sobre los pasos de definición de directivas personalizadas.

Uso de la CLI de Azure:

# Login first with az login if not using Cloud Shell

# Get Azure Policy aliases for namespace Microsoft.DocumentDB
az provider show --namespace Microsoft.DocumentDB --expand "resourceTypes/aliases" --query "resourceTypes[].aliases[].name"

Uso de Azure PowerShell:

# Login first with Connect-AzAccount if not using Cloud Shell

# Use Get-AzPolicyAlias to list aliases for Microsoft.DocumentDB namespace
(Get-AzPolicyAlias -NamespaceMatch 'Microsoft.DocumentDB').Aliases

Estos comandos generan la lista de nombres de alias de propiedad para propiedades de Azure Cosmos DB. A continuación, se muestra un extracto de la salida:

[
  "Microsoft.DocumentDB/databaseAccounts/sku.name",
  "Microsoft.DocumentDB/databaseAccounts/virtualNetworkRules[*]",
  "Microsoft.DocumentDB/databaseAccounts/virtualNetworkRules[*].id",
  "Microsoft.DocumentDB/databaseAccounts/isVirtualNetworkFilterEnabled",
  "Microsoft.DocumentDB/databaseAccounts/consistencyPolicy.defaultConsistencyLevel",
  "Microsoft.DocumentDB/databaseAccounts/enableAutomaticFailover",
  "Microsoft.DocumentDB/databaseAccounts/Locations",
  "Microsoft.DocumentDB/databaseAccounts/Locations[*]",
  "Microsoft.DocumentDB/databaseAccounts/Locations[*].locationName",
  "..."
]

Puede usar cualquiera de estos nombres de alias de propiedad en las reglas de definición de directiva personalizada.

El siguiente es un ejemplo de definición de directiva que comprueba si una cuenta de Azure Cosmos DB está configurada para varias ubicaciones de escritura. Una definición de directiva personalizada incluye dos reglas: una para comprobar el tipo específico de alias de propiedad y la otra para la propiedad específica del tipo, en este caso el campo que almacena la configuración de varias ubicaciones de escritura. Ambas reglas usan los nombres de alias.

"policyRule": {
  "if": {
    "allOf": [
      {
        "field": "type",
        "equals": "Microsoft.DocumentDB/databaseAccounts"
      },
      {
        "field": "Microsoft.DocumentDB/databaseAccounts/enableMultipleWriteLocations",
        "notEquals": true
      }
    ]
  },
  "then": {
    "effect": "Audit"
  }
}

Se pueden usar definiciones de directivas personalizadas para crear asignaciones de directiva de la misma manera que se usan las definiciones de directivas integradas.

Cumplimiento de directivas

Una vez creadas las asignaciones de directiva, Azure Policy evalúa los recursos en el ámbito de la asignación. Se valora el cumplimiento de cada recurso con la directiva. El efecto especificado en la directiva se aplica luego a los recursos no compatibles.

Puede revisar los resultados de cumplimiento y los detalles de corrección en Azure Portal, la CLI de Azure o los registros de Azure Monitor.

En la captura de pantalla siguiente se muestran dos ejemplos de asignaciones de directiva.

Una asignación se basa en una definición de directiva integrada, que comprueba que los recursos de Azure Cosmos DB se implementan solo en las regiones de Azure permitidas. La compatibilidad de recursos muestra el resultado de la evaluación de las directivas (compatible o no compatible) para los recursos del ámbito.

La otra asignación se basa en una definición de directiva personalizada. Esta asignación comprueba que las cuentas de Azure Cosmos DB estén configuradas para varias ubicaciones de escritura.

Una vez implementadas las asignaciones de directiva, el panel de cumplimiento muestra los resultados de la evaluación. Tenga en cuenta que esta operación puede tardar hasta 30 minutos después de implementar una asignación de directiva. Además, los análisis de evaluación de directivas se pueden iniciar a petición inmediatamente después de crear asignaciones de directivas.

En la captura de pantalla se muestran los siguientes resultados de la evaluación de cumplimiento para las cuentas de Azure Cosmos DB del ámbito:

  • Cero de dos cuentas cumple con una directiva por la que debe estar configurado el filtrado de Virtual Network (VNet).
  • Cero de dos cuentas cumple con una directiva que requiere que la cuenta esté configurada para varias ubicaciones de escritura.
  • Cero de dos cuentas cumple con una directiva por la que los recursos deben estar implementados en regiones de Azure permitidas.

Resultados de cumplimiento de las asignaciones de Azure Policy enumeradas

Para corregir los recursos no compatibles, consulte Corregir los recursos no conformes con Azure Policy.

Pasos siguientes