Azure Quick Review (azqr) is a command-line interface (CLI) tool designed to analyze Azure resources and identify those that may or may not comply with Azure best practices and recommendations. It helps users ensure their Azure environments meet established standards for security, performance, and cost-efficiency.
Key Features:
Comprehensive Recommendations: Analyzes resources using three types of recommendations:
Azure Resource Graph (ARG) queries from the Azure Proactive Resiliency Library v2 (APRL).
Azure Resource Manager (ARM) rules built with the Azure Golang SDK.
Orphan resource detection via ARG queries from the Azure Orphan Resources project.
Detailed Output: Results are exported to an Excel file containing multiple sheets, including recommendations, impacted resources, resource types, inventory, Azure Advisor insights, Microsoft Defender for Cloud recommendations, and more.
Cost Analysis: Includes a detailed breakdown of costs associated with scanned subscriptions over the past three months.
Power BI Integration: Generates a Power BI template to visualize scan results, aiding in deeper analysis and reporting.
Customizable Output: Supports generating CSV files and offers options to control data obfuscation (e.g., hiding subscription IDs) for enhanced privacy.
Audience & Benefit:
Ideal for IT professionals, cloud architects, and DevOps engineers who need to ensure Azure environments adhere to best practices. By using azqr, users can optimize resource configurations, reduce operational costs, enhance security compliance, and improve overall environment resilience.
Available via winget for easy installation on Windows systems.
README
Azure Quick Review
Azure Quick Review (azqr) is a powerful command-line interface (CLI) tool that specializes in analyzing Azure resources to ensure compliance with Azure's best practices and recommendations. Its main objective is to offer users a comprehensive overview of their Azure resources, allowing them to easily identify any non-compliant configurations or areas for improvement.
Azure Quick Review Recommendations
Azure Quick Review (azqr) scans your resources with 2 types of recommendations:
Recommendations: a list with all recommendations with the number of resources that are impacted. You can use this table as an action plan to improve the compliance of your resources.
ImpactedResources: a list with all resources that are impacted. You can use this table to identify resources that have issues that need to be addressed.
ResourceTypes: a list of impacted resource types.
Inventory: a list of all resources scanned by the tool. Here you'll find details such as SKU, Tier, Kind or calculated SLA.
Advisor: a list of recommendations provided by Azure Advisor.
Azure Policy: a list of non-compliant resources based on Azure Policy states.
Arc SQL: a list of Azure Arc-enabled SQL Server instances with extension installation status, licensing, and feature enablement details.
DefenderRecommendations: a list of recommendations provided by Microsoft Defender for Cloud.
OutOfScope: a list of resources that were not scanned.
Defender: a list of Microsoft Defender for Cloud plans and their tiers.
Costs: a list of costs associated with the scanned subscription for the last 3 months.
> By default, Azure Quick Review (azqr) obfuscates the Subscription Ids in the output to ensure the protection of sensitive information and maintain data privacy and security. If you want to display the Subscription Ids without obfuscation, you can use the --mask=false flag when executing the tool.
> Azure Quick Review can also generate an csv files with the same information as the excel. To generate the csv files, you can use the --csv flag when running the tool.
Supported Azure Services
Azure Quick Review (azqr) currently supports the following Azure services:
Azure Quick Review (azqr) supports the following authentication methods:
Service Principal. You'll need to set the following environment variables:
AZURE_CLIENT_ID
AZURE_CLIENT_SECRET
AZURE_TENANT_ID
Azure Managed Identity
Azure CLI (Using this type of authentication will make scans run slower)
Credential Chain Configuration
Azure Quick Review (azqr) uses the Azure SDK's DefaultAzureCredential which automatically selects the most appropriate credential based on your environment. You can customize the credential chain behavior by setting the AZURE_TOKEN_CREDENTIALS environment variable.
Development environments:
Set AZURE_TOKEN_CREDENTIALS=dev to use Azure CLI (az) or Azure Developer CLI (azd) credentials.
Production environments:
Set AZURE_TOKEN_CREDENTIALS=pros to use environment variables, workload identity, or managed identity credentials.
Authorization
Azure Quick Review (azqr) requires the following permissions:
Reader over Subscription or Management Group scope
Cloud Configuration
Azure Quick Review (azqr) supports scanning resources in different Azure cloud environments including Azure Public Cloud, Azure Government, Azure China, and custom cloud configurations.
You can configure the target cloud using environment variables such as AZURE_CLOUD, AZURE_AUTHORITY_HOST, AZURE_RESOURCE_MANAGER_ENDPOINT, and AZURE_RESOURCE_MANAGER_AUDIENCE.
> For detailed cloud configuration options and examples, see the Usage section in the documentation.
Running the Scan
To scan all resources in all subscription run:
./azqr scan
To scan all resources in a specific management group run:
./azqr scan --management-group-id
To scan all resources in a specific subscription run:
./azqr scan -s
To scan a specific resource group in a specific subscription run:
./azqr scan -s -g
For information on available commands and help run:
./azqr -h
Interactive Dashboard (show command)
You can explore your scan results with a lightweight embedded web UI using the show command. The dashboard supports both Excel and JSON report formats:
Generate a report (Excel or JSON):
# Excel format (default)
./azqr scan -s --output-name report
# JSON format
./azqr scan -s --output-name report --json
Launch the dashboard:
# With Excel file
./azqr show -f report.xlsx --open
# With JSON file
./azqr show -f report.json --open
You can configure Azure Quick Review to include or exclude specific subscriptions or resource groups and also exclude services or recommendations. To do so, create a yaml file with the following format:
If you encounter any issue while using Azure Quick Review (azqr), please set the AZURE_SDK_GO_LOGGING environment variable to all, run the tool with the --debug flag and then share the console output with us by filing a new issue.
Cost Analysis Permission Issues
If you encounter an error related to cost analysis access when running azqr scan, such as:
FTL Failed to query costs error="POST https://management.azure.com/subscriptions/.../providers/Microsoft.CostManagement/query
ERROR CODE: AccountCostDisabled
message: "Access to cost data has been disabled for account admins..."
This occurs when your account has READER permissions but lacks access to cost analysis data. Azure Cost Management requires specific permissions beyond standard READER access.
Solution:
Disable cost scanning by using the -c=false flag:
azqr scan -c=false
This will skip cost analysis and generate a complete report with all other Azure resource recommendations.
Note: Cost analysis provides valuable insights into resource spending over the last 3 months, but it's optional for security and compliance recommendations.
Building Locally
Make sure you have Go 1.23.x or higher installed in your environment. You can set GOROOT= folder and GOPATH= if you want to be specific about where to find Go binary and Go dependencies.
git clone git@github.com:Azure/azqr.git
cd azqr
git submodule init
git submodule update --recursive
make
Support
This project uses GitHub Issues to track bugs and feature requests.
Before logging an issue please check our troubleshooting guide.
Please search the existing issues before filing new issues to avoid duplicates.
For new issues, file your bug or feature request as a new issue.
For help, discussion, and support questions about using this project, join or start a discussion.
Support for this project / product is limited to the resources listed above.
> Trademarks This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.