Learn how to connect multiple Azure services seamlessly, simplifying integration and ensuring access for most Microsoft integrations. We will guide you through setting up permissions for Azure services integrated with Scytale.
Permissions for Azure Integrations
Azure authorizes these integrations through an Azure RBAC role assignment on the subscription. Assign one of the following to the app registration at subscription scope:
Reader - recommended. The built-in read-only role. It covers every read action Scytale uses and is the simplest option.
Custom role. Use this only if your organization won't grant a built-in role. See Custom Role Definition below.
Monitoring Reader role. The built-in read-only role specifically for Azure Monitor.
Scytale follows the least-privilege principle, limiting permission scopes strictly to what's required for reliable audit evidence collection.
Please note: This guide describes how to connect the Azure services listed at the bottom of this page. Any service not listed there has a separate guide.
How to Connect
In Scytale, go to 'Integrations'.
Search for the Azure service you want to connect and select 'Connect'.
Paste your Directory (tenant) ID, Application (client) ID, client secret value & Subscription ID.
Add a connection name — this will be used to differentiate between your connections — and then select 'Connect'.
You have now successfully connected to Microsoft Azure.
Repeat these steps for each Microsoft Azure service you want to connect. The same app registration and credentials are used for all of them.
How To Create Credentials in Azure
Step 1 - Register an application
Sign in to the Azure portal and go to Microsoft Entra ID.
On the left menu, select App registrations, then select New registration.
Enter a name for the application, for example scytale-ai-azure-integrations.
Under Supported account types, select Accounts in this organizational directory only, which is the single-tenant option.
A redirect URI is not required. Select Register.
On the application's Overview page, under Essentials, copy the Application (client) ID and the Directory (tenant) ID. Paste both into the Scytale integration page.
Step 2 - Create a client secret
Go to Certificates & secrets, then select New client secret.
Enter a description, for example scytale-dev key.
Set Expires to 24 months, or until your contract ends. Scytale cannot collect data after the secret expires.
Select Add.
Copy the secret Value and paste it into the Scytale integration page. Copy it immediately, as Azure hides it after you leave the page. Copy the Value, not the Secret ID. The value must be at least 32 characters.
Step 3 - Assign the Reader role on the subscription
This step is what grants Scytale access. Registering the application and creating a secret is not enough on its own.
In the Azure portal, go to Subscriptions and select the subscription you want Scytale to read.
Select Access control (IAM), then select the Role assignments tab.
Select Add, then select Add role assignment.
On the Role tab, search for Reader and select it. Select Next.
On the Members tab, select User, group, or service principal. Do not select Managed identity.
Select Select members, search for the application you registered in Step 1, select it, then select Select.
Select Next, then select Review + assign.
Role assignments take 1 to 5 minutes to propagate. If the connection fails immediately after you assign the role, wait a few minutes and try again.
Step 4 - Copy the Subscription ID
In the Azure portal, go to Subscriptions.
Copy the Subscription ID of the subscription you assigned the Reader role to.
Paste it into the Scytale integration page.
Step 5 (optional) - Azure Key Vault only: grant data-plane access
Azure Key Vault only. Skip this unless you're connecting Azure Key Vault. Key metadata lives behind Key Vault's own permission layer, which the subscription-level Reader role does not reach. Without this step Azure Key Vault connects successfully but returns no data, with no error and an empty result. Scytale reads key names, expiry dates, and rotation policies only, and never key material or secret values.
How you grant it depends on the vault's permission model, shown on the vault under Settings then Access configuration:
Azure role-based access control - assign the built-in Key Vault Reader role to the app registration, at subscription or individual vault scope. Follow the same steps as Step 3, selecting Key Vault Reader instead of Reader.
Vault access policy - add an access policy for the app registration granting Key permissions: Get and List.
Repeat for each vault, unless you assigned Key Vault Reader at subscription scope. The equivalent DataActions are Microsoft.KeyVault/vaults/keys/read and Microsoft.KeyVault/vaults/keyrotationpolicies/read.
Custom Role Definition
Use this only if your organization won't grant the built-in Reader role.
Replace {your-subscription-id} with your Subscription ID from Step 4.
In the Azure portal. Go to your subscription, select Access control (IAM), select Add, then select Add custom role.
On the Basics tab set Baseline permissions to Start from JSON and upload a file containing the definition below. The portal expects this nested format.
{
"properties": {
"roleName": "Scytale Compliance Reader",
"description": "Read-only access for Scytale Azure evidence collection.",
"assignableScopes": ["/subscriptions/{your-subscription-id}"],
"permissions": [
{
"actions": [
"Microsoft.Resources/subscriptions/read",
"Microsoft.Resources/subscriptions/resourceGroups/read",
"Microsoft.Resources/subscriptions/resources/read",
"Microsoft.Sql/servers/read",
"Microsoft.Sql/servers/databases/read",
"Microsoft.Sql/servers/databases/transparentDataEncryption/read",
"Microsoft.Sql/servers/databases/backupShortTermRetentionPolicies/read",
"Microsoft.Sql/servers/databases/replicationLinks/read",
"Microsoft.Sql/servers/encryptionProtector/read",
"Microsoft.Sql/managedInstances/read",
"Microsoft.Sql/managedInstances/databases/read",
"Microsoft.Sql/managedInstances/databases/backupShortTermRetentionPolicies/read",
"Microsoft.Sql/managedInstances/databases/transparentDataEncryption/read",
"Microsoft.Sql/managedInstances/encryptionProtector/read",
"Microsoft.DBforMySQL/flexibleServers/read",
"Microsoft.DBforMySQL/flexibleServers/backups/read",
"Microsoft.Storage/storageAccounts/read",
"Microsoft.Storage/storageAccounts/fileServices/read",
"Microsoft.Storage/storageAccounts/blobServices/containers/read",
"Microsoft.Storage/storageAccounts/managementPolicies/read",
"Microsoft.Insights/workbooks/read",
"Microsoft.Insights/actionGroups/read",
"Microsoft.Insights/metricAlerts/read",
"Microsoft.AlertsManagement/alerts/read",
"Microsoft.Compute/virtualMachines/read",
"Microsoft.Compute/disks/read",
"Microsoft.Compute/virtualMachineScaleSets/read",
"Microsoft.Network/networkInterfaces/read",
"Microsoft.Network/azureFirewalls/read",
"Microsoft.Network/firewallPolicies/read",
"Microsoft.Network/firewallPolicies/ruleCollectionGroups/read",
"Microsoft.Network/ipGroups/read",
"Microsoft.Network/virtualNetworks/read",
"Microsoft.Network/networkSecurityGroups/read",
"Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/read",
"Microsoft.Network/frontDoorWebApplicationFirewallPolicies/read",
"Microsoft.Authorization/roleAssignments/read",
"Microsoft.Authorization/roleDefinitions/read",
"Microsoft.DocumentDB/databaseAccounts/read",
"Microsoft.DBforPostgreSQL/serverGroupsv2/read",
"Microsoft.Insights/diagnosticSettings/read",
"Microsoft.OperationalInsights/workspaces/read",
"Microsoft.OperationalInsights/workspaces/tables/read"
],
"notActions": [],
"dataActions": [],
"notDataActions": []
}
]
}
}
Permissions used per Azure Integration
Every integration also uses Microsoft.Resources/subscriptions/read in addition to the actions listed. You only need the entries for the services you actually connect.
Azure SQL Databases
Microsoft.Sql/servers/read
Microsoft.Sql/servers/databases/read
Microsoft.Sql/servers/databases/transparentDataEncryption/read
Microsoft.Sql/servers/databases/backupShortTermRetentionPolicies/read
Microsoft.Sql/servers/databases/replicationLinks/read
Microsoft.Sql/servers/encryptionProtector/read
Microsoft.Sql/managedInstances/read
Microsoft.Sql/managedInstances/databases/read
Microsoft.Sql/managedInstances/databases/backupShortTermRetentionPolicies/read
Microsoft.Sql/managedInstances/databases/transparentDataEncryption/read
Microsoft.Sql/managedInstances/encryptionProtector/read
Microsoft.DBforMySQL/flexibleServers/read
Microsoft.DBforMySQL/flexibleServers/backups/readAzure Storage Accounts
Microsoft.Storage/storageAccounts/read
Microsoft.Storage/storageAccounts/fileServices/read
Microsoft.Storage/storageAccounts/blobServices/containers/read
Microsoft.Storage/storageAccounts/managementPolicies/read
Microsoft.Resources/subscriptions/resourceGroups/read
Microsoft.Insights/workbooks/read
Microsoft.Insights/actionGroups/read
Microsoft.Insights/metricAlerts/read
Microsoft.AlertsManagement/alerts/readAzure Virtual Machines
Microsoft.Compute/virtualMachines/read
Microsoft.Compute/disks/read
Microsoft.Compute/virtualMachineScaleSets/read
Microsoft.Network/networkInterfaces/readAzure Firewall
Microsoft.Network/azureFirewalls/read
Microsoft.Network/firewallPolicies/read
Microsoft.Network/firewallPolicies/ruleCollectionGroups/read
Microsoft.Network/ipGroups/readAzure Subscriptions
Microsoft.Authorization/roleAssignments/read
Microsoft.Authorization/roleDefinitions/readAzure Virtual Network
Microsoft.Network/virtualNetworks/read
Microsoft.Network/networkSecurityGroups/readAzure Web Application Firewall
Microsoft.Network/ApplicationGatewayWebApplicationFirewallPolicies/read
Microsoft.Network/frontDoorWebApplicationFirewallPolicies/readAzure Cosmos DB
Microsoft.DocumentDB/databaseAccounts/read
Microsoft.DBforPostgreSQL/serverGroupsv2/readAzure Key Vault
Microsoft.Resources/subscriptions/resources/read
Plus the data-plane grant from Step 5 above.
Azure Monitor
Microsoft.Insights/diagnosticSettings/read
Microsoft.OperationalInsights/workspaces/read
Microsoft.OperationalInsights/workspaces/tables/read
Microsoft.Storage/storageAccounts/read
Microsoft.Resources/subscriptions/resources/read
Supported Azure Integrations
You can use the same credentials for connecting any of the following:
Azure SQL Databases
Azure Storage Accounts
Azure Virtual Machines
Azure Firewall
Azure Subscriptions
Azure Virtual Network
Azure Web Application Firewall
Azure Cosmos DB
Azure Key Vault
Azure Monitor











