Skip to content

Instantly share code, notes, and snippets.

@garethr
Created August 16, 2019 10:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save garethr/f82b093ad7237ac00e3903a6fcf32b4a to your computer and use it in GitHub Desktop.
Save garethr/f82b093ad7237ac00e3903a6fcf32b4a to your computer and use it in GitHub Desktop.
{
"id":"https://schema.management.azure.com/schemas/2018-05-01/policyDefinition.json#",
"$schema":"http://json-schema.org/draft-04/schema#",
"title":"Policy Definition",
"description":"This schema defines Azure resource policy definition, please see https://azure.microsoft.com/en-us/documentation/articles/resource-manager-policy/ for more details.",
"type":"object",
"properties":{
"if":{
"oneOf":[
{
"$ref":"#/definitions/condition"
},
{
"$ref":"#/definitions/operatorNot"
},
{
"$ref":"#/definitions/operatorAnyOf"
},
{
"$ref":"#/definitions/operatorAllOf"
}
]
},
"then":{
"type":"object",
"properties":{
"effect":{
"type":"string",
"enum":[
"append",
"audit",
"auditIfNotExists",
"deny",
"deployIfNotExists"
]
},
"details":{
"oneOf":[
{
"$ref":"#/definitions/ifNotExistsDetails"
},
{
"$ref":"#/definitions/appendDetails"
}
]
}
},
"required":[
"effect"
],
"additionalProperties":false
}
},
"required":[
"if",
"then"
],
"additionalProperties":false,
"definitions":{
"appendDetails":{
"type":"array",
"items":{
"properties":{
"field":{
"type":"string"
},
"value":{
}
},
"required":[
"field",
"value"
],
"additionalProperties":false
},
"minItems":1,
"additionalItems":false
},
"ifNotExistsDetails":{
"type":"object",
"properties":{
"type":{
"type":"string"
},
"name":{
"type":"string"
},
"resourceGroupName":{
"type":"string"
},
"existenceScope":{
"type":"string",
"enum":[
"resourceGroup",
"subscription"
]
},
"roleDefinitionIds":{
"type":"array",
"items":{
"type":"string"
}
},
"existenceCondition":{
"oneOf":[
{
"$ref":"#/definitions/condition"
},
{
"$ref":"#/definitions/operatorNot"
},
{
"$ref":"#/definitions/operatorAnyOf"
},
{
"$ref":"#/definitions/operatorAllOf"
}
]
},
"deployment":{
"type":"object",
"properties":{
"properties":{
"$ref":"https://schema.management.azure.com/schemas/2018-05-01/Microsoft.Resources.json#/definitions/DeploymentProperties"
}
}
}
},
"required":[
"type"
],
"additionalProperties":false
},
"condition":{
"allOf":[
{
"oneOf":[
{
"properties":{
"source":{
"type":"string"
}
},
"required":[
"source"
]
},
{
"properties":{
"field":{
"type":"string"
}
},
"required":[
"field"
]
}
]
},
{
"oneOf":[
{
"properties":{
"equals":{
"type":"string"
}
},
"required":[
"equals"
]
},
{
"properties":{
"notEquals":{
"type":"string"
}
},
"required":[
"notEquals"
]
},
{
"properties":{
"like":{
"type":"string"
}
},
"required":[
"like"
]
},
{
"properties":{
"notLike":{
"type":"string"
}
},
"required":[
"notLike"
]
},
{
"properties":{
"contains":{
"type":"string"
}
},
"required":[
"contains"
]
},
{
"properties":{
"notContains":{
"type":"string"
}
},
"required":[
"notContains"
]
},
{
"properties":{
"in":{
"oneOf":[
{
"type":"array"
},
{
"type":"string"
}
]
}
},
"required":[
"in"
]
},
{
"properties":{
"notIn":{
"oneOf":[
{
"type":"array"
},
{
"type":"string"
}
]
}
},
"required":[
"notIn"
]
},
{
"properties":{
"containsKey":{
"type":"string"
}
},
"required":[
"containsKey"
]
},
{
"properties":{
"notContainsKey":{
"type":"string"
}
},
"required":[
"notContainsKey"
]
},
{
"properties":{
"match":{
"type":"string"
}
},
"required":[
"match"
]
},
{
"properties":{
"notMatch":{
"type":"string"
}
},
"required":[
"notMatch"
]
},
{
"properties":{
"exists":{
"type":"string"
}
},
"required":[
"exists"
]
}
]
}
]
},
"operatorNot":{
"properties":{
"not":{
"oneOf":[
{
"$ref":"#/definitions/condition"
},
{
"$ref":"#/definitions/operatorNot"
},
{
"$ref":"#/definitions/operatorAnyOf"
},
{
"$ref":"#/definitions/operatorAllOf"
}
]
}
},
"required":[
"not"
],
"additionalProperties":false
},
"operatorAnyOf":{
"properties":{
"anyOf":{
"type":"array",
"minItems":1,
"items":{
"oneOf":[
{
"$ref":"#/definitions/condition"
},
{
"$ref":"#/definitions/operatorNot"
},
{
"$ref":"#/definitions/operatorAnyOf"
},
{
"$ref":"#/definitions/operatorAllOf"
}
]
}
}
},
"required":[
"anyOf"
],
"additionalProperties":false
},
"operatorAllOf":{
"properties":{
"allOf":{
"type":"array",
"minItems":1,
"items":{
"oneOf":[
{
"$ref":"#/definitions/condition"
},
{
"$ref":"#/definitions/operatorNot"
},
{
"$ref":"#/definitions/operatorAnyOf"
},
{
"$ref":"#/definitions/operatorAllOf"
}
]
}
}
},
"required":[
"allOf"
],
"additionalProperties":false
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment