Turbot Guardrails Hub 
Hub
  • Mods
  • Policy Packs
  • Docs
  • Home
ModsPolicy PacksDocsHome
Mods
Azure
Loading policies...

Policy: Azure > CIS v2.0 > 09 - Application Services > 9.11 - Ensure Azure Key Vaults are Used to Store Secrets > Attestation

By setting this policy, you attest that you have manually verified that it complies with the relevant section of the CIS Benchmark.

Remediation has 2 steps 1. Setup the Key Vault 2. Setup the App Service to use the Key Vault

Step 1: Set up the Key Vault

From Azure CLI

az keyvault create --name "<name>" --resource-group "<myResourceGroup>" --location myLocation

From Powershell

New-AzKeyvault -name <name> -ResourceGroupName <myResourceGroup> -Location <myLocation>

Step 2: Set up the App Service to use the Key Vault Sample JSON Template for App Service Configuration:

{ "resources":[ { "type":"Microsoft.Storage/storageAccounts", "name":"[variables('storageAccountName')]", }, { "type":"Microsoft.Insights/components", "name":"[variables('appInsightsName')]", }, { "type":"Microsoft.Web/sites", "name":"[variables('functionAppName')]", "identity":{ "type":"SystemAssigned" }, "resources":[ { "type":"config", "name":"appsettings", "dependsOn":[ "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]", "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('storageConnectionStringName'))]", "[resourceId('Microsoft.KeyVault/vaults/secrets', variables('keyVaultName'), variables('appInsightsKeyName'))]" ], "properties":{ "AzureWebJobsStorage":"[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('storageConnectionStringResourceId')).secretUriWithVersio n, ')')]", "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING":"[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('storageConnectionStringResourceId')).secretUriWithVersio n, ')')]", "APPINSIGHTS_INSTRUMENTATIONKEY":"[concat('@Microsoft.KeyVault(SecretUri=', reference(variables('appInsightsKeyResourceId')).secretUriWithVersion, ')')]", "WEBSITE_ENABLE_SYNC_UPDATE_SITE":"true" } }, { "type":"sourcecontrols", "name":"web", "dependsOn":[ "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]", "[resourceId('Microsoft.Web/sites/config', variables('functionAppName'), 'appsettings')]" ] }{ "type":"Microsoft.KeyVault/vaults", "name":"[variables('keyVaultName')]", ] }, "dependsOn":[ "[resourceId('Microsoft.Web/sites', variables('functionAppName'))]" ], "properties":{ "accessPolicies":[ { "tenantId":"[reference(concat('Microsoft.Web/sites/', variables('functionAppName'), '/providers/Microsoft.ManagedIdentity/Identities/default'), '2015-08-31- PREVIEW').tenantId]", "objectId":"[reference(concat('Microsoft.Web/sites/', variables('functionAppName'), '/providers/Microsoft.ManagedIdentity/Identities/default'), '2015-08-31- PREVIEW').principalId]", "permissions":{ "secrets":[ "get" ] } }"resources":[ { "type":"secrets" ] }, "name":"[variables('storageConnectionStringName')]", "dependsOn":[ "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", "[resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName'))]" ], "properties":{ "value":"[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(variables('storageAccountResourceId'),'2015-05-01-preview').key1)]" } }, { "type":"secrets", "name":"[variables('appInsightsKeyName')]", "dependsOn":[ "[resourceId('Microsoft.KeyVault/vaults/', variables('keyVaultName'))]", "[resourceId('Microsoft.Insights/components', variables('appInsightsName'))]" ], "properties":{ "value":"[reference(resourceId('microsoft.insights/components/', variables('appInsightsName')), '2015-05-01').InstrumentationKey]" } } ] } ] }

Once verified, enter the date that this attestation expires. Note that the date can not be further in the future than is specified in report level Maximum Attestation Duration policy. Set to a blank value to clear the attestation.

Targets

This policy targets the following resource types:

  • Azure > Key Vault > Vault

Primary Policy

This policy is used with the following primary policy:

  • Azure > CIS v2.0 > 09 - Application Services > 9.11 - Ensure Azure Key Vaults are Used to Store Secrets

Controls

Setting this policy configures this control:

  • Azure > CIS v2.0 > 09 - Application Services > 9.11 - Ensure Azure Key Vaults are Used to Store Secrets

Policy Specification

Schema Type
string

Category

  • CIS > Controls v7 > 13 Data Protection > 13.01 Maintain an Inventory Sensitive Information

In Your Workspace

  • Policy Settings by Type report

Developers

    Category URI
    • tmod:@turbot/cis#/control/categories/v071301
  • Policy Type URI
    • tmod:@turbot/azure-cisv2-0#/policy/types/r0911Attestation
  • GraphQL
    • query policyType(id: "tmod:@turbot/azure-cisv2-0#/policy/types/r0911Attestation") { … }
    • query policySettings(filter: "policyTypeId:'tmod:@turbot/azure-cisv2-0#/policy/types/r0911Attestation'") { … }
    • query policyValues(filter: "policyTypeId:'tmod:@turbot/azure-cisv2-0#/policy/types/r0911Attestation'") { … }
  • CLI
    • Get Policy Type
    • turbot graphql policy-type --id "tmod:@turbot/azure-cisv2-0#/policy/types/r0911Attestation"
    • Get Policy Settings
    • turbot graphql policy-settings --filter "policyTypeId:tmod:@turbot/azure-cisv2-0#/policy/types/r0911Attestation"
Guardrails
Guardrails Hub
  • Hub
  • Docs
  • Blog
  • Changelog
Products
  • GuardrailsGuardrails
  • PipesPipes
  • SteampipeSteampipe
  • PowerpipePowerpipe
  • FlowpipeFlowpipe
  • TailpipeTailpipe
Turbot
  • Home
  • About us
  • We're hiring!
  • Contact us
Community

Our community of practitioners love to discuss cloud governance & security.

Slack logoJoin us on Slack →

System StatusLegalSecurity
Terms of UseSecurityPrivacy
50
Mods
205
Resource Types
3,574
Policies
1,936
Controls
103
Quick Actions
114
IAM