Azure MSSQL Enumeration

List servers

az sql server list --resource-group <resource-group-name> --output table
az sql server list --expand-ad-admin --query "[].{Name:name, FQDN:fullyQualifiedDomainName, PublicAccess:publicNetworkAccess,restrictOutboundNetworkAccess:restrictOutboundNetworkAccess, ResourceGroup:resourceGroup, Admin:administratorLogin, EntraAdmin:externalAdministrator.login, AdminType:externalAdministrator.principalType, AdminSID:externalAdministrator.sid}" --output table

List Server Firewalls

az sql server firewall-rule list --output table \
  --query "[].{Rule:name, Start:startIpAddress, End:endIpAddress}" \
   --resource-group $RESOURCE_GROUP --server $SQL_SERVER

List of Entra ID administrators in a server

az sql server ad-admin list --resource-group $RESOURCE_GROUP --server $SQL_SERVER --query "[].{Admin:login, Type:principalType, Tenant:tenantId, SID:sid}" --output table

List Databases in a SQL server

az sql db list --server $SQL_SERVER \
   --resource-group $RESOURCE_GROUP \
   --query "[].{Name:name, Status:status, Tier:sku.tier, Ledger:ledgerOn, InfraEncrypt:isInfraEncryptionEnabled, Backup:currentBackupStorageRedundancy}" \
   --output table 

Get details of a specific database

az sql db show --name <database_name> --server <server_name> --resource-group <resource_group>

List of operations performed on the database.

az sql db op list --database <database_name> --server <server_name> --resource-group <resource_group>

List deleted databases in a SQL server

az sql db list-deleted --server $SQL_SERVER --resource-group $RESOURCE_GROUP

List all elastic pools in a SQL server

az sql elastic-pool list --server <server_name> --resource-group <resource_group> #--output table

List all databases in a specific elastic pool

az sql elastic-pool show --name <elastic_pool_name>  --server <server_name> --resource-group <resource_group>
az sql elastic-pool list-dbs --name <elastic_pool_name>  --server <server_name> --resource-group <resource_group>

List all managed Instances

az sql mi list
az sql mi show --resource-group <res-grp> --name <name>
az sql midb list
az sql midb show --resource-group <res-grp> --name <name>

List all sql VM

az sql vm list
az sql vm show --resource-group <res-grp> --name <name>

List schema by the database

az rest --method get --uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas?api-version=2021-11-01"

Get tables of a database with the schema

az rest --method get --uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables?api-version=2021-11-01"

Get columns of a database

az rest --method get --uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/columns?api-version=2021-11-01"

Get columns of a table

az rest --method get --uri https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/schemas/<schemaName>/tables/<tableName>/columns?api-version=2021-11-01"

Get DataMaskingPolicies of a database

az rest --method get --uri "https://management.azure.com/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Sql/servers/<serverName>/databases/<databaseName>/dataMaskingPolicies/Default/rules?api-version=2021-11-01"

Get DataMasking for columns

az rest --method GET \
  --uri "https://management.azure.com/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RESOURCE_GROUP/providers/Microsoft.Sql/servers/$SQL_SERVER/databases/$DB_NAME/dataMaskingPolicies/Default/rules?api-version=2021-11-01"

Get DataMaskingPolicies of a database using sql

-- Identificar security policies
SELECT * FROM sys.security_policies; 
GO

-- Ver qué tabla protege y el predicate function
SELECT 
    sp.name AS policy_name,
    spred.predicate_type_desc,
    spred.predicate_definition,
    OBJECT_NAME(spred.target_object_id) AS target_table
FROM sys.security_policies sp
JOIN sys.security_predicates spred ON sp.object_id = spred.object_id;
GO

-- Resolver el schema name
SELECT s.name AS schema_name, o.name AS policy_name
FROM sys.objects o
JOIN sys.schemas s ON o.schema_id = s.schema_id
WHERE o.object_id = 1941581955;
GO