From eb6ca856efcd7c54c8ee06cf49842654f02d1b4f Mon Sep 17 00:00:00 2001 From: erjosito <9462396+erjosito@users.noreply.github.com> Date: Tue, 23 Jul 2024 06:24:17 +0000 Subject: [PATCH] [create-pull-request] automated change --- checklists-ext/fullwaf_checklist.en.json | 752 +- checklists/aoai_checklist.en.json | 1837 +++-- checklists/aoai_checklist.es.json | 920 +++ checklists/aoai_checklist.ja.json | 920 +++ checklists/aoai_checklist.ko.json | 920 +++ checklists/aoai_checklist.pt.json | 920 +++ checklists/aoai_checklist.zh-Hant.json | 920 +++ checklists/checklist.en.master.json | 6073 ++++++++++------- checklists/waf_checklist.en.json | 752 +- checklists/waf_checklist.es.json | 752 +- checklists/waf_checklist.ja.json | 752 +- checklists/waf_checklist.ko.json | 752 +- checklists/waf_checklist.pt.json | 752 +- checklists/waf_checklist.zh-Hant.json | 752 +- spreadsheet/macrofree/aoai_checklist.en.xlsx | Bin 0 -> 29820 bytes spreadsheet/macrofree/aoai_checklist.es.xlsx | Bin 0 -> 30792 bytes spreadsheet/macrofree/aoai_checklist.ja.xlsx | Bin 0 -> 32737 bytes spreadsheet/macrofree/aoai_checklist.ko.xlsx | Bin 0 -> 32197 bytes spreadsheet/macrofree/aoai_checklist.pt.xlsx | Bin 0 -> 30668 bytes .../macrofree/aoai_checklist.zh-Hant.xlsx | Bin 0 -> 31326 bytes .../macrofree/checklist.en.master.xlsx | Bin 480929 -> 493800 bytes spreadsheet/macrofree/waf_checklist.en.xlsx | Bin 189504 -> 200810 bytes spreadsheet/macrofree/waf_checklist.es.xlsx | Bin 176554 -> 187868 bytes spreadsheet/macrofree/waf_checklist.ja.xlsx | Bin 193746 -> 204918 bytes spreadsheet/macrofree/waf_checklist.ko.xlsx | Bin 187237 -> 198772 bytes spreadsheet/macrofree/waf_checklist.pt.xlsx | Bin 177216 -> 187706 bytes .../macrofree/waf_checklist.zh-Hant.xlsx | Bin 181351 -> 193405 bytes .../alz_checklist.en_network_counters.json | 256 +- ...hecklist.en_network_counters_template.json | 2 +- .../alz_checklist.en_network_tabcounters.json | 1870 ++--- ...klist.en_network_tabcounters_template.json | 2 +- .../alz_checklist.en_network_workbook.json | 518 +- ...hecklist.en_network_workbook_template.json | 2 +- ...hecklist.en_network_counters_workbook.json | 220 +- ...en_network_counters_workbook_template.json | 2 +- ...elivery_checklist.en_network_workbook.json | 168 +- ...hecklist.en_network_workbook_template.json | 2 +- 37 files changed, 15780 insertions(+), 5036 deletions(-) create mode 100644 checklists/aoai_checklist.es.json create mode 100644 checklists/aoai_checklist.ja.json create mode 100644 checklists/aoai_checklist.ko.json create mode 100644 checklists/aoai_checklist.pt.json create mode 100644 checklists/aoai_checklist.zh-Hant.json create mode 100644 spreadsheet/macrofree/aoai_checklist.en.xlsx create mode 100644 spreadsheet/macrofree/aoai_checklist.es.xlsx create mode 100644 spreadsheet/macrofree/aoai_checklist.ja.xlsx create mode 100644 spreadsheet/macrofree/aoai_checklist.ko.xlsx create mode 100644 spreadsheet/macrofree/aoai_checklist.pt.xlsx create mode 100644 spreadsheet/macrofree/aoai_checklist.zh-Hant.xlsx diff --git a/checklists-ext/fullwaf_checklist.en.json b/checklists-ext/fullwaf_checklist.en.json index bac7c91c6..338fb17e6 100644 --- a/checklists-ext/fullwaf_checklist.en.json +++ b/checklists-ext/fullwaf_checklist.en.json @@ -4831,6 +4831,756 @@ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/", "waf": "Reliability" }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "OpenAI", + "severity": "High", + "text": "Follow Metaprompting guardrails for resonsible AI", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "OpenAI", + "severity": "High", + "text": "Consider Gateway patterns with APIM or solutions like AI central for better rate limiting, load balancing, authentication and logging", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "OpenAI", + "severity": "High", + "text": "Enable monitoring for your AOAI instances", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "OpenAI", + "severity": "High", + "text": "Create alerts to notify teams of events such as an entry in the activity log created by an action performed on the resource, such as regenerating its subscription keys or a metric threshold such as the number of errors exceeding 10 in an hour", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "OpenAI", + "severity": "High", + "text": "Monitor token usage to prevent service disruptions due to capacity", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "OpenAI", + "severity": "Medium", + "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "OpenAI", + "severity": "Low", + "text": "If the diagnostics are not sufficient for you, consider using a gateway such as Azure API Managements in front of Azure OpenAI to log both incoming prompts and outgoing responses, where permitted", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "OpenAI", + "severity": "High", + "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "OpenAI", + "severity": "High", + "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "OpenAI", + "severity": "High", + "text": "Evaluate the performance/accuracy of the system with a known golden dataset which has the inputs and the correct answers. Leverage capabilities in PromptFlow for Evaluation.", + "waf": "Operational Execellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "OpenAI", + "severity": "High", + "text": "Evaluate usage of Provisioned throughput model ", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "OpenAI", + "severity": "High", + "text": "Review and implement Azure AI content safety", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "OpenAI", + "severity": "High", + "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "OpenAI", + "severity": "Medium", + "text": "Improve latency of the system by limiting token sizes, streaming options", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "OpenAI", + "severity": "Medium", + "text": "Estimate elasticity demands to determine synchronous and batch request segregation based on priority. For high priority, use synchronous approach and for low priority, asynchronous batch processing with queue is preferred", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "OpenAI", + "severity": "High", + "text": "Benchmark token consumption requirements based on estimated demands from consumers. Consider using the Azure OpenAI benchmarking tool to help you validate the throughput if you are using Provisioned Throughput Unit deployments", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "OpenAI", + "severity": "Medium", + "text": "If you are using Provisioned Throughput Units (PTUs), consider deploying a token-per-minute (TPM) deployment for overflow requests. Use a gateway to route requests to the TPM deployment when the PTU limits are reached.", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "OpenAI", + "severity": "High", + "text": "Choose the right model for the right task. Pick models with right tradeoff between speed, quality of response and output complexity", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "OpenAI", + "severity": "Medium", + "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "OpenAI", + "severity": "Low", + "text": "Deploy multiple OAI instances across regions", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "OpenAI", + "severity": "High", + "text": "Implement retry & healthchecks with Gateway pattern like APIM", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "OpenAI", + "severity": "Medium", + "text": "Ensure having adequate quotas of TPM & RPM for the workload", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "OpenAI", + "severity": "Medium", + "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "OpenAI", + "severity": "Medium", + "text": "Deploy separate fine tuned models across regions if finetuning is employed", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "OpenAI", + "severity": "Medium", + "text": "Regularly backup and replicate critical data to ensure data availability and recoverability in case of data loss or system failures. Leverage Azure's backup and disaster recovery services to protect your data.", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "OpenAI", + "severity": "High", + "text": "Azure AI search service tiers should be choosen to have a SLA ", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "OpenAI", + "severity": "Low", + "text": "Classify data and sensitivity, labeling with Microsoft Purview before generating the embeddings and make sure to treat the embeddings generated with same sensitivity and classification", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "OpenAI", + "severity": "High", + "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "OpenAI", + "severity": "High", + "text": "Ensure TLS is enforced for data in transit across data sources, AI search used for Retrieval-Augmented Generation (RAG) and LLM communication", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "OpenAI", + "severity": "High", + "text": "Use RBAC to manage access to Azure OpenAI services. Assign appropriate permissions to users and restrict access based on their roles and responsibilities", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "OpenAI", + "severity": "Medium", + "text": "Implement data encryption, masking or redaction techniques to hide sensitive data or replace it with obfuscated values in non-production environments or when sharing data for testing or troubleshooting purposes", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "OpenAI", + "severity": "High", + "text": "Utilize Azure Defender to detect and respond to security threats and set up monitoring and alerting mechanisms to identify suspicious activities or breaches. Leverage Azure Sentinel for advanced threat detection and response", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "OpenAI", + "severity": "Medium", + "text": "Establish data retention and disposal policies to adhere to compliance regulations. Implement secure deletion methods for data that is no longer required and maintain an audit trail of data retention and disposal activities", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "OpenAI", + "severity": "High", + "text": "Implement Prompt shields and groundedness detection using Content Safety ", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "OpenAI", + "severity": "High", + "text": "Ensure compliance with relevant data protection regulations, such as GDPR or HIPAA, by implementing privacy controls and obtaining necessary consents or permissions for data processing activities.", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "OpenAI", + "severity": "Medium", + "text": "Educate your employees about data security best practices, the importance of handling data securely, and potential risks associated with data breaches. Encourage them to follow data security protocols diligently.", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "OpenAI", + "severity": "High", + "text": "Keep production data separate from development and testing data. Only use real sensitive data in production and utilize anonymized or synthetic data in development and test environments.", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "OpenAI", + "severity": "Medium", + "text": "If you have varying levels of data sensitivity, consider creating separate indexes for each level. For instance, you could have one index for general data and another for sensitive data, each governed by different access protocols", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "OpenAI", + "severity": "Medium", + "text": "Take segregation a step further by placing sensitive datasets in different instances of the service. Each instance can be controlled with its own specific set of RBAC policies", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "OpenAI", + "severity": "High", + "text": "Recognize that embeddings and vectors generated from sensitive information are themselves sensitive. This data should be afforded the same protective measures as the source material", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "OpenAI", + "severity": "High", + "text": "Apply RBAC to th data stores having embeddings and vectors and scope access based on role's access requirements", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "OpenAI", + "severity": "High", + "text": "Configure private endpoint for AI services to restrict service access within your network", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "OpenAI", + "severity": "High", + "text": "Enforce strict inbound and outbound traffic control with Azure Firewall and UDRs and limit the external integration points", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "OpenAI", + "severity": "High", + "text": "Implement network segmentation and access controls to restrict access to the LLM application only to authorized users and systems and prevent lateral movement", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "OpenAI", + "severity": "Medium", + "text": "Use prompt compression tools like LLMLingua or gprtrim", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "OpenAI", + "severity": "High", + "text": "Ensure that APIs and endpoints used by the LLM application are properly secured with authentication and authorization mechanisms, such as Managed identities, API keys or OAuth, to prevent unauthorized access.", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "OpenAI", + "severity": "Medium", + "text": "Enforce strong end user authentication mechanisms, such as multi-factor authentication, to prevent unauthorized access to the LLM application and associated network resources", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "OpenAI", + "severity": "Medium", + "text": "Implement network monitoring tools to detect and analyze network traffic for any suspicious or malicious activities. Enable logging to capture network events and facilitate forensic analysis in case of security incidents", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "OpenAI", + "severity": "Medium", + "text": "Conduct security audits and penetration testing to identify and address any network security weaknesses or vulnerabilities in the LLM application's network infrastructure", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "OpenAI", + "severity": "Low", + "text": "Azure AI Services are properly tagged for better management", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "OpenAI", + "severity": "Low", + "text": "Azure AI Service accounts follows organizational naming conventions", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "OpenAI", + "severity": "High", + "text": "Diagnostic logs in Azure AI services resources should be enabled", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "OpenAI", + "severity": "High", + "text": "Key access (local authentication) is recommended to be disabled for security. After disabling key based access, Microsoft Entra ID becomes the only access method, which allows maintaining minimum privilege principle and granular control. ", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "OpenAI", + "severity": "High", + "text": "Store and manage keys securely using Azure Key Vault. Avoid hard-coding or embedding sensitive keys within your LLM application's code and retrieve them securely from Azure Key Vault using managed identities", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "OpenAI", + "severity": "High", + "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "OpenAI", + "severity": "High", + "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "OpenAI", + "severity": "High", + "text": "Follow secure coding practices to prevent common vulnerabilities such as injection attacks, cross-site scripting (XSS), or security misconfigurations", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "OpenAI", + "severity": "High", + "text": "Setup a process to regularly update and patch the LLM libraries and other system components", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "OpenAI", + "severity": "High", + "text": "Adhere to Azure OpenAI or other LLMs terms of use, policies and guidance and allowed use cases", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "OpenAI", + "severity": "Medium", + "text": "Understand difference in cost of base models and fine tuned models and token step sizes", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "OpenAI", + "severity": "High", + "text": "Batch requests, where possible, to minimize the per-call overhead which can reduce overall costs. Ensure you optimize batch size", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "OpenAI", + "severity": "Medium", + "text": "Set up a cost tracking system that monitors model usage and use that information to help inform model choices and prompt sizes", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "OpenAI", + "severity": "Medium", + "text": "Set a maximum limit on the number of tokens per model response. Optimize the size to ensure it is large enough for a valid response", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "OpenAI", + "severity": "Medium", + "text": "Review the guidance provided on setting up AI search for Reliability", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "OpenAI", + "severity": "Medium", + "text": "Plan and manage AI Search Vector storage", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "OpenAI", + "severity": "Medium", + "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "OpenAI", + "severity": "High", + "text": "Evaluate usage of billing models - PAYG vs PTU", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "OpenAI", + "severity": "Medium", + "text": "Evaluate the quality of prompts and applications when switching between model versions", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "OpenAI", + "severity": "Medium", + "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "OpenAI", + "severity": "Medium", + "text": "Evaluate your Azure AI Search results based on different search parameters", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "OpenAI", + "severity": "Medium", + "text": "Look at fine tuning models as way of increasing accuracy only when you have tried other basic approaches like prompt engineering and RAG with your data", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "OpenAI", + "severity": "Medium", + "text": "Use prompt engineering techniques to improve the accuracy of LLM responses", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "OpenAI", + "severity": "Medium", + "text": "Red team your GenAI applications", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "OpenAI", + "severity": "Medium", + "text": "Provide end users with scoring options for LLM responses and track these scores. ", + "waf": "Operations" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "OpenAI", + "severity": "High", + "text": "Consider Quota management practices", + "waf": "Cost" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "OpenAI", + "severity": "Medium", + "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions", + "waf": "Operations" + }, { "arm-service": "Microsoft.CognitiveServices/accounts", "checklist": "Cognitive Services Review Checklist", @@ -25241,7 +25991,7 @@ ], "metadata": { "name": "WAF checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/checklists/aoai_checklist.en.json b/checklists/aoai_checklist.en.json index 2bc9daa20..2fdc3071d 100644 --- a/checklists/aoai_checklist.en.json +++ b/checklists/aoai_checklist.en.json @@ -1,921 +1,920 @@ { - "items": [ - { - "category": "Responsible AI", - "subcategory": "Metaprompting", - "text": "Follow Metaprompting guardrails for resonsible AI", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", - "id": "AOAI.1", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails" - }, - { - "category": "Responsible AI", - "subcategory": "Content Safety", - "text": "Review and implement Azure AI content safety", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", - "id": "AOAI.2", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview" - }, - { - "category": "Responsible AI", - "subcategory": "UX best practice", - "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", - "id": "AOAI.3", - "severity": "Medium", - "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/" - }, - { - "category": "Responsible AI", - "subcategory": "Jail break Safety", - "text": "Implement Prompt shields and groundedness detection using Content Safety ", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", - "id": "AOAI.4", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection" - }, - { - "category": "Cost Optimization", - "subcategory": "Token Optimization", - "text": "Use prompt compression tools like LLMLingua or gprtrim", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", - "id": "AOAI.5", - "severity": "Medium", - "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/" - }, - { - "category": "Cost Optimization", - "subcategory": "Token Optimization", - "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "adfe27be-e297-401a-a352-baaab79b088d", - "id": "AOAI.6", - "severity": "High", - "link": "https://github.com/openai/tiktoken" - }, - { - "category": "Cost Optimization", - "subcategory": "Costing Model", - "text": "Evaluate usage of billing models - PAYG vs PTU", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", - "id": "AOAI.7", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model" - }, - { - "category": "Cost Optimization", - "subcategory": "Quota Management", - "text": "Consider Quota management practices", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", - "id": "AOAI.8", - "severity": "High", - "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268" - }, - { - "category": "Operations Management", - "subcategory": "Load Balancing", - "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", - "id": "AOAI.9", - "severity": "Medium", - "link": "https://github.com/Azure/aoai-apim/blob/main/README.md" - }, - { - "category": "Operations Management", - "subcategory": "Load Balancing", - "text": "Consider Gateway patterns with APIM or solutions like AI central for better rate limiting, load balancing, authentication and logging", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", - "id": "AOAI.10", - "severity": "High", - "link": "https://github.com/Azure-Samples/AI-Gateway" - }, - { - "category": "Operations Management", - "subcategory": "Monitoring", - "text": "Enable monitoring for your AOAI instances", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", - "id": "AOAI.11", - "severity": "High", - "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850" - }, - { - "category": "Operations Management", - "subcategory": "Alerts", - "text": "Create alerts to notify teams of events such as an entry in the activity log created by an action performed on the resource, such as regenerating its subscription keys or a metric threshold such as the number of errors exceeding 10 in an hour", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", - "id": "AOAI.12", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts" - }, - { - "category": "Operations Management", - "subcategory": "Monitoring", - "text": "Monitor token usage to prevent service disruptions due to capacity", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", - "id": "AOAI.13", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring" - }, - { - "category": "Operations Management", - "subcategory": "Observability", - "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", - "id": "AOAI.14", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring" - }, - { - "category": "Operations Management", - "subcategory": "Observability", - "text": "If the diagnostics are not sufficient for you, consider using a gateway such as Azure API Managements in front of Azure OpenAI to log both incoming prompts and outgoing responses, where permitted", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", - "id": "AOAI.15", - "severity": "Low", - "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562" - }, - { - "category": "Operations Management", - "subcategory": "Infrastructure Deployment", - "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", - "id": "AOAI.16", - "severity": "High", - "link": "https://github.com/Azure-Samples/openai-enterprise-iac" - }, - { - "category": "Governance and Security", - "subcategory": "Authentication", - "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "4350d092-d234-4292-a752-8537a551c5bf", - "id": "AOAI.17", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity" - }, - { - "category": "Responsible AI", - "subcategory": "Evaluation", - "text": "Evaluate the performance/accuracy of the system with a known golden dataset which has the inputs and the correct answers. Leverage capabilities in PromptFlow for Evaluation.", - "waf": "Operational Execellence", - "service": "Azure OpenAI", - "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", - "id": "AOAI.18", - "severity": "High", - "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2" - }, - { - "category": "Operations Management", - "subcategory": "Hosting model", - "text": "Evaluate usage of Provisioned throughput model ", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "68889535-e327-4897-b31b-67d67be5962a", - "id": "AOAI.19", - "severity": "High", - "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency" - }, - { - "category": "Operations Management", - "subcategory": "Throughput definition", - "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", - "id": "AOAI.20", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput" - }, - { - "category": "Operations Management", - "subcategory": "Latency improvement", - "text": "Improve latency of the system by limiting token sizes, streaming options", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", - "id": "AOAI.21", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance" - }, - { - "category": "Operations Management", - "subcategory": "Elasticity segregation", - "text": "Estimate elasticity demands to determine synchronous and batch request segregation based on priority. For high priority, use synchronous approach and for low priority, asynchronous batch processing with queue is preferred", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", - "id": "AOAI.22", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching" - }, - { - "category": "Operations Management", - "subcategory": "Benchmarking", - "text": "Benchmark token consumption requirements based on estimated demands from consumers. Consider using the Azure OpenAI benchmarking tool to help you validate the throughput if you are using Provisioned Throughput Unit deployments", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "5bda4332-4f24-4811-9331-82ba51752694", - "id": "AOAI.23", - "severity": "High", - "link": "https://github.com/Azure/azure-openai-benchmark/" - }, - { - "category": "Operations Management", - "subcategory": "Elasticity ", - "text": "If you are using Provisioned Throughput Units (PTUs), consider deploying a token-per-minute (TPM) deployment for overflow requests. Use a gateway to route requests to the TPM deployment when the PTU limits are reached.", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", - "id": "AOAI.24", - "severity": "Medium", - "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268" - }, - { - "category": "Operations Management", - "subcategory": "Model choice", - "text": "Choose the right model for the right task. Pick models with right tradeoff between speed, quality of response and output complexity", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", - "id": "AOAI.25", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models" - }, - { - "category": "Operations Management", - "subcategory": "Fine tuning", - "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance", - "waf": "Performance", - "service": "Azure OpenAI", - "guid": "e9951904-8384-45c9-a6cb-2912156a1147", - "id": "AOAI.26", - "severity": "Medium", - "link": "https://github.com/Azure/azure-openai-benchmark/" - }, - { - "category": "BC and DR", - "subcategory": "Multi-region architecture", - "text": "Deploy multiple OAI instances across regions", - "waf": "Reliability", - "service": "Azure OpenAI", - "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", - "id": "AOAI.27", - "severity": "Low", - "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability" - }, - { - "category": "BC and DR", - "subcategory": "Load balancing", - "text": "Implement retry & healthchecks with Gateway pattern like APIM", - "waf": "Reliability", - "service": "Azure OpenAI", - "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", - "id": "AOAI.28", - "severity": "High", - "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability" - }, - { - "category": "BC and DR", - "subcategory": "Quotas", - "text": "Ensure having adequate quotas of TPM & RPM for the workload", - "waf": "Reliability", - "service": "Azure OpenAI", - "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", - "id": "AOAI.29", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota" - }, - { - "category": "BC and DR", - "subcategory": "Load balancing", - "text": "Deploy separate fine tuned models across regions if finetuning is employed", - "waf": "Reliability", - "service": "Azure OpenAI", - "guid": "7f154e3a-a369-4282-ae7e-316183687a04", - "id": "AOAI.30", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery" - }, - { - "category": "BC and DR", - "subcategory": "Data Backup and Disaster Recovery", - "text": "Regularly backup and replicate critical data to ensure data availability and recoverability in case of data loss or system failures. Leverage Azure's backup and disaster recovery services to protect your data.", - "waf": "Reliability", - "service": "Azure OpenAI", - "guid": "77a1f893-5bda-4433-84f2-4811633182ba", - "id": "AOAI.31", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/backup/backup-overview" - }, - { - "category": "BC and DR", - "subcategory": "SLA considerations", - "text": "Azure AI search service tiers should be choosen to have a SLA ", - "waf": "Reliability", - "service": "Azure OpenAI", - "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", - "id": "AOAI.32", - "severity": "High", - "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1" - }, - { - "category": "Governance and Security", - "subcategory": "Data Sensitivity", - "text": "Classify data and sensitivity, labeling with Microsoft Purview before generating the embeddings and make sure to treat the embeddings generated with same sensitivity and classification", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", - "id": "AOAI.33", - "severity": "Low", - "link": "https://learn.microsoft.com/purview/purview" - }, - { - "category": "Governance and Security", - "subcategory": "Encryption at Rest", - "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", - "id": "AOAI.34", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely" - }, - { - "category": "Governance and Security", - "subcategory": "Transit Encryption", - "text": "Ensure TLS is enforced for data in transit across data sources, AI search used for Retrieval-Augmented Generation (RAG) and LLM communication", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", - "id": "AOAI.35", - "severity": "High", - "link": "https://learn.microsoft.com/azure/search/search-security-overview" - }, - { - "category": "Governance and Security", - "subcategory": "Access Control", - "text": "Use RBAC to manage access to Azure OpenAI services. Assign appropriate permissions to users and restrict access based on their roles and responsibilities", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", - "id": "AOAI.36", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control" - }, - { - "category": "Governance and Security", - "subcategory": "Data Masking and Redaction", - "text": "Implement data encryption, masking or redaction techniques to hide sensitive data or replace it with obfuscated values in non-production environments or when sharing data for testing or troubleshooting purposes", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", - "id": "AOAI.37", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices" - }, - { - "category": "Governance and Security", - "subcategory": "Threat Detection and Monitoring", - "text": "Utilize Azure Defender to detect and respond to security threats and set up monitoring and alerting mechanisms to identify suspicious activities or breaches. Leverage Azure Sentinel for advanced threat detection and response", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", - "id": "AOAI.38", - "severity": "High", - "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction" - }, - { - "category": "Governance and Security", - "subcategory": "Data Retention and Disposal", - "text": "Establish data retention and disposal policies to adhere to compliance regulations. Implement secure deletion methods for data that is no longer required and maintain an audit trail of data retention and disposal activities", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", - "id": "AOAI.39", - "severity": "Medium", - "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791" - }, - { - "category": "Governance and Security", - "subcategory": "Data Privacy and Compliance", - "text": "Ensure compliance with relevant data protection regulations, such as GDPR or HIPAA, by implementing privacy controls and obtaining necessary consents or permissions for data processing activities.", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", - "id": "AOAI.40", - "severity": "High", - "link": "https://learn.microsoft.com/azure/compliance/" - }, - { - "category": "Governance and Security", - "subcategory": "Employee Awareness and Training", - "text": "Educate your employees about data security best practices, the importance of handling data securely, and potential risks associated with data breaches. Encourage them to follow data security protocols diligently.", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", - "id": "AOAI.41", - "severity": "Medium" - }, - { - "category": "Governance and Security", - "subcategory": "Environment segregation", - "text": "Keep production data separate from development and testing data. Only use real sensitive data in production and utilize anonymized or synthetic data in development and test environments.", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", - "id": "AOAI.42", - "severity": "High" - }, - { - "category": "Governance and Security", - "subcategory": "Index Segregation", - "text": "If you have varying levels of data sensitivity, consider creating separate indexes for each level. For instance, you could have one index for general data and another for sensitive data, each governed by different access protocols", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", - "id": "AOAI.43", - "severity": "Medium" - }, - { - "category": "Governance and Security", - "subcategory": "Sensitive Data in Separate Instances", - "text": "Take segregation a step further by placing sensitive datasets in different instances of the service. Each instance can be controlled with its own specific set of RBAC policies", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", - "id": "AOAI.44", - "severity": "Medium" - }, - { - "category": "Governance and Security", - "subcategory": "Embedding and Vector handling", - "text": "Recognize that embeddings and vectors generated from sensitive information are themselves sensitive. This data should be afforded the same protective measures as the source material", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", - "id": "AOAI.45", - "severity": "High" - }, - { - "category": "Governance and Security", - "subcategory": "Access control", - "text": "Apply RBAC to th data stores having embeddings and vectors and scope access based on role's access requirements", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", - "id": "AOAI.46", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control" - }, - { - "category": "Governance and Security", - "subcategory": "Network security", - "text": "Configure private endpoint for AI services to restrict service access within your network", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", - "id": "AOAI.47", - "severity": "High", - "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325" - }, - { - "category": "Governance and Security", - "subcategory": "Network security", - "text": "Enforce strict inbound and outbound traffic control with Azure Firewall and UDRs and limit the external integration points", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", - "id": "AOAI.48", - "severity": "High" - }, - { - "category": "Governance and Security", - "subcategory": "Control Network Access", - "text": "Implement network segmentation and access controls to restrict access to the LLM application only to authorized users and systems and prevent lateral movement", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", - "id": "AOAI.49", - "severity": "High" - }, - { - "category": "Governance and Security", - "subcategory": "Secure APIs and Endpoints", - "text": "Ensure that APIs and endpoints used by the LLM application are properly secured with authentication and authorization mechanisms, such as Managed identities, API keys or OAuth, to prevent unauthorized access.", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", - "id": "AOAI.50", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity" - }, - { - "category": "Governance and Security", - "subcategory": "Implement Strong Authentication", - "text": "Enforce strong end user authentication mechanisms, such as multi-factor authentication, to prevent unauthorized access to the LLM application and associated network resources", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", - "id": "AOAI.51", - "severity": "Medium", - "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885" - }, - { - "category": "Governance and Security", - "subcategory": "Use Network Monitoring", - "text": "Implement network monitoring tools to detect and analyze network traffic for any suspicious or malicious activities. Enable logging to capture network events and facilitate forensic analysis in case of security incidents", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "93555620-2bfe-4456-9b0d-834a348b263e", - "id": "AOAI.52", - "severity": "Medium" - }, - { - "category": "Governance and Security", - "subcategory": "Security Audits and Penetration Testing", - "text": "Conduct security audits and penetration testing to identify and address any network security weaknesses or vulnerabilities in the LLM application's network infrastructure", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", - "id": "AOAI.53", - "severity": "Medium" - }, - { - "category": "Governance and Security", - "subcategory": "Infrastructure Deployment", - "text": "Azure AI Services are properly tagged for better management", - "waf": "Operational Excellence", - "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", - "id": "AOAI.54", - "service": "Azure OpenAI", - "severity": "Low", - "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json" - }, - { - "category": "Governance and Security", - "subcategory": "Infrastructure Deployment", - "text": "Azure AI Service accounts follows organizational naming conventions", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", - "id": "AOAI.55", - "severity": "Low", - "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations" - }, - { - "category": "Governance and Security", - "subcategory": "Diagnostics Logging", - "text": "Diagnostic logs in Azure AI services resources should be enabled", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", - "id": "AOAI.56", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging" - }, - { - "category": "Identity and Access Management", - "subcategory": "Entra ID based access", - "text": "Key access (local authentication) is recommended to be disabled for security. After disabling key based access, Microsoft Entra ID becomes the only access method, which allows maintaining minimum privilege principle and granular control. ", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", - "id": "AOAI.57", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/authentication" - }, - { - "category": "Governance and Security", - "subcategory": "Secure Key Management", - "text": "Store and manage keys securely using Azure Key Vault. Avoid hard-coding or embedding sensitive keys within your LLM application's code and retrieve them securely from Azure Key Vault using managed identities", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", - "id": "AOAI.58", - "severity": "High", - "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices" - }, - { - "category": "Governance and Security", - "subcategory": "Key Rotation and Expiration", - "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", - "id": "AOAI.59", - "severity": "High", - "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices" - }, - { - "category": "Governance and Security", - "subcategory": "Secure coding practice", - "text": "Follow secure coding practices to prevent common vulnerabilities such as injection attacks, cross-site scripting (XSS), or security misconfigurations", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", - "id": "AOAI.60", - "severity": "High", - "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview" - }, - { - "category": "Governance and Security", - "subcategory": "Patching and updates", - "text": "Setup a process to regularly update and patch the LLM libraries and other system components", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", - "id": "AOAI.61", - "severity": "High", - "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops" - }, - { - "category": "Responsible AI", - "subcategory": "Governance", - "text": "Adhere to Azure OpenAI or other LLMs terms of use, policies and guidance and allowed use cases", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "e29711b1-352b-4eee-879b-588defc4972c", - "id": "AOAI.62", - "severity": "High", - "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct" - }, - { - "category": "Cost Optimization", - "subcategory": "Cost familiarization", - "text": "Understand difference in cost of base models and fine tuned models and token step sizes", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", - "id": "AOAI.63", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models" - }, - { - "category": "Cost Optimization", - "subcategory": "Batch processing", - "text": "Batch requests, where possible, to minimize the per-call overhead which can reduce overall costs. Ensure you optimize batch size", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", - "id": "AOAI.64", - "severity": "High", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching" - }, - { - "category": "Cost Optimization", - "subcategory": "Cost monitoring", - "text": "Set up a cost tracking system that monitors model usage and use that information to help inform model choices and prompt sizes", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", - "id": "AOAI.65", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs" - }, - { - "category": "Cost Optimization", - "subcategory": "Token limit", - "text": "Set a maximum limit on the number of tokens per model response. Optimize the size to ensure it is large enough for a valid response", - "waf": "Cost Optimization", - "service": "Azure OpenAI", - "guid": "166cd072-af9b-4141-a898-a535e737897e", - "id": "AOAI.66", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits" - }, - { - "category": "Operations Management", - "subcategory": "AI Search Reliability", - "text": "Review the guidance provided on setting up AI search for Reliability", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", - "id": "AOAI.67", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/search/search-reliability" - }, - { - "category": "Operations Management", - "subcategory": "AI Search Vector Limits", - "text": "Plan and manage AI Search Vector storage", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", - "id": "AOAI.68", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota" - }, - { - "category": "Operations Management", - "subcategory": "DevOps", - "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", - "id": "AOAI.69", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2" - }, - { - "category": "Operations Management", - "subcategory": "DevOps", - "text": "Evaluate the quality of prompts and applications when switching between model versions", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", - "id": "AOAI.70", - "severity": "Medium", - "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793" - }, - { - "category": "Operations Management", - "subcategory": "Development", - "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "3418db61-2712-4650-9bb4-7a393a080327", - "id": "AOAI.71", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2" - }, - { - "category": "Operations Management", - "subcategory": "Development", - "text": "Evaluate your Azure AI Search results based on different search parameters", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "294798b1-578b-4219-a46c-eb5443513592", - "id": "AOAI.72", - "severity": "Medium" - }, - { - "category": "Operations Management", - "subcategory": "Development", - "text": "Look at fine tuning models as way of increasing accuracy only when you have tried other basic approaches like prompt engineering and RAG with your data", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "2744293b-b628-4537-a551-19b08e8f5854", - "id": "AOAI.73", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations" - }, - { - "category": "Operations Management", - "subcategory": "Development", - "text": "Use prompt engineering techniques to improve the accuracy of LLM responses", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "287d9cec-166c-4d07-8af9-b141a898a535", - "id": "AOAI.74", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions" - }, - { - "category": "Governance and Security", - "subcategory": "Security Audits and Penetration Testing", - "text": "Red team your GenAI applications", - "waf": "Security", - "service": "Azure OpenAI", - "guid": "e737897e-71ca-47da-acfa-962a1594946d", - "id": "AOAI.75", - "severity": "Medium", - "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming" - }, - { - "category": "Operations Management", - "subcategory": "End user feedback", - "text": "Provide end users with scoring options for LLM responses and track these scores. ", - "waf": "Operational Excellence", - "service": "Azure OpenAI", - "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", - "id": "AOAI.76", - "severity": "Medium", - "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/" + "items": [ + { + "category": "Responsible AI", + "subcategory": "Metaprompting", + "text": "Follow Metaprompting guardrails for resonsible AI", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "id": "AOAI.1", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails" + }, + { + "category": "Operations Management", + "subcategory": "Load Balancing", + "text": "Consider Gateway patterns with APIM or solutions like AI central for better rate limiting, load balancing, authentication and logging", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "id": "AOAI.10", + "severity": "High", + "link": "https://github.com/Azure-Samples/AI-Gateway" + }, + { + "category": "Operations Management", + "subcategory": "Monitoring", + "text": "Enable monitoring for your AOAI instances", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "id": "AOAI.11", + "severity": "High", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850" + }, + { + "category": "Operations Management", + "subcategory": "Alerts", + "text": "Create alerts to notify teams of events such as an entry in the activity log created by an action performed on the resource, such as regenerating its subscription keys or a metric threshold such as the number of errors exceeding 10 in an hour", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "id": "AOAI.12", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts" + }, + { + "category": "Operations Management", + "subcategory": "Monitoring", + "text": "Monitor token usage to prevent service disruptions due to capacity", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "id": "AOAI.13", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring" + }, + { + "category": "Operations Management", + "subcategory": "Observability", + "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "id": "AOAI.14", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring" + }, + { + "category": "Operations Management", + "subcategory": "Observability", + "text": "If the diagnostics are not sufficient for you, consider using a gateway such as Azure API Managements in front of Azure OpenAI to log both incoming prompts and outgoing responses, where permitted", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "id": "AOAI.15", + "severity": "Low", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562" + }, + { + "category": "Operations Management", + "subcategory": "Infrastructure Deployment", + "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "id": "AOAI.16", + "severity": "High", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac" + }, + { + "category": "Governance and Security", + "subcategory": "Authentication", + "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "id": "AOAI.17", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity" + }, + { + "category": "Responsible AI", + "subcategory": "Evaluation", + "text": "Evaluate the performance/accuracy of the system with a known golden dataset which has the inputs and the correct answers. Leverage capabilities in PromptFlow for Evaluation.", + "waf": "Operational Execellence", + "service": "Azure OpenAI", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "id": "AOAI.18", + "severity": "High", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2" + }, + { + "category": "Operations Management", + "subcategory": "Hosting model", + "text": "Evaluate usage of Provisioned throughput model ", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "id": "AOAI.19", + "severity": "High", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency" + }, + { + "category": "Responsible AI", + "subcategory": "Content Safety", + "text": "Review and implement Azure AI content safety", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "id": "AOAI.2", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview" + }, + { + "category": "Operations Management", + "subcategory": "Throughput definition", + "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "id": "AOAI.20", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput" + }, + { + "category": "Operations Management", + "subcategory": "Latency improvement", + "text": "Improve latency of the system by limiting token sizes, streaming options", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "id": "AOAI.21", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance" + }, + { + "category": "Operations Management", + "subcategory": "Elasticity segregation", + "text": "Estimate elasticity demands to determine synchronous and batch request segregation based on priority. For high priority, use synchronous approach and for low priority, asynchronous batch processing with queue is preferred", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "id": "AOAI.22", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching" + }, + { + "category": "Operations Management", + "subcategory": "Benchmarking", + "text": "Benchmark token consumption requirements based on estimated demands from consumers. Consider using the Azure OpenAI benchmarking tool to help you validate the throughput if you are using Provisioned Throughput Unit deployments", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "id": "AOAI.23", + "severity": "High", + "link": "https://github.com/Azure/azure-openai-benchmark/" + }, + { + "category": "Operations Management", + "subcategory": "Elasticity ", + "text": "If you are using Provisioned Throughput Units (PTUs), consider deploying a token-per-minute (TPM) deployment for overflow requests. Use a gateway to route requests to the TPM deployment when the PTU limits are reached.", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "id": "AOAI.24", + "severity": "Medium", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268" + }, + { + "category": "Operations Management", + "subcategory": "Model choice", + "text": "Choose the right model for the right task. Pick models with right tradeoff between speed, quality of response and output complexity", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "id": "AOAI.25", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models" + }, + { + "category": "Operations Management", + "subcategory": "Fine tuning", + "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance", + "waf": "Performance", + "service": "Azure OpenAI", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "id": "AOAI.26", + "severity": "Medium", + "link": "https://github.com/Azure/azure-openai-benchmark/" + }, + { + "category": "BC and DR", + "subcategory": "Multi-region architecture", + "text": "Deploy multiple OAI instances across regions", + "waf": "Reliability", + "service": "Azure OpenAI", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "id": "AOAI.27", + "severity": "Low", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability" + }, + { + "category": "BC and DR", + "subcategory": "Load balancing", + "text": "Implement retry & healthchecks with Gateway pattern like APIM", + "waf": "Reliability", + "service": "Azure OpenAI", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "id": "AOAI.28", + "severity": "High", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability" + }, + { + "category": "BC and DR", + "subcategory": "Quotas", + "text": "Ensure having adequate quotas of TPM & RPM for the workload", + "waf": "Reliability", + "service": "Azure OpenAI", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "id": "AOAI.29", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota" + }, + { + "category": "Responsible AI", + "subcategory": "UX best practice", + "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "id": "AOAI.3", + "severity": "Medium", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/" + }, + { + "category": "BC and DR", + "subcategory": "Load balancing", + "text": "Deploy separate fine tuned models across regions if finetuning is employed", + "waf": "Reliability", + "service": "Azure OpenAI", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "id": "AOAI.30", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery" + }, + { + "category": "BC and DR", + "subcategory": "Data Backup and Disaster Recovery", + "text": "Regularly backup and replicate critical data to ensure data availability and recoverability in case of data loss or system failures. Leverage Azure's backup and disaster recovery services to protect your data.", + "waf": "Reliability", + "service": "Azure OpenAI", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "id": "AOAI.31", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/backup/backup-overview" + }, + { + "category": "BC and DR", + "subcategory": "SLA considerations", + "text": "Azure AI search service tiers should be choosen to have a SLA ", + "waf": "Reliability", + "service": "Azure OpenAI", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "id": "AOAI.32", + "severity": "High", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1" + }, + { + "category": "Governance and Security", + "subcategory": "Data Sensitivity", + "text": "Classify data and sensitivity, labeling with Microsoft Purview before generating the embeddings and make sure to treat the embeddings generated with same sensitivity and classification", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "id": "AOAI.33", + "severity": "Low", + "link": "https://learn.microsoft.com/purview/purview" + }, + { + "category": "Governance and Security", + "subcategory": "Encryption at Rest", + "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "id": "AOAI.34", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely" + }, + { + "category": "Governance and Security", + "subcategory": "Transit Encryption", + "text": "Ensure TLS is enforced for data in transit across data sources, AI search used for Retrieval-Augmented Generation (RAG) and LLM communication", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "id": "AOAI.35", + "severity": "High", + "link": "https://learn.microsoft.com/azure/search/search-security-overview" + }, + { + "category": "Governance and Security", + "subcategory": "Access Control", + "text": "Use RBAC to manage access to Azure OpenAI services. Assign appropriate permissions to users and restrict access based on their roles and responsibilities", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "id": "AOAI.36", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control" + }, + { + "category": "Governance and Security", + "subcategory": "Data Masking and Redaction", + "text": "Implement data encryption, masking or redaction techniques to hide sensitive data or replace it with obfuscated values in non-production environments or when sharing data for testing or troubleshooting purposes", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "id": "AOAI.37", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices" + }, + { + "category": "Governance and Security", + "subcategory": "Threat Detection and Monitoring", + "text": "Utilize Azure Defender to detect and respond to security threats and set up monitoring and alerting mechanisms to identify suspicious activities or breaches. Leverage Azure Sentinel for advanced threat detection and response", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "id": "AOAI.38", + "severity": "High", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction" + }, + { + "category": "Governance and Security", + "subcategory": "Data Retention and Disposal", + "text": "Establish data retention and disposal policies to adhere to compliance regulations. Implement secure deletion methods for data that is no longer required and maintain an audit trail of data retention and disposal activities", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "id": "AOAI.39", + "severity": "Medium", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791" + }, + { + "category": "Responsible AI", + "subcategory": "Jail break Safety", + "text": "Implement Prompt shields and groundedness detection using Content Safety ", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "id": "AOAI.4", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection" + }, + { + "category": "Governance and Security", + "subcategory": "Data Privacy and Compliance", + "text": "Ensure compliance with relevant data protection regulations, such as GDPR or HIPAA, by implementing privacy controls and obtaining necessary consents or permissions for data processing activities.", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "id": "AOAI.40", + "severity": "High", + "link": "https://learn.microsoft.com/azure/compliance/" + }, + { + "category": "Governance and Security", + "subcategory": "Employee Awareness and Training", + "text": "Educate your employees about data security best practices, the importance of handling data securely, and potential risks associated with data breaches. Encourage them to follow data security protocols diligently.", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "id": "AOAI.41", + "severity": "Medium" + }, + { + "category": "Governance and Security", + "subcategory": "Environment segregation", + "text": "Keep production data separate from development and testing data. Only use real sensitive data in production and utilize anonymized or synthetic data in development and test environments.", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "id": "AOAI.42", + "severity": "High" + }, + { + "category": "Governance and Security", + "subcategory": "Index Segregation", + "text": "If you have varying levels of data sensitivity, consider creating separate indexes for each level. For instance, you could have one index for general data and another for sensitive data, each governed by different access protocols", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "id": "AOAI.43", + "severity": "Medium" + }, + { + "category": "Governance and Security", + "subcategory": "Sensitive Data in Separate Instances", + "text": "Take segregation a step further by placing sensitive datasets in different instances of the service. Each instance can be controlled with its own specific set of RBAC policies", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "id": "AOAI.44", + "severity": "Medium" + }, + { + "category": "Governance and Security", + "subcategory": "Embedding and Vector handling", + "text": "Recognize that embeddings and vectors generated from sensitive information are themselves sensitive. This data should be afforded the same protective measures as the source material", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "id": "AOAI.45", + "severity": "High" + }, + { + "category": "Governance and Security", + "subcategory": "Access control", + "text": "Apply RBAC to th data stores having embeddings and vectors and scope access based on role's access requirements", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "id": "AOAI.46", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control" + }, + { + "category": "Governance and Security", + "subcategory": "Network security", + "text": "Configure private endpoint for AI services to restrict service access within your network", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "id": "AOAI.47", + "severity": "High", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325" + }, + { + "category": "Governance and Security", + "subcategory": "Network security", + "text": "Enforce strict inbound and outbound traffic control with Azure Firewall and UDRs and limit the external integration points", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "id": "AOAI.48", + "severity": "High" + }, + { + "category": "Governance and Security", + "subcategory": "Control Network Access", + "text": "Implement network segmentation and access controls to restrict access to the LLM application only to authorized users and systems and prevent lateral movement", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "id": "AOAI.49", + "severity": "High" + }, + { + "category": "Cost Optimization", + "subcategory": "Token Optimization", + "text": "Use prompt compression tools like LLMLingua or gprtrim", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "id": "AOAI.5", + "severity": "Medium", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/" + }, + { + "category": "Governance and Security", + "subcategory": "Secure APIs and Endpoints", + "text": "Ensure that APIs and endpoints used by the LLM application are properly secured with authentication and authorization mechanisms, such as Managed identities, API keys or OAuth, to prevent unauthorized access.", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "id": "AOAI.50", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity" + }, + { + "category": "Governance and Security", + "subcategory": "Implement Strong Authentication", + "text": "Enforce strong end user authentication mechanisms, such as multi-factor authentication, to prevent unauthorized access to the LLM application and associated network resources", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "id": "AOAI.51", + "severity": "Medium", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885" + }, + { + "category": "Governance and Security", + "subcategory": "Use Network Monitoring", + "text": "Implement network monitoring tools to detect and analyze network traffic for any suspicious or malicious activities. Enable logging to capture network events and facilitate forensic analysis in case of security incidents", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "id": "AOAI.52", + "severity": "Medium" + }, + { + "category": "Governance and Security", + "subcategory": "Security Audits and Penetration Testing", + "text": "Conduct security audits and penetration testing to identify and address any network security weaknesses or vulnerabilities in the LLM application's network infrastructure", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "id": "AOAI.53", + "severity": "Medium" + }, + { + "category": "Governance and Security", + "subcategory": "Infrastructure Deployment", + "text": "Azure AI Services are properly tagged for better management", + "waf": "Operational Excellence", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "id": "AOAI.54", + "service": "Azure OpenAI", + "severity": "Low", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json" + }, + { + "category": "Governance and Security", + "subcategory": "Infrastructure Deployment", + "text": "Azure AI Service accounts follows organizational naming conventions", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "id": "AOAI.55", + "severity": "Low", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations" + }, + { + "category": "Governance and Security", + "subcategory": "Diagnostics Logging", + "text": "Diagnostic logs in Azure AI services resources should be enabled", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "id": "AOAI.56", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging" + }, + { + "category": "Identity and Access Management", + "subcategory": "Entra ID based access", + "text": "Key access (local authentication) is recommended to be disabled for security. After disabling key based access, Microsoft Entra ID becomes the only access method, which allows maintaining minimum privilege principle and granular control. ", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "id": "AOAI.57", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/authentication" + }, + { + "category": "Governance and Security", + "subcategory": "Secure Key Management", + "text": "Store and manage keys securely using Azure Key Vault. Avoid hard-coding or embedding sensitive keys within your LLM application's code and retrieve them securely from Azure Key Vault using managed identities", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "id": "AOAI.58", + "severity": "High", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices" + }, + { + "category": "Governance and Security", + "subcategory": "Key Rotation and Expiration", + "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "id": "AOAI.59", + "severity": "High", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices" + }, + { + "category": "Cost Optimization", + "subcategory": "Token Optimization", + "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "id": "AOAI.6", + "severity": "High", + "link": "https://github.com/openai/tiktoken" + }, + { + "category": "Governance and Security", + "subcategory": "Secure coding practice", + "text": "Follow secure coding practices to prevent common vulnerabilities such as injection attacks, cross-site scripting (XSS), or security misconfigurations", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "id": "AOAI.60", + "severity": "High", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview" + }, + { + "category": "Governance and Security", + "subcategory": "Patching and updates", + "text": "Setup a process to regularly update and patch the LLM libraries and other system components", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "id": "AOAI.61", + "severity": "High", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops" + }, + { + "category": "Responsible AI", + "subcategory": "Governance", + "text": "Adhere to Azure OpenAI or other LLMs terms of use, policies and guidance and allowed use cases", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "id": "AOAI.62", + "severity": "High", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct" + }, + { + "category": "Cost Optimization", + "subcategory": "Cost familiarization", + "text": "Understand difference in cost of base models and fine tuned models and token step sizes", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "id": "AOAI.63", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models" + }, + { + "category": "Cost Optimization", + "subcategory": "Batch processing", + "text": "Batch requests, where possible, to minimize the per-call overhead which can reduce overall costs. Ensure you optimize batch size", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "id": "AOAI.64", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching" + }, + { + "category": "Cost Optimization", + "subcategory": "Cost monitoring", + "text": "Set up a cost tracking system that monitors model usage and use that information to help inform model choices and prompt sizes", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "id": "AOAI.65", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs" + }, + { + "category": "Cost Optimization", + "subcategory": "Token limit", + "text": "Set a maximum limit on the number of tokens per model response. Optimize the size to ensure it is large enough for a valid response", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "id": "AOAI.66", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits" + }, + { + "category": "Operations Management", + "subcategory": "AI Search Reliability", + "text": "Review the guidance provided on setting up AI search for Reliability", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "id": "AOAI.67", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/search/search-reliability" + }, + { + "category": "Operations Management", + "subcategory": "AI Search Vector Limits", + "text": "Plan and manage AI Search Vector storage", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "id": "AOAI.68", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota" + }, + { + "category": "Operations Management", + "subcategory": "DevOps", + "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "id": "AOAI.69", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2" + }, + { + "category": "Cost Optimization", + "subcategory": "Costing Model", + "text": "Evaluate usage of billing models - PAYG vs PTU", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "id": "AOAI.7", + "severity": "High", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model" + }, + { + "category": "Operations Management", + "subcategory": "DevOps", + "text": "Evaluate the quality of prompts and applications when switching between model versions", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "id": "AOAI.70", + "severity": "Medium", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793" + }, + { + "category": "Operations Management", + "subcategory": "Development", + "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, \ufffd", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "id": "AOAI.71", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2" + }, + { + "category": "Operations Management", + "subcategory": "Development", + "text": "Evaluate your Azure AI Search results based on different search parameters", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "id": "AOAI.72", + "severity": "Medium" + }, + { + "category": "Operations Management", + "subcategory": "Development", + "text": "Look at fine tuning models as way of increasing accuracy only when you have tried other basic approaches like prompt engineering and RAG with your data", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "id": "AOAI.73", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations" + }, + { + "category": "Operations Management", + "subcategory": "Development", + "text": "Use prompt engineering techniques to improve the accuracy of LLM responses", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "id": "AOAI.74", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions" + }, + { + "category": "Governance and Security", + "subcategory": "Security Audits and Penetration Testing", + "text": "Red team your GenAI applications", + "waf": "Security", + "service": "Azure OpenAI", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "id": "AOAI.75", + "severity": "Medium", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming" + }, + { + "category": "Operations Management", + "subcategory": "End user feedback", + "text": "Provide end users with scoring options for LLM responses and track these scores. ", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "id": "AOAI.76", + "severity": "Medium", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/" + }, + { + "category": "Cost Optimization", + "subcategory": "Quota Management", + "text": "Consider Quota management practices", + "waf": "Cost Optimization", + "service": "Azure OpenAI", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "id": "AOAI.8", + "severity": "High", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268" + }, + { + "category": "Operations Management", + "subcategory": "Load Balancing", + "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions", + "waf": "Operational Excellence", + "service": "Azure OpenAI", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "id": "AOAI.9", + "severity": "Medium", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md" + } + ], + "categories": [ + { + "name": "Identity and Access Management" + }, + { + "name": "Network Topology and Connectivity" + }, + { + "name": "BC and DR" + }, + { + "name": "Governance and Security" + }, + { + "name": "Cost Governance" + }, + { + "name": "Operations Management" + }, + { + "name": "Application Deployment" + }, + { + "name": "Responsible AI" + } + ], + "waf": [ + { + "name": "Reliability" + }, + { + "name": "Security" + }, + { + "name": "Cost" + }, + { + "name": "Operations" + }, + { + "name": "Performance" + } + ], + "yesno": [ + { + "name": "Yes" + }, + { + "name": "No" + } + ], + "status": [ + { + "name": "Not verified", + "description": "This check has not been looked at yet" + }, + { + "name": "Open", + "description": "There is an action item associated to this check" + }, + { + "name": "Fulfilled", + "description": "This check has been verified, and there are no further action items associated to it" + }, + { + "name": "Not required", + "description": "Recommendation understood, but not needed by current requirements" + }, + { + "name": "N/A", + "description": "Not applicable for current design" + } + ], + "severities": [ + { + "name": "High" + }, + { + "name": "Medium" + }, + { + "name": "Low" + } + ], + "metadata": { + "name": "Azure OpenAI Review", + "state": "Preview", + "waf": "all", + "timestamp": "July 23, 2024" } - ], - "categories": [ - { - "name": "Identity and Access Management" - }, - { - "name": "Network Topology and Connectivity" - }, - { - "name": "BC and DR" - }, - { - "name": "Governance and Security" - }, - { - "name": "Cost Governance" - }, - { - "name": "Operations Management" - }, - { - "name": "Application Deployment" - }, - { - "name": "Responsible AI" - } - ], - "waf": [ - { - "name": "Reliability" - }, - { - "name": "Security" - }, - { - "name": "Cost" - }, - { - "name": "Operations" - }, - { - "name": "Performance" - } - ], - "yesno": [ - { - "name": "Yes" - }, - { - "name": "No" - } - ], - "status": [ - { - "name": "Not verified", - "description": "This check has not been looked at yet" - }, - { - "name": "Open", - "description": "There is an action item associated to this check" - }, - { - "name": "Fulfilled", - "description": "This check has been verified, and there are no further action items associated to it" - }, - { - "name": "Not required", - "description": "Recommendation understood, but not needed by current requirements" - }, - { - "name": "N/A", - "description": "Not applicable for current design" - } - ], - "severities": [ - { - "name": "High" - }, - { - "name": "Medium" - }, - { - "name": "Low" - } - ], - "metadata": { - "name": "Azure OpenAI Review", - "state": "Preview", - "waf": "all", - "timestamp": "07/22/2024 11:25:56" - } -} - +} \ No newline at end of file diff --git a/checklists/aoai_checklist.es.json b/checklists/aoai_checklist.es.json new file mode 100644 index 000000000..08bdc0ebb --- /dev/null +++ b/checklists/aoai_checklist.es.json @@ -0,0 +1,920 @@ +{ + "categories": [ + { + "name": "Gestión de identidades y accesos" + }, + { + "name": "Topología de red y conectividad" + }, + { + "name": "BC y RD" + }, + { + "name": "Gobernanza y seguridad" + }, + { + "name": "Gobernanza de costos" + }, + { + "name": "Gestión de Operaciones" + }, + { + "name": "Implementación de aplicaciones" + }, + { + "name": "IA responsable" + } + ], + "items": [ + { + "category": "IA responsable", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "id": "AOAI.1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Metaprompting (Metaincitación)", + "text": "Siga las barreras de seguridad de Metaprompting para una IA responsable", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "id": "AOAI.10", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Equilibrio de carga", + "text": "Considere la posibilidad de crear patrones de puerta de enlace con APIM o soluciones como AI Central para mejorar la limitación de velocidad, el equilibrio de carga, la autenticación y el registro", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "id": "AOAI.11", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Monitorización", + "text": "Habilitación de la supervisión para las instancias de AOAI", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "id": "AOAI.12", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Alertas", + "text": "Cree alertas para notificar a los equipos de eventos, como una entrada en el registro de actividad creada por una acción realizada en el recurso, como la regeneración de sus claves de suscripción, o un umbral de métrica, como el número de errores que superan los 10 en una hora", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "id": "AOAI.13", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Monitorización", + "text": "Supervise el uso de tokens para evitar interrupciones del servicio debido a la capacidad", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "id": "AOAI.14", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Observancia", + "text": "Observe métricas como tokens de inferencia procesados, tokens de finalización generados, monitoree el límite de velocidad", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "id": "AOAI.15", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "Bajo", + "subcategory": "Observancia", + "text": "Si los diagnósticos no son suficientes para usted, considere la posibilidad de usar una puerta de enlace como Azure API Managements frente a Azure OpenAI para registrar tanto los mensajes entrantes como las respuestas salientes, cuando esté permitido", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "id": "AOAI.16", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Despliegue de infraestructura", + "text": "Use la infraestructura como código para implementar el servicio Azure OpenAI, las implementaciones de modelos y todos los recursos relacionados", + "waf": "Excelencia Operacional" + }, + { + "category": "Gobernanza y seguridad", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "id": "AOAI.17", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Autenticación", + "text": "Uso de la autenticación de Microsoft Entra con identidad administrada en lugar de clave de API", + "waf": "Seguridad" + }, + { + "category": "IA responsable", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "id": "AOAI.18", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Evaluación", + "text": "Evalúe el rendimiento/precisión del sistema con un conjunto de datos dorado conocido que tenga las entradas y las respuestas correctas. Aproveche las capacidades de PromptFlow para la evaluación.", + "waf": "Excelencia Operativa" + }, + { + "category": "Gestión de Operaciones", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "id": "AOAI.19", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Modelo de alojamiento", + "text": "Evaluación del uso del modelo de rendimiento aprovisionado ", + "waf": "Rendimiento" + }, + { + "category": "IA responsable", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "id": "AOAI.2", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Seguridad del contenido", + "text": "Revisión e implementación de la seguridad del contenido de Azure AI", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "id": "AOAI.20", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Definición de rendimiento", + "text": "Defina y evalúe el rendimiento del sistema en función de los tokens y la respuesta por minuto y alinee con los requisitos", + "waf": "Rendimiento" + }, + { + "category": "Gestión de Operaciones", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "id": "AOAI.21", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Mejora de la latencia", + "text": "Mejore la latencia del sistema limitando el tamaño de los tokens, las opciones de transmisión", + "waf": "Rendimiento" + }, + { + "category": "Gestión de Operaciones", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "id": "AOAI.22", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Segregación por elasticidad", + "text": "Calcule las demandas de elasticidad para determinar la segregación de solicitudes sincrónicas y por lotes en función de la prioridad. Para la prioridad alta, utilice el enfoque sincrónico y para la prioridad baja, se prefiere el procesamiento por lotes asincrónico con cola", + "waf": "Rendimiento" + }, + { + "category": "Gestión de Operaciones", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "id": "AOAI.23", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Evaluación comparativa", + "text": "Compare los requisitos de consumo de tokens en función de las demandas estimadas de los consumidores. Considere la posibilidad de usar la herramienta de pruebas comparativas de Azure OpenAI para ayudarle a validar el rendimiento si usa implementaciones de unidades de rendimiento aprovisionadas", + "waf": "Rendimiento" + }, + { + "category": "Gestión de Operaciones", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "id": "AOAI.24", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Elasticidad ", + "text": "Si usa unidades de rendimiento aprovisionadas (PTU), considere la posibilidad de implementar una implementación de token por minuto (TPM) para las solicitudes de desbordamiento. Use una puerta de enlace para enrutar las solicitudes a la implementación de TPM cuando se alcancen los límites de PTU.", + "waf": "Rendimiento" + }, + { + "category": "Gestión de Operaciones", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "id": "AOAI.25", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Elección del modelo", + "text": "Elija el modelo adecuado para la tarea correcta. Elija modelos con el equilibrio adecuado entre velocidad, calidad de respuesta y complejidad de salida", + "waf": "Rendimiento" + }, + { + "category": "Gestión de Operaciones", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "id": "AOAI.26", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Puesta a punto", + "text": "Tener una línea de base para el rendimiento sin ajuste fino para saber si el ajuste fino ha mejorado o no el rendimiento del modelo", + "waf": "Rendimiento" + }, + { + "category": "BC y RD", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "id": "AOAI.27", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Bajo", + "subcategory": "Arquitectura multirregional", + "text": "Implementación de varias instancias de OAI en todas las regiones", + "waf": "Fiabilidad" + }, + { + "category": "BC y RD", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "id": "AOAI.28", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Equilibrio de carga", + "text": "Implemente reintentos y comprobaciones de estado con el patrón de puerta de enlace como APIM", + "waf": "Fiabilidad" + }, + { + "category": "BC y RD", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "id": "AOAI.29", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Cuotas", + "text": "Asegúrese de tener cuotas adecuadas de TPM y RPM para la carga de trabajo", + "waf": "Fiabilidad" + }, + { + "category": "IA responsable", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "id": "AOAI.3", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Mejores prácticas de UX", + "text": "Revise las consideraciones de la guía del kit de herramientas de HAI y aplique esas prácticas de interacción para el slution", + "waf": "Excelencia Operacional" + }, + { + "category": "BC y RD", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "id": "AOAI.30", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Equilibrio de carga", + "text": "Implemente modelos de ajuste de precisión independientes en todas las regiones si se emplea el ajuste de precisión", + "waf": "Fiabilidad" + }, + { + "category": "BC y RD", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "id": "AOAI.31", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Copia de seguridad de datos y recuperación ante desastres", + "text": "Realice copias de seguridad y replique regularmente los datos críticos para garantizar la disponibilidad y la capacidad de recuperación de los datos en caso de pérdida de datos o fallos del sistema. Aproveche los servicios de copia de seguridad y recuperación ante desastres de Azure para proteger sus datos.", + "waf": "Fiabilidad" + }, + { + "category": "BC y RD", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "id": "AOAI.32", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Consideraciones sobre el SLA", + "text": "Los niveles de servicio de búsqueda de Azure AI deben elegirse para tener un Acuerdo de Nivel de Servicio ", + "waf": "Fiabilidad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "id": "AOAI.33", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "Bajo", + "subcategory": "Confidencialidad de los datos", + "text": "Clasifique los datos y la confidencialidad, etiquetando con Microsoft Purview antes de generar las incrustaciones y asegúrese de tratar las incrustaciones generadas con la misma confidencialidad y clasificación", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "id": "AOAI.34", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Cifrado en reposo", + "text": "Cifre los datos utilizados para RAG con cifrado SSE/Disk con BYOK opcional", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "id": "AOAI.35", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Encriptación de tránsito", + "text": "Asegúrese de que TLS se aplica a los datos en tránsito a través de fuentes de datos, la búsqueda de IA utilizada para la generación aumentada de recuperación (RAG) y la comunicación de LLM", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "id": "AOAI.36", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Control de acceso", + "text": "Use RBAC para administrar el acceso a los servicios de Azure OpenAI. Asigne los permisos adecuados a los usuarios y restrinja el acceso en función de sus funciones y responsabilidades", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "id": "AOAI.37", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Enmascaramiento y redacción de datos", + "text": "Implemente técnicas de cifrado, enmascaramiento o redacción de datos para ocultar datos confidenciales o reemplazarlos con valores ofuscados en entornos que no sean de producción o al compartir datos con fines de prueba o solución de problemas", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "id": "AOAI.38", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Detección y monitoreo de amenazas", + "text": "Use Azure Defender para detectar y responder a las amenazas de seguridad y configurar mecanismos de supervisión y alerta para identificar actividades sospechosas o infracciones. Aproveche Azure Sentinel para la detección y respuesta a amenazas avanzadas", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "id": "AOAI.39", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Retención y eliminación de datos", + "text": "Establezca políticas de retención y eliminación de datos para cumplir con las regulaciones de cumplimiento. Implemente métodos de eliminación seguros para los datos que ya no son necesarios y mantenga un registro de auditoría de las actividades de retención y eliminación de datos", + "waf": "Seguridad" + }, + { + "category": "IA responsable", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "id": "AOAI.4", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Seguridad en la fuga de la cárcel", + "text": "Implemente los escudos de aviso y la detección de conexión a tierra mediante Content Safety ", + "waf": "Excelencia Operacional" + }, + { + "category": "Gobernanza y seguridad", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "id": "AOAI.40", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Privacidad de datos y cumplimiento", + "text": "Garantice el cumplimiento de las normativas de protección de datos pertinentes, como el RGPD o la HIPAA, mediante la implementación de controles de privacidad y la obtención de los consentimientos o permisos necesarios para las actividades de tratamiento de datos.", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "id": "AOAI.41", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Concienciación y formación de los empleados", + "text": "Eduque a sus empleados sobre las mejores prácticas de seguridad de datos, la importancia de manejar los datos de forma segura y los riesgos potenciales asociados con las violaciones de datos. Anímelos a seguir diligentemente los protocolos de seguridad de datos.", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "id": "AOAI.42", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Segregación del medio ambiente", + "text": "Mantenga los datos de producción separados de los datos de desarrollo y pruebas. Utilice únicamente datos confidenciales reales en producción y utilice datos anónimos o sintéticos en entornos de desarrollo y prueba.", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "id": "AOAI.43", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Segregación de índices", + "text": "Si tiene distintos niveles de confidencialidad de datos, considere la posibilidad de crear índices independientes para cada nivel. Por ejemplo, podría tener un índice para los datos generales y otro para los datos confidenciales, cada uno gobernado por diferentes protocolos de acceso", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "id": "AOAI.44", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Datos confidenciales en instancias separadas", + "text": "Lleve la segregación un paso más allá colocando conjuntos de datos confidenciales en diferentes instancias del servicio. Cada instancia se puede controlar con su propio conjunto específico de políticas RBAC", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "id": "AOAI.45", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Incrustación y manejo de vectores", + "text": "Reconozca que las incrustaciones y los vectores generados a partir de información confidencial son en sí mismos confidenciales. Estos datos deben recibir las mismas medidas de protección que el material de origen", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "id": "AOAI.46", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Control de acceso", + "text": "Aplique RBAC a los almacenes de datos que tienen incrustaciones y vectores y alcance el acceso en función de los requisitos de acceso del rol", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "id": "AOAI.47", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Seguridad de la red", + "text": "Configure un punto de conexión privado para que los servicios de IA restrinjan el acceso al servicio dentro de su red", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "id": "AOAI.48", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Seguridad de la red", + "text": "Aplique un estricto control del tráfico entrante y saliente con Azure Firewall y UDR, y limite los puntos de integración externos", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "id": "AOAI.49", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Controlar el acceso a la red", + "text": "Implemente la segmentación de la red y los controles de acceso para restringir el acceso a la aplicación LLM solo a los usuarios y sistemas autorizados y evitar el movimiento lateral", + "waf": "Seguridad" + }, + { + "category": "Optimización de costes", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "id": "AOAI.5", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Optimización de tokens", + "text": "Utilice herramientas de compresión rápida como LLMLingua o gprtrim", + "waf": "Optimización de costes" + }, + { + "category": "Gobernanza y seguridad", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "id": "AOAI.50", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "API y endpoints seguros", + "text": "Asegúrese de que las API y los puntos finales utilizados por la aplicación LLM estén correctamente protegidos con mecanismos de autenticación y autorización, como identidades administradas, claves de API u OAuth, para evitar el acceso no autorizado.", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "id": "AOAI.51", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Implementación de una autenticación sólida", + "text": "Aplique mecanismos sólidos de autenticación de usuario final, como la autenticación multifactor, para evitar el acceso no autorizado a la aplicación LLM y a los recursos de red asociados", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "id": "AOAI.52", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Uso de la supervisión de red", + "text": "Implemente herramientas de monitoreo de red para detectar y analizar el tráfico de red en busca de actividades sospechosas o maliciosas. Habilite el registro para capturar eventos de red y facilitar el análisis forense en caso de incidentes de seguridad", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "id": "AOAI.53", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Auditorías de seguridad y pruebas de penetración", + "text": "Realizar auditorías de seguridad y pruebas de penetración para identificar y abordar cualquier debilidad o vulnerabilidad de seguridad de red en la infraestructura de red de la aplicación LLM", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "id": "AOAI.54", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "Bajo", + "subcategory": "Despliegue de infraestructura", + "text": "Los servicios de Azure AI están etiquetados correctamente para una mejor administración", + "waf": "Excelencia Operacional" + }, + { + "category": "Gobernanza y seguridad", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "id": "AOAI.55", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "Bajo", + "subcategory": "Despliegue de infraestructura", + "text": "Las cuentas de Azure AI Service siguen las convenciones de nomenclatura de la organización", + "waf": "Excelencia Operacional" + }, + { + "category": "Gobernanza y seguridad", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "id": "AOAI.56", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Registro de diagnósticos", + "text": "Los registros de diagnóstico en los recursos de servicios de Azure AI deben estar habilitados", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de identidades y accesos", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "id": "AOAI.57", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Acceso basado en ID de Entra", + "text": "Se recomienda deshabilitar el acceso a claves (autenticación local) por seguridad. Después de deshabilitar el acceso basado en claves, el identificador de Microsoft Entra se convierte en el único método de acceso, lo que permite mantener el principio de privilegio mínimo y el control granular. ", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "id": "AOAI.58", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Gestión segura de claves", + "text": "Almacene y administre claves de forma segura con Azure Key Vault. Evite codificar de forma rígida o incrustar claves confidenciales en el código de la aplicación de LLM y recupérelas de forma segura de Azure Key Vault mediante identidades administradas", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "id": "AOAI.59", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Rotación y caducidad de claves", + "text": "Rotar y expirar periódicamente las claves almacenadas en Azure Key Vault para minimizar el riesgo de acceso no autorizado.", + "waf": "Seguridad" + }, + { + "category": "Optimización de costes", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "id": "AOAI.6", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Optimización de tokens", + "text": "Use tiktoken para comprender los tamaños de los tokens para las optimizaciones de tokens en el modo conversacional", + "waf": "Optimización de costes" + }, + { + "category": "Gobernanza y seguridad", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "id": "AOAI.60", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Práctica de codificación segura", + "text": "Siga prácticas de codificación seguras para evitar vulnerabilidades comunes, como ataques de inyección, secuencias de comandos entre sitios (XSS) o errores de configuración de seguridad.", + "waf": "Seguridad" + }, + { + "category": "Gobernanza y seguridad", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "id": "AOAI.61", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Aplicación de parches y actualizaciones", + "text": "Configurar un proceso para actualizar y parchear regularmente las bibliotecas de LLM y otros componentes del sistema", + "waf": "Seguridad" + }, + { + "category": "IA responsable", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "id": "AOAI.62", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Gobernanza", + "text": "Cumplir con los términos de uso, las directivas y las directrices de Azure OpenAI u otros LLM, así como con los casos de uso permitidos.", + "waf": "Excelencia Operacional" + }, + { + "category": "Optimización de costes", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "id": "AOAI.63", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Familiarización con los costos", + "text": "Comprenda la diferencia en el costo de los modelos base y los modelos ajustados y los tamaños de paso de token", + "waf": "Optimización de costes" + }, + { + "category": "Optimización de costes", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "id": "AOAI.64", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Procesamiento por lotes", + "text": "Solicitudes por lotes, siempre que sea posible, para minimizar la sobrecarga por llamada, lo que puede reducir los costos generales. Asegúrese de optimizar el tamaño del lote", + "waf": "Optimización de costes" + }, + { + "category": "Optimización de costes", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "id": "AOAI.65", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Seguimiento de costes", + "text": "Configure un sistema de seguimiento de costos que supervise el uso del modelo y use esa información para ayudar a informar las opciones de modelos y los tamaños indicados", + "waf": "Optimización de costes" + }, + { + "category": "Optimización de costes", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "id": "AOAI.66", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Límite de tokens", + "text": "Establezca un límite máximo en el número de tokens por respuesta de modelo. Optimice el tamaño para asegurarse de que sea lo suficientemente grande para una respuesta válida", + "waf": "Optimización de costes" + }, + { + "category": "Gestión de Operaciones", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "id": "AOAI.67", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Fiabilidad de la búsqueda con IA", + "text": "Revise las instrucciones proporcionadas sobre la configuración de la búsqueda de IA para la confiabilidad", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "id": "AOAI.68", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Límites del vector de búsqueda de IA", + "text": "Planifique y administre el almacenamiento de vectores de búsqueda de IA", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "id": "AOAI.69", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "DevOps (Operaciones de desarrollo)", + "text": "Aplique prácticas de LLMOps para automatizar la gestión del ciclo de vida de sus aplicaciones GenAI", + "waf": "Excelencia Operacional" + }, + { + "category": "Optimización de costes", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "id": "AOAI.7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Modelo de cálculo de costes", + "text": "Evalúe el uso de los modelos de facturación: PAYG frente a PTU", + "waf": "Optimización de costes" + }, + { + "category": "Gestión de Operaciones", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "id": "AOAI.70", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "DevOps (Operaciones de desarrollo)", + "text": "Evalúe la calidad de los mensajes y las aplicaciones al cambiar entre versiones de modelo", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "id": "AOAI.71", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Desarrollo", + "text": "Evalúe, supervise y perfeccione sus aplicaciones GenAI para características como la fundamentación, la relevancia, la precisión, la coherencia, la fluidez,", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "id": "AOAI.72", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Desarrollo", + "text": "Evalúe los resultados de búsqueda de Azure AI en función de diferentes parámetros de búsqueda", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "id": "AOAI.73", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Desarrollo", + "text": "Considere los modelos de ajuste fino como una forma de aumentar la precisión solo cuando haya probado otros enfoques básicos como la ingeniería de avisos y RAG con sus datos", + "waf": "Excelencia Operacional" + }, + { + "category": "Gestión de Operaciones", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "id": "AOAI.74", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Desarrollo", + "text": "Utilice técnicas de ingeniería rápida para mejorar la precisión de las respuestas de LLM", + "waf": "Excelencia Operacional" + }, + { + "category": "Gobernanza y seguridad", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "id": "AOAI.75", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Auditorías de seguridad y pruebas de penetración", + "text": "Equipo rojo con sus aplicaciones GenAI", + "waf": "Seguridad" + }, + { + "category": "Gestión de Operaciones", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "id": "AOAI.76", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Comentarios de los usuarios finales", + "text": "Proporcione a los usuarios finales opciones de puntuación para las respuestas de LLM y realice un seguimiento de estas puntuaciones. ", + "waf": "Excelencia Operacional" + }, + { + "category": "Optimización de costes", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "id": "AOAI.8", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Gestión de cuotas", + "text": "Considere las prácticas de administración de cuotas", + "waf": "Optimización de costes" + }, + { + "category": "Gestión de Operaciones", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "id": "AOAI.9", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "Medio", + "subcategory": "Equilibrio de carga", + "text": "Utilice soluciones de equilibrador de carga, como la puerta de enlace basada en APIM, para equilibrar la carga y la capacidad entre servicios y regiones", + "waf": "Excelencia Operacional" + } + ], + "metadata": { + "name": "Azure OpenAI Review", + "state": "Preview", + "timestamp": "July 23, 2024", + "waf": "all" + }, + "severities": [ + { + "name": "Alto" + }, + { + "name": "Medio" + }, + { + "name": "Bajo" + } + ], + "status": [ + { + "description": "Este control aún no se ha examinado", + "name": "No verificado" + }, + { + "description": "Hay un elemento de acción asociado a esta comprobación", + "name": "Abrir" + }, + { + "description": "Esta comprobación se ha verificado y no hay más elementos de acción asociados a ella", + "name": "Cumplido" + }, + { + "description": "Recomendación entendida, pero no necesaria por los requisitos actuales", + "name": "No es necesario" + }, + { + "description": "No aplicable para el diseño actual", + "name": "N/A" + } + ], + "waf": [ + { + "name": "Fiabilidad" + }, + { + "name": "Seguridad" + }, + { + "name": "Costar" + }, + { + "name": "Operaciones" + }, + { + "name": "Rendimiento" + } + ], + "yesno": [ + { + "name": "Sí" + }, + { + "name": "No" + } + ] +} \ No newline at end of file diff --git a/checklists/aoai_checklist.ja.json b/checklists/aoai_checklist.ja.json new file mode 100644 index 000000000..af0251903 --- /dev/null +++ b/checklists/aoai_checklist.ja.json @@ -0,0 +1,920 @@ +{ + "categories": [ + { + "name": "ID およびアクセス管理" + }, + { + "name": "ネットワーク トポロジと接続性" + }, + { + "name": "BC と DR" + }, + { + "name": "ガバナンスとセキュリティ" + }, + { + "name": "コストガバナンス" + }, + { + "name": "オペレーションマネジメント" + }, + { + "name": "アプリケーションのデプロイメント" + }, + { + "name": "責任あるAI" + } + ], + "items": [ + { + "category": "責任あるAI", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "id": "AOAI.1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "メタプロンプティング", + "text": "共鳴可能なAIのためのメタプロンプトガードレールに従う", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "id": "AOAI.10", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "ロードバランシング", + "text": "APIM や AI Central などのソリューションを使用したゲートウェイ パターンを検討して、レート制限、負荷分散、認証、ログ記録を改善します", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "id": "AOAI.11", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "モニタリング", + "text": "AOAI インスタンスの監視を有効にする", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "id": "AOAI.12", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "アラート", + "text": "リソースに対して実行されたアクション (サブスクリプション キーの再生成など) によって作成されたアクティビティ ログのエントリや、1 時間に 10 を超えるエラー数などのメトリックしきい値によって作成されたアクティビティ ログのエントリなど、イベントを通知するアラートを作成します", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "id": "AOAI.13", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "モニタリング", + "text": "トークンの使用状況を監視して、容量によるサービスの中断を防ぎます", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "id": "AOAI.14", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "オブザーバビリティ", + "text": "処理された推論トークン、生成された完了トークンなどのメトリックを観察し、レート制限を監視します", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "id": "AOAI.15", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "低い", + "subcategory": "オブザーバビリティ", + "text": "診断が十分でない場合は、Azure OpenAI の前で Azure API Management などのゲートウェイを使用して、受信プロンプトと送信応答の両方をログに記録することを検討してください (許可されている場合)", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "id": "AOAI.16", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "インフラストラクチャの展開", + "text": "コードとしてのインフラストラクチャを使用して、Azure OpenAI Service、モデル デプロイ、およびすべての関連リソースをデプロイします", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "id": "AOAI.17", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "認証", + "text": "API キーの代わりにマネージド ID で Microsoft Entra 認証を使用する", + "waf": "安全" + }, + { + "category": "責任あるAI", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "id": "AOAI.18", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "評価", + "text": "入力と正しい答えを持つ既知のゴールデンデータセットを使用して、システムのパフォーマンス/精度を評価します。PromptFlowの機能を評価に活用します。", + "waf": "運用上のエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "id": "AOAI.19", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "ホスティングモデル", + "text": "プロビジョニング済みスループットモデルの使用状況の評価", + "waf": "パフォーマンス" + }, + { + "category": "責任あるAI", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "id": "AOAI.2", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "コンテンツの安全性", + "text": "Azure AI コンテンツの安全性を確認して実装する", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "id": "AOAI.20", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "スループットの定義", + "text": "トークンと1分あたりのレスポンスに基づいてシステムのスループットを定義および評価し、要件に合わせます", + "waf": "パフォーマンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "id": "AOAI.21", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "レイテンシーの改善", + "text": "トークンサイズ、ストリーミングオプションを制限することにより、システムのレイテンシーを改善します", + "waf": "パフォーマンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "id": "AOAI.22", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "弾力性の分離", + "text": "弾力性の要求を見積もり、優先順位に基づいて同期要求とバッチ要求の分離を決定します。優先度が高い場合は同期アプローチを使用し、優先度が低い場合はキューを使用した非同期バッチ処理が推奨されます", + "waf": "パフォーマンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "id": "AOAI.23", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "ベンチマーク", + "text": "消費者からの推定需要に基づくトークン消費要件のベンチマーク。プロビジョニングされたスループット ユニットのデプロイを使用している場合は、Azure OpenAI ベンチマーク ツールを使用してスループットを検証することを検討してください", + "waf": "パフォーマンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "id": "AOAI.24", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "弾性", + "text": "プロビジョニングされたスループットユニット (PTU) を使用している場合は、オーバーフローリクエストに対して Token-Per Minute (TPM) デプロイメントをデプロイすることを検討してください。ゲートウェイを使用して、PTU の制限に達したときに要求を TPM デプロイにルーティングします。", + "waf": "パフォーマンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "id": "AOAI.25", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "モデルの選択", + "text": "適切なタスクに適したモデルを選択してください。速度、応答の品質、出力の複雑さの間で適切なトレードオフを持つモデルを選択する", + "waf": "パフォーマンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "id": "AOAI.26", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "微調整", + "text": "微調整によってモデルのパフォーマンスが向上したかどうかを知るための微調整を行わずに、パフォーマンスのベースラインを設定する", + "waf": "パフォーマンス" + }, + { + "category": "BC と DR", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "id": "AOAI.27", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "低い", + "subcategory": "マルチリージョン アーキテクチャ", + "text": "複数のOAIインスタンスを複数のリージョンにデプロイする", + "waf": "確実" + }, + { + "category": "BC と DR", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "id": "AOAI.28", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "ロードバランシング", + "text": "APIM のようなゲートウェイ パターンを使用した再試行とヘルスチェックの実装", + "waf": "確実" + }, + { + "category": "BC と DR", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "id": "AOAI.29", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "クォータ", + "text": "ワークロードに対してTPMとRPMの適切なクォータがあることを確認します", + "waf": "確実" + }, + { + "category": "責任あるAI", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "id": "AOAI.3", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "UX のベスト プラクティス", + "text": "HAIツールキットガイダンスの考慮事項を確認し、それらの相互作用の実践をslutionに適用します", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "BC と DR", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "id": "AOAI.30", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "ロードバランシング", + "text": "ファインチューニングが採用されている場合は、リージョン間で個別の微調整モデルをデプロイします", + "waf": "確実" + }, + { + "category": "BC と DR", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "id": "AOAI.31", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "データバックアップとディザスタリカバリ", + "text": "重要なデータを定期的にバックアップおよびレプリケートして、データの損失やシステム障害が発生した場合のデータの可用性と回復性を確保します。Azure のバックアップおよびディザスター リカバリー サービスを活用して、データを保護します。", + "waf": "確実" + }, + { + "category": "BC と DR", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "id": "AOAI.32", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "SLA に関する考慮事項", + "text": "Azure AI Search サービス レベルは、SLA を持つために選択する必要があります", + "waf": "確実" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "id": "AOAI.33", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "低い", + "subcategory": "データの機密性", + "text": "データと機密性を分類し、埋め込みを生成する前に Microsoft Purview でラベル付けし、生成された埋め込みを同じ感度と分類で処理するようにしてください", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "id": "AOAI.34", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "保存時の暗号化", + "text": "SSE/ディスク暗号化(オプションのBYOKを使用)を使用してRAGに使用されるデータを暗号化", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "id": "AOAI.35", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "トランジット暗号化", + "text": "データソース間で転送されるデータ、Retrieval-Augmented Generation(RAG)およびLLM通信に使用されるAI検索にTLSが適用されていることを確認します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "id": "AOAI.36", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "アクセス制御", + "text": "RBAC を使用して、Azure OpenAI サービスへのアクセスを管理します。ユーザーに適切な権限を割り当て、ユーザーの役割と責任に基づいてアクセスを制限します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "id": "AOAI.37", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "データマスキングとリダクション", + "text": "データの暗号化、マスキング、または編集技術を実装して、機密データを非表示にしたり、非本番環境で難読化された値に置き換えたり、テストやトラブルシューティングの目的でデータを共有する場合", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "id": "AOAI.38", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "脅威の検出と監視", + "text": "Azure Defender を利用して、セキュリティの脅威を検出して対応し、監視とアラートのメカニズムを設定して、疑わしいアクティビティや侵害を特定します。Azure Sentinel を活用して高度な脅威の検出と対応を実現", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "id": "AOAI.39", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "データの保持と廃棄", + "text": "コンプライアンス規制を遵守するためのデータ保持および廃棄ポリシーを確立します。不要になったデータに対して安全な削除方法を実装し、データの保持と廃棄活動の監査証跡を維持します", + "waf": "安全" + }, + { + "category": "責任あるAI", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "id": "AOAI.4", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "脱獄の安全性", + "text": "Content Safety を使用した Prompt シールドと接地検出の実装", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "id": "AOAI.40", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "データのプライバシーとコンプライアンス", + "text": "GDPRやHIPAAなどの関連するデータ保護規制への準拠を確保するには、プライバシー制御を実装し、データ処理活動に必要な同意または許可を取得します。", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "id": "AOAI.41", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "従業員の意識向上と教育", + "text": "データセキュリティのベストプラクティス、データの安全な取り扱いの重要性、データ侵害に関連する潜在的なリスクについて、従業員を教育します。データセキュリティプロトコルに熱心に従うように促します。", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "id": "AOAI.42", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "環境の分離", + "text": "運用データを開発データやテストデータから分離します。本番環境では実際の機密データのみを使用し、開発環境やテスト環境では匿名化されたデータや合成データを利用します。", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "id": "AOAI.43", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "インデックスの分離", + "text": "データの機密性のレベルが異なる場合は、レベルごとに個別のインデックスを作成することを検討してください。たとえば、一般的なデータ用に 1 つのインデックスを作成し、機密データ用に別のインデックスを作成し、それぞれ異なるアクセス プロトコルで管理することができます", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "id": "AOAI.44", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "個別のインスタンス内の機密データ", + "text": "分離をさらに一歩進めて、機密性の高いデータセットをサービスの異なるインスタンスに配置します。各インスタンスは、独自のRBACポリシーのセットで制御できます", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "id": "AOAI.45", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "埋め込みとベクター処理", + "text": "機密情報から生成された埋め込みとベクトルは、それ自体が機密性が高いことを認識します。このデータには、ソースマテリアルと同じ保護対策を提供する必要があります", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "id": "AOAI.46", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "アクセス制御", + "text": "埋め込みとベクトルを持つデータストアに RBAC を適用し、ロールのアクセス要件に基づいてアクセスのスコープを設定します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "id": "AOAI.47", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "ネットワークセキュリティ", + "text": "AI サービスのプライベート エンドポイントを構成して、ネットワーク内のサービス アクセスを制限します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "id": "AOAI.48", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "ネットワークセキュリティ", + "text": "Azure Firewall と UDR を使用して受信と送信のトラフィック制御を厳密に適用し、外部統合ポイントを制限します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "id": "AOAI.49", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "ネットワークアクセスの制御", + "text": "ネットワークのセグメンテーションとアクセス制御を実装して、LLMアプリケーションへのアクセスを許可されたユーザーとシステムのみに制限し、横方向の移動を防ぎます", + "waf": "安全" + }, + { + "category": "コストの最適化", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "id": "AOAI.5", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "トークンの最適化", + "text": "LLMLingua や gprtrim などのプロンプト圧縮ツールを使用します", + "waf": "コストの最適化" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "id": "AOAI.50", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "安全なAPIとエンドポイント", + "text": "LLM アプリケーションで使用される API とエンドポイントが、マネージド ID、API キー、OAuth などの認証および承認メカニズムで適切に保護され、不正アクセスを防止します。", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "id": "AOAI.51", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "強力な認証の実装", + "text": "多要素認証などの強力なエンドユーザー認証メカニズムを適用して、LLMアプリケーションおよび関連するネットワークリソースへの不正アクセスを防止します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "id": "AOAI.52", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "ネットワーク監視を使用する", + "text": "ネットワーク監視ツールを実装して、疑わしいアクティビティや悪意のあるアクティビティのネットワークトラフィックを検出および分析します。ロギングを有効にしてネットワークイベントをキャプチャし、セキュリティインシデントが発生した場合のフォレンジック分析を容易にします", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "id": "AOAI.53", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "セキュリティ監査と侵入テスト", + "text": "セキュリティ監査と侵入テストを実施して、LLMアプリケーションのネットワークインフラストラクチャのネットワークセキュリティの弱点または脆弱性を特定して対処します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "id": "AOAI.54", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "低い", + "subcategory": "インフラストラクチャの展開", + "text": "Azure AI Services は、管理を改善するために適切にタグ付けされています", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "id": "AOAI.55", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "低い", + "subcategory": "インフラストラクチャの展開", + "text": "Azure AI Service アカウントは、組織の名前付け規則に従います", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "id": "AOAI.56", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "診断のログ", + "text": "Azure AI サービス リソースの診断ログを有効にする必要がある", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "ID およびアクセス管理", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "id": "AOAI.57", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "Entra IDベースのアクセス", + "text": "セキュリティのため、キーアクセス(ローカル認証)を無効にすることをお勧めします。 キーベースのアクセスを無効にすると、Microsoft Entra IDが唯一のアクセス方法になり、最小限の特権原則ときめ細かな制御を維持できます。", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "id": "AOAI.58", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "セキュアなキー管理", + "text": "Azure Key Vault を使用して、キーを安全に保存および管理します。LLM アプリケーションのコード内で機密性の高いキーをハードコーディングしたり埋め込んだりすることを避け、マネージド ID を使用して Azure Key Vault から安全に取得します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "id": "AOAI.59", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "キーのローテーションと有効期限", + "text": "Azure Key Vault に格納されているキーを定期的にローテーションして期限切れにすることで、不正アクセスのリスクを最小限に抑えます。", + "waf": "安全" + }, + { + "category": "コストの最適化", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "id": "AOAI.6", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "トークンの最適化", + "text": "tiktokenを使用して、会話モードでのトークン最適化のためのトークンサイズを理解します", + "waf": "コストの最適化" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "id": "AOAI.60", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "安全なコーディングの実践", + "text": "安全なコーディング手法に従って、インジェクション攻撃、クロスサイトスクリプティング(XSS)、セキュリティ設定の誤りなどの一般的な脆弱性を防止します", + "waf": "安全" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "id": "AOAI.61", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "パッチ適用と更新", + "text": "LLM ライブラリとその他のシステム コンポーネントを定期的に更新し、パッチを適用するプロセスを設定します", + "waf": "安全" + }, + { + "category": "責任あるAI", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "id": "AOAI.62", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "統治", + "text": "Azure OpenAI またはその他の LLM の利用規約、ポリシー、ガイダンス、および許可されたユース ケースを順守する", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "コストの最適化", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "id": "AOAI.63", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "コストの習熟度", + "text": "基本モデルと微調整されたモデルおよびトークンのステップサイズのコストの違いを理解する", + "waf": "コストの最適化" + }, + { + "category": "コストの最適化", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "id": "AOAI.64", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "バッチ処理", + "text": "可能であれば、呼び出しごとのオーバーヘッドを最小限に抑え、全体的なコストを削減できるバッチ要求。バッチサイズを確実に最適化する", + "waf": "コストの最適化" + }, + { + "category": "コストの最適化", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "id": "AOAI.65", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "コスト監視", + "text": "モデルの使用状況を監視するコスト追跡システムを設定し、その情報を使用してモデルの選択とプロンプトのサイズを通知します", + "waf": "コストの最適化" + }, + { + "category": "コストの最適化", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "id": "AOAI.66", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "トークン制限", + "text": "モデル応答あたりのトークン数に上限を設定します。サイズを最適化して、有効な応答に十分な大きさになるようにします", + "waf": "コストの最適化" + }, + { + "category": "オペレーションマネジメント", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "id": "AOAI.67", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "AI検索の信頼性", + "text": "信頼性のための AI 検索の設定に関するガイダンスを確認します", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "id": "AOAI.68", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "AI 検索ベクトルの制限", + "text": "AI Search Vector ストレージの計画と管理", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "id": "AOAI.69", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "DevOpsの", + "text": "LLMOpsプラクティスを適用して、GenAIアプリケーションのライフサイクル管理を自動化します", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "コストの最適化", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "id": "AOAI.7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "原価計算モデル", + "text": "請求モデルの使用状況の評価 - PAYG と PTU の比較", + "waf": "コストの最適化" + }, + { + "category": "オペレーションマネジメント", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "id": "AOAI.70", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "DevOpsの", + "text": "モデルバージョンを切り替える際のプロンプトとアプリケーションの品質を評価する", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "id": "AOAI.71", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "発達", + "text": "GenAIアプリを評価、監視、改良して、接地性、関連性、精度、一貫性、流暢さなどの機能を確認します。", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "id": "AOAI.72", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "発達", + "text": "さまざまな検索パラメーターに基づいて Azure AI Search の結果を評価する", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "id": "AOAI.73", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "発達", + "text": "精度を向上させる方法としてモデルの微調整を検討するのは、データを使用してプロンプトエンジニアリングやRAGなどの他の基本的なアプローチを試した場合のみです", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "オペレーションマネジメント", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "id": "AOAI.74", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "発達", + "text": "プロンプトエンジニアリング手法を使用して、LLM応答の精度を向上させる", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "ガバナンスとセキュリティ", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "id": "AOAI.75", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "セキュリティ監査と侵入テスト", + "text": "GenAIアプリケーションをレッドチーム化", + "waf": "安全" + }, + { + "category": "オペレーションマネジメント", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "id": "AOAI.76", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "エンドユーザーのフィードバック", + "text": "エンドユーザーにLLM応答のスコアリングオプションを提供し、これらのスコアを追跡します。", + "waf": "オペレーショナルエクセレンス" + }, + { + "category": "コストの最適化", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "id": "AOAI.8", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "高い", + "subcategory": "クォータ管理", + "text": "クォータ管理の実践を検討する", + "waf": "コストの最適化" + }, + { + "category": "オペレーションマネジメント", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "id": "AOAI.9", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "中程度", + "subcategory": "ロードバランシング", + "text": "APIM ベースのゲートウェイなどのロード バランサー ソリューションを使用して、サービスやリージョン間で負荷と容量を分散します", + "waf": "オペレーショナルエクセレンス" + } + ], + "metadata": { + "name": "Azure OpenAI Review", + "state": "Preview", + "timestamp": "July 23, 2024", + "waf": "all" + }, + "severities": [ + { + "name": "高い" + }, + { + "name": "中程度" + }, + { + "name": "低い" + } + ], + "status": [ + { + "description": "このチェックはまだ見ていません", + "name": "未確認" + }, + { + "description": "このチェックにはアクションアイテムが関連付けられています", + "name": "開ける" + }, + { + "description": "このチェックは検証済みであり、これ以上のアクション アイテムは関連付けられていません", + "name": "達成" + }, + { + "description": "推奨事項は理解されているが、現在の要件では必要ではない", + "name": "必須ではありません" + }, + { + "description": "現在のデザインには適用されません", + "name": "該当なし" + } + ], + "waf": [ + { + "name": "確実" + }, + { + "name": "安全" + }, + { + "name": "費用" + }, + { + "name": "オペレーションズ" + }, + { + "name": "パフォーマンス" + } + ], + "yesno": [ + { + "name": "はい" + }, + { + "name": "いいえ" + } + ] +} \ No newline at end of file diff --git a/checklists/aoai_checklist.ko.json b/checklists/aoai_checklist.ko.json new file mode 100644 index 000000000..f08217a56 --- /dev/null +++ b/checklists/aoai_checklist.ko.json @@ -0,0 +1,920 @@ +{ + "categories": [ + { + "name": "ID 및 액세스 관리" + }, + { + "name": "네트워크 토폴로지 및 연결성" + }, + { + "name": "BC 및 DR" + }, + { + "name": "거버넌스 및 보안" + }, + { + "name": "비용 관리" + }, + { + "name": "운영 관리" + }, + { + "name": "응용 프로그램 배포" + }, + { + "name": "책임감 있는 AI" + } + ], + "items": [ + { + "category": "책임감 있는 AI", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "id": "AOAI.1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "메타프롬프트", + "text": "공명형 AI를 위한 Metaprompting 가드레일 따르기", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "id": "AOAI.10", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "로드 밸런싱", + "text": "더 나은 속도 제한, 부하 분산, 인증 및 로깅을 위해 APIM 또는 AI Central과 같은 솔루션을 사용하여 게이트웨이 패턴을 고려합니다.", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "id": "AOAI.11", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "모니터링", + "text": "AOAI 인스턴스에 대한 모니터링 활성화", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "id": "AOAI.12", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "경고", + "text": "리소스에 대해 수행된 작업(예: 구독 키 다시 생성) 또는 메트릭 임계값(예: 한 시간에 10을 초과하는 오류 수)에 의해 생성된 활동 로그의 항목과 같은 이벤트를 팀에 알리는 경고를 만듭니다", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "id": "AOAI.13", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "모니터링", + "text": "용량으로 인한 서비스 중단을 방지하기 위해 토큰 사용량을 모니터링합니다.", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "id": "AOAI.14", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "관찰 가능성", + "text": "처리된 추론 토큰, 생성된 완료 토큰, 속도 제한 모니터링과 같은 메트릭 관찰", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "id": "AOAI.15", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "낮다", + "subcategory": "관찰 가능성", + "text": "진단이 충분하지 않은 경우 Azure OpenAI 앞에 있는 Azure API Managements와 같은 게이트웨이를 사용하여 허용되는 경우 들어오는 프롬프트와 나가는 응답을 모두 기록하는 것이 좋습니다", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "id": "AOAI.16", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "인프라스트럭처 구축", + "text": "Infrastructure as code를 사용하여 Azure OpenAI Service, 모델 배포 및 모든 관련 리소스를 배포합니다", + "waf": "운영 우수성" + }, + { + "category": "거버넌스 및 보안", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "id": "AOAI.17", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "인증", + "text": "API 키 대신 관리 ID로 Microsoft Entra 인증 사용", + "waf": "안전" + }, + { + "category": "책임감 있는 AI", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "id": "AOAI.18", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "평가", + "text": "입력과 정답이 있는 알려진 골든 데이터 세트를 사용하여 시스템의 성능/정확도를 평가합니다. 평가를 위해 PromptFlow의 기능을 활용합니다.", + "waf": "운영 엑셀런스" + }, + { + "category": "운영 관리", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "id": "AOAI.19", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "호스팅 모델", + "text": "프로비저닝된 처리량 모델의 사용 평가 ", + "waf": "공연" + }, + { + "category": "책임감 있는 AI", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "id": "AOAI.2", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "콘텐츠 안전성", + "text": "Azure AI 콘텐츠 안전성 검토 및 구현", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "id": "AOAI.20", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "처리량 정의", + "text": "분당 토큰 및 응답을 기반으로 시스템의 처리량을 정의 및 평가하고 요구 사항에 맞춥니다.", + "waf": "공연" + }, + { + "category": "운영 관리", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "id": "AOAI.21", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "지연 시간 개선", + "text": "토큰 크기, 스트리밍 옵션을 제한하여 시스템의 대기 시간을 개선합니다.", + "waf": "공연" + }, + { + "category": "운영 관리", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "id": "AOAI.22", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "탄력성 분리", + "text": "탄력성 요구를 예측하여 우선 순위에 따라 동기 및 일괄 처리 요청 분리를 결정합니다. 우선 순위가 높은 경우 동기 접근 방식을 사용하고 낮은 우선 순위의 경우 큐를 사용한 비동기 일괄 처리가 선호됩니다", + "waf": "공연" + }, + { + "category": "운영 관리", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "id": "AOAI.23", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "벤치마킹", + "text": "소비자의 예상 수요를 기반으로 토큰 사용 요구 사항을 벤치마킹합니다. 프로비저닝된 처리량 단위 배포를 사용하는 경우 처리량의 유효성을 검사하는 데 도움이 되도록 Azure OpenAI 벤치마킹 도구를 사용하는 것이 좋습니다", + "waf": "공연" + }, + { + "category": "운영 관리", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "id": "AOAI.24", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "탄력 ", + "text": "PTU(프로비저닝된 처리량 단위)를 사용하는 경우 오버플로 요청에 대한 TPM(분당 토큰) 배포를 배포하는 것이 좋습니다. 게이트웨이를 사용하여 PTU 제한에 도달할 때 TPM 배포로 요청을 라우팅합니다.", + "waf": "공연" + }, + { + "category": "운영 관리", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "id": "AOAI.25", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "모델 선택", + "text": "올바른 작업에 적합한 모델을 선택하십시오. 속도, 응답 품질 및 출력 복잡성 간에 적절한 절충점이 있는 모델 선택", + "waf": "공연" + }, + { + "category": "운영 관리", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "id": "AOAI.26", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "미세 조정", + "text": "미세 조정으로 모델 성능이 향상되었는지 여부를 파악하기 위해 미세 조정 없이 성능에 대한 기준이 있습니다.", + "waf": "공연" + }, + { + "category": "BC 및 DR", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "id": "AOAI.27", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "낮다", + "subcategory": "다중 지역 아키텍처Multi-region architecture", + "text": "여러 지역에 여러 OAI 인스턴스 배포", + "waf": "신뢰도" + }, + { + "category": "BC 및 DR", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "id": "AOAI.28", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "로드 밸런싱", + "text": "APIM과 같은 게이트웨이 패턴을 사용하여 재시도 및 상태 확인 구현Implement retry & healthchecks with gateway pattern like APIM", + "waf": "신뢰도" + }, + { + "category": "BC 및 DR", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "id": "AOAI.29", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "할당량", + "text": "워크로드에 대한 TPM 및 RPM의 적절한 할당량이 있는지 확인합니다.", + "waf": "신뢰도" + }, + { + "category": "책임감 있는 AI", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "id": "AOAI.3", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "UX 모범 사례", + "text": "HAI 도구 키트 지침의 고려 사항을 검토하고 slution에 대한 이러한 상호 작용 방법을 적용합니다", + "waf": "운영 우수성" + }, + { + "category": "BC 및 DR", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "id": "AOAI.30", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "로드 밸런싱", + "text": "미세 조정이 사용되는 경우 지역 간에 별도의 미세 조정된 모델을 배포합니다.", + "waf": "신뢰도" + }, + { + "category": "BC 및 DR", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "id": "AOAI.31", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "데이터 백업 및 재해 복구", + "text": "중요한 데이터를 정기적으로 백업 및 복제하여 데이터 손실 또는 시스템 장애 발생 시 데이터 가용성과 복구 가능성을 보장합니다. Azure의 백업 및 재해 복구 서비스를 활용하여 데이터를 보호하세요.", + "waf": "신뢰도" + }, + { + "category": "BC 및 DR", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "id": "AOAI.32", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "SLA 고려 사항", + "text": "SLA를 갖도록 Azure AI 검색 서비스 계층을 선택해야 합니다. ", + "waf": "신뢰도" + }, + { + "category": "거버넌스 및 보안", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "id": "AOAI.33", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "낮다", + "subcategory": "데이터 민감도", + "text": "임베딩을 생성하기 전에 데이터 및 민감도를 분류하고 Microsoft Purview를 사용하여 레이블을 지정하고 생성된 임베딩을 동일한 민감도 및 분류로 처리해야 합니다", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "id": "AOAI.34", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "저장 데이터 암호화", + "text": "BYOK(옵션)를 사용한 SSE/디스크 암호화로 RAG에 사용되는 데이터 암호화", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "id": "AOAI.35", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "트랜짓 암호화", + "text": "데이터 소스 간 전송 중인 데이터, RAG(Retrieval-Augmented Generation) 및 LLM 통신에 사용되는 AI 검색에 TLS가 적용되는지 확인합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "id": "AOAI.36", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "출입 통제", + "text": "RBAC를 사용하여 Azure OpenAI 서비스에 대한 액세스를 관리합니다. 사용자에게 적절한 권한을 할당하고 사용자의 역할과 책임에 따라 액세스를 제한합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "id": "AOAI.37", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "데이터 마스킹 및 수정", + "text": "데이터 암호화, 마스킹 또는 수정 기술을 구현하여 비프로덕션 환경에서 또는 테스트 또는 문제 해결을 위해 데이터를 공유할 때 민감한 데이터를 숨기거나 난독화된 값으로 대체합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "id": "AOAI.38", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "위협 탐지 및 모니터링", + "text": "Azure Defender를 활용하여 보안 위협을 탐지 및 대응하고 의심스러운 활동 또는 위반을 식별하기 위한 모니터링 및 경고 메커니즘을 설정합니다. 고급 위협 탐지 및 대응을 위해 Azure Sentinel 활용", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "id": "AOAI.39", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "데이터 보유 및 폐기", + "text": "규정 준수 규정을 준수하기 위해 데이터 보존 및 폐기 정책을 수립합니다. 더 이상 필요하지 않은 데이터에 대한 안전한 삭제 방법을 구현하고 데이터 보존 및 폐기 활동에 대한 감사 추적을 유지 관리합니다.", + "waf": "안전" + }, + { + "category": "책임감 있는 AI", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "id": "AOAI.4", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "탈옥 안전", + "text": "Content Safety를 사용하여 Prompt shields 및 groundedness detection 구현 ", + "waf": "운영 우수성" + }, + { + "category": "거버넌스 및 보안", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "id": "AOAI.40", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "데이터 개인 정보 보호 및 규정 준수", + "text": "개인 정보 보호 제어를 구현하고 데이터 처리 활동에 필요한 동의 또는 권한을 얻어 GDPR 또는 HIPAA와 같은 관련 데이터 보호 규정을 준수하도록 합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "id": "AOAI.41", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "직원 인식 제고 및 교육", + "text": "데이터 보안 모범 사례, 데이터 안전한 처리의 중요성, 데이터 침해와 관련된 잠재적 위험에 대해 직원을 교육합니다. 데이터 보안 프로토콜을 성실히 따르도록 권장합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "id": "AOAI.42", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "환경 분리", + "text": "생산 데이터를 개발 및 테스트 데이터와 분리합니다. 프로덕션에서는 실제 민감한 데이터만 사용하고 개발 및 테스트 환경에서는 익명 또는 합성 데이터를 활용합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "id": "AOAI.43", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "인덱스 분리", + "text": "데이터 민감도 수준이 다양하다면 각 수준에 대해 별도의 인덱스를 만드는 것이 좋습니다. 예를 들어, 일반 데이터에 대한 인덱스와 민감한 데이터에 대한 인덱스가 있을 수 있으며, 각각 다른 액세스 프로토콜에 의해 제어됩니다", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "id": "AOAI.44", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "별도의 인스턴스에 있는 민감한 데이터Sensitive Data in separate instances", + "text": "한 단계 더 나아가 중요한 데이터 세트를 서비스의 다른 인스턴스에 배치합니다. 각 인스턴스는 고유한 특정 RBAC 정책 집합으로 제어할 수 있습니다", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "id": "AOAI.45", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "임베딩 및 벡터 처리", + "text": "민감한 정보에서 생성된 임베딩과 벡터는 그 자체로 민감하다는 점을 인식해야 합니다. 이 데이터에는 원본 자료와 동일한 보호 조치가 제공되어야 합니다", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "id": "AOAI.46", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "출입 통제", + "text": "임베딩 및 벡터가 있는 데이터 저장소에 RBAC를 적용하고 역할의 액세스 요구 사항에 따라 액세스 범위를 지정합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "id": "AOAI.47", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "네트워크 보안", + "text": "AI 서비스에 대한 프라이빗 엔드포인트를 구성하여 네트워크 내 서비스 액세스를 제한합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "id": "AOAI.48", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "네트워크 보안", + "text": "Azure Firewall 및 UDR을 사용하여 엄격한 인바운드 및 아웃바운드 트래픽 제어를 적용하고 외부 통합 지점을 제한합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "id": "AOAI.49", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "네트워크 액세스 제어", + "text": "네트워크 세분화 및 액세스 제어를 구현하여 LLM 애플리케이션에 대한 액세스를 인증된 사용자 및 시스템으로만 제한하고 측면 이동을 방지합니다.", + "waf": "안전" + }, + { + "category": "비용 최적화", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "id": "AOAI.5", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "토큰 최적화", + "text": "LLMLingua 또는 gprtrim과 같은 프롬프트 압축 도구 사용", + "waf": "비용 최적화" + }, + { + "category": "거버넌스 및 보안", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "id": "AOAI.50", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "API 및 엔드포인트 보안", + "text": "LLM 애플리케이션에서 사용하는 API 및 엔드포인트가 관리 ID, API 키 또는 OAuth와 같은 인증 및 권한 부여 메커니즘으로 적절하게 보호되어 무단 액세스를 방지해야 합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "id": "AOAI.51", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "강력한 인증 구현", + "text": "다단계 인증(multi-factor authentication)과 같은 강력한 최종 사용자 인증 메커니즘을 적용하여 LLM 애플리케이션 및 관련 네트워크 리소스에 대한 무단 액세스를 방지합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "id": "AOAI.52", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "네트워크 모니터링 사용", + "text": "네트워크 모니터링 도구를 구현하여 의심스럽거나 악의적인 활동에 대한 네트워크 트래픽을 탐지하고 분석합니다. 로깅을 활성화하여 네트워크 이벤트를 캡처하고 보안 사고 발생 시 포렌식 분석을 용이하게 합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "id": "AOAI.53", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "보안 감사 및 침투 테스트", + "text": "보안 감사 및 침투 테스트를 수행하여 LLM 애플리케이션의 네트워크 인프라에서 네트워크 보안 약점 또는 취약성을 식별하고 해결합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "id": "AOAI.54", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "낮다", + "subcategory": "인프라스트럭처 구축", + "text": "Azure AI 서비스는 더 나은 관리를 위해 적절하게 태그가 지정됩니다.", + "waf": "운영 우수성" + }, + { + "category": "거버넌스 및 보안", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "id": "AOAI.55", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "낮다", + "subcategory": "인프라스트럭처 구축", + "text": "Azure AI Service 계정은 조직의 명명 규칙을 따릅니다.", + "waf": "운영 우수성" + }, + { + "category": "거버넌스 및 보안", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "id": "AOAI.56", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "진단 로깅", + "text": "Azure AI Services 리소스의 진단 로그를 사용하도록 설정해야 함", + "waf": "운영 우수성" + }, + { + "category": "ID 및 액세스 관리", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "id": "AOAI.57", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "Entra ID 기반 액세스", + "text": "키 액세스(로컬 인증)는 보안을 위해 사용하지 않도록 설정하는 것이 좋습니다. 키 기반 액세스를 사용하지 않도록 설정하면 Microsoft Entra ID가 유일한 액세스 방법이 되어 최소 권한 원칙과 세분화된 제어를 유지할 수 있습니다. ", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "id": "AOAI.58", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "보안 키 관리", + "text": "Azure Key Vault를 사용하여 키를 안전하게 저장하고 관리하세요. LLM 애플리케이션의 코드 내에 중요한 키를 하드 코딩하거나 포함하지 않도록 하고 관리 ID를 사용하여 Azure Key Vault에서 안전하게 검색합니다.", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "id": "AOAI.59", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "키 순환 및 만료Key Rotation and Expiration", + "text": "Azure Key Vault에 저장된 키를 정기적으로 회전하고 만료하여 무단 액세스의 위험을 최소화합니다.", + "waf": "안전" + }, + { + "category": "비용 최적화", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "id": "AOAI.6", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "토큰 최적화", + "text": "tiktoken을 사용하여 대화 모드에서 토큰 최적화를 위한 토큰 크기 이해", + "waf": "비용 최적화" + }, + { + "category": "거버넌스 및 보안", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "id": "AOAI.60", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "안전한 코딩 연습", + "text": "보안 코딩 관행에 따라 주입 공격, XSS(교차 사이트 스크립팅) 또는 보안 구성 오류와 같은 일반적인 취약성을 방지합니다", + "waf": "안전" + }, + { + "category": "거버넌스 및 보안", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "id": "AOAI.61", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "패치 및 업데이트", + "text": "LLM 라이브러리와 다른 시스템 컴포넌트를 정기적으로 업데이트하고 패치하는 프로세스를 설정합니다.", + "waf": "안전" + }, + { + "category": "책임감 있는 AI", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "id": "AOAI.62", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "지배구조", + "text": "Azure OpenAI 또는 기타 LLM 사용 약관, 정책 및 지침, 허용되는 사용 사례 준수", + "waf": "운영 우수성" + }, + { + "category": "비용 최적화", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "id": "AOAI.63", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "비용 숙지", + "text": "기본 모델과 미세 조정된 모델 및 토큰 단계 크기의 비용 차이를 이해합니다.", + "waf": "비용 최적화" + }, + { + "category": "비용 최적화", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "id": "AOAI.64", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "배치 처리", + "text": "가능한 경우 호출당 오버헤드를 최소화하여 전체 비용을 줄일 수 있는 일괄 처리 요청. 배치 크기를 최적화해야 합니다.", + "waf": "비용 최적화" + }, + { + "category": "비용 최적화", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "id": "AOAI.65", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "비용 모니터링", + "text": "모델 사용을 모니터링하는 비용 추적 시스템을 설정하고 해당 정보를 사용하여 모델 선택 및 프롬프트 크기를 알립니다", + "waf": "비용 최적화" + }, + { + "category": "비용 최적화", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "id": "AOAI.66", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "토큰 한도", + "text": "모델 응답당 토큰 수에 대한 최대 제한을 설정합니다. 유효한 응답에 사용할 수 있을 만큼 충분히 큰지 확인하기 위해 크기를 최적화합니다", + "waf": "비용 최적화" + }, + { + "category": "운영 관리", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "id": "AOAI.67", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "AI 검색 신뢰성", + "text": "안정성을 위한 AI 검색 설정에 대해 제공된 지침을 검토합니다.", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "id": "AOAI.68", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "AI 검색 벡터 한계", + "text": "AI Search Vector 스토리지 계획 및 관리", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "id": "AOAI.69", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "데브옵스", + "text": "LLMOps 사례를 적용하여 GenAI 애플리케이션의 라이프사이클 관리를 자동화합니다.", + "waf": "운영 우수성" + }, + { + "category": "비용 최적화", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "id": "AOAI.7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "원가 계산 모델", + "text": "청구 모델 사용 평가 - PAYG 대 PTU", + "waf": "비용 최적화" + }, + { + "category": "운영 관리", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "id": "AOAI.70", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "데브옵스", + "text": "모델 버전 간에 전환할 때 프롬프트와 응용 프로그램의 품질을 평가합니다.", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "id": "AOAI.71", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "발달", + "text": "GenAI 앱을 평가, 모니터링 및 개선하여 근거, 관련성, 정확성, 일관성, 유창성 등의 기능을 제공합니다.", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "id": "AOAI.72", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "발달", + "text": "다양한 검색 매개 변수를 기반으로 Azure AI Search 결과를 평가합니다", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "id": "AOAI.73", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "발달", + "text": "데이터를 사용하여 프롬프트 엔지니어링 및 RAG와 같은 다른 기본 접근 방식을 시도한 경우에만 모델을 미세 조정하여 정확도를 높이는 방법으로 살펴보십시오", + "waf": "운영 우수성" + }, + { + "category": "운영 관리", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "id": "AOAI.74", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "발달", + "text": "프롬프트 엔지니어링 기법을 사용하여 LLM 응답의 정확도 향상", + "waf": "운영 우수성" + }, + { + "category": "거버넌스 및 보안", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "id": "AOAI.75", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "보안 감사 및 침투 테스트", + "text": "GenAI 애플리케이션을 위한 레드 팀", + "waf": "안전" + }, + { + "category": "운영 관리", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "id": "AOAI.76", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "최종 사용자 피드백", + "text": "최종 사용자에게 LLM 응답에 대한 점수 매기기 옵션을 제공하고 이러한 점수를 추적합니다. ", + "waf": "운영 우수성" + }, + { + "category": "비용 최적화", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "id": "AOAI.8", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "높다", + "subcategory": "할당량 관리", + "text": "할당량 관리 방법 고려", + "waf": "비용 최적화" + }, + { + "category": "운영 관리", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "id": "AOAI.9", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "보통", + "subcategory": "로드 밸런싱", + "text": "APIM 기반 게이트웨이와 같은 Load Balancer 솔루션을 사용하여 서비스 및 지역 간에 부하와 용량을 분산합니다", + "waf": "운영 우수성" + } + ], + "metadata": { + "name": "Azure OpenAI Review", + "state": "Preview", + "timestamp": "July 23, 2024", + "waf": "all" + }, + "severities": [ + { + "name": "높다" + }, + { + "name": "보통" + }, + { + "name": "낮다" + } + ], + "status": [ + { + "description": "이 검사는 아직 검토되지 않았습니다", + "name": "확인되지 않음" + }, + { + "description": "이 검사와 연관된 작업 항목이 있습니다", + "name": "열다" + }, + { + "description": "이 검사는 확인되었으며 이와 관련된 추가 작업 항목이 없습니다", + "name": "성취" + }, + { + "description": "권장 사항을 이해하지만 현재 요구 사항에 필요하지 않음", + "name": "필요 없음" + }, + { + "description": "현재 설계에는 적용되지 않습니다.", + "name": "해당 없음" + } + ], + "waf": [ + { + "name": "신뢰도" + }, + { + "name": "안전" + }, + { + "name": "비용" + }, + { + "name": "작업" + }, + { + "name": "공연" + } + ], + "yesno": [ + { + "name": "예" + }, + { + "name": "아니요" + } + ] +} \ No newline at end of file diff --git a/checklists/aoai_checklist.pt.json b/checklists/aoai_checklist.pt.json new file mode 100644 index 000000000..28b299c53 --- /dev/null +++ b/checklists/aoai_checklist.pt.json @@ -0,0 +1,920 @@ +{ + "categories": [ + { + "name": "Gerenciamento de identidade e acesso" + }, + { + "name": "Topologia e conectividade de rede" + }, + { + "name": "BC e DR" + }, + { + "name": "Governança e segurança" + }, + { + "name": "Governança de custos" + }, + { + "name": "Gestão de Operações" + }, + { + "name": "Implantação de aplicativos" + }, + { + "name": "IA responsável" + } + ], + "items": [ + { + "category": "IA responsável", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "id": "AOAI.1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Metaprompting", + "text": "Siga as proteções do Metaprompting para uma IA razoável", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "id": "AOAI.10", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Balanceamento de carga", + "text": "Considere padrões de gateway com APIM ou soluções como AI central para melhor limitação de taxa, balanceamento de carga, autenticação e registro", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "id": "AOAI.11", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Monitorização", + "text": "Habilitar o monitoramento para suas instâncias AOAI", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "id": "AOAI.12", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Alertas", + "text": "Crie alertas para notificar as equipes sobre eventos, como uma entrada no log de atividades criada por uma ação executada no recurso, como regenerar suas chaves de assinatura ou um limite de métrica, como o número de erros que excedem 10 em uma hora", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "id": "AOAI.13", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Monitorização", + "text": "Monitore o uso do token para evitar interrupções de serviço devido à capacidade", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "id": "AOAI.14", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Observabilidade", + "text": "Observe métricas como tokens de inferência processados, monitoramento de tokens de conclusão gerados para limite de taxa", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "id": "AOAI.15", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "Baixo", + "subcategory": "Observabilidade", + "text": "Se o diagnóstico não for suficiente para você, considere usar um gateway como o Gerenciamento de API do Azure na frente do Azure OpenAI para registrar prompts de entrada e respostas de saída, quando permitido", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "id": "AOAI.16", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Implantação de infraestrutura", + "text": "Usar a infraestrutura como código para implantar o serviço OpenAI do Azure, implantações de modelo e todos os recursos relacionados", + "waf": "Excelência Operacional" + }, + { + "category": "Governança e segurança", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "id": "AOAI.17", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Autenticação", + "text": "Usar a autenticação do Microsoft Entra com identidade gerenciada em vez de chave de API", + "waf": "Segurança" + }, + { + "category": "IA responsável", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "id": "AOAI.18", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Avaliação", + "text": "Avalie o desempenho/precisão do sistema com um conjunto de dados dourado conhecido que tenha as entradas e as respostas corretas. Aproveite os recursos do PromptFlow para avaliação.", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "id": "AOAI.19", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Modelo de hospedagem", + "text": "Avaliar o uso do modelo de taxa de transferência provisionada ", + "waf": "Desempenho" + }, + { + "category": "IA responsável", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "id": "AOAI.2", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Segurança de conteúdo", + "text": "Examinar e implementar a segurança de conteúdo do Azure AI", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "id": "AOAI.20", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Definição de taxa de transferência", + "text": "Defina e avalie a taxa de transferência do sistema com base em tokens e resposta por minuto e alinhe-se aos requisitos", + "waf": "Desempenho" + }, + { + "category": "Gestão de Operações", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "id": "AOAI.21", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Melhoria da latência", + "text": "Melhore a latência do sistema limitando os tamanhos dos tokens, as opções de streaming", + "waf": "Desempenho" + }, + { + "category": "Gestão de Operações", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "id": "AOAI.22", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Segregação de elasticidade", + "text": "Estime as demandas de elasticidade para determinar a segregação de solicitações síncronas e em lote com base na prioridade. Para alta prioridade, use a abordagem síncrona e, para baixa prioridade, o processamento em lote assíncrono com fila é preferível", + "waf": "Desempenho" + }, + { + "category": "Gestão de Operações", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "id": "AOAI.23", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Avaliação comparativa", + "text": "Compare os requisitos de consumo de token com base nas demandas estimadas dos consumidores. Considere usar a ferramenta de benchmarking OpenAI do Azure para ajudá-lo a validar a taxa de transferência se você estiver usando implantações de Unidade de Produtividade Provisionada", + "waf": "Desempenho" + }, + { + "category": "Gestão de Operações", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "id": "AOAI.24", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Elasticidade ", + "text": "Se você estiver usando PTUs (Unidades de Produtividade Provisionadas), considere implantar uma implantação de token por minuto (TPM) para solicitações de estouro. Use um gateway para rotear solicitações para a implantação do TPM quando os limites de PTU forem atingidos.", + "waf": "Desempenho" + }, + { + "category": "Gestão de Operações", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "id": "AOAI.25", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Escolha do modelo", + "text": "Escolha o modelo certo para a tarefa certa. Escolha modelos com a compensação certa entre velocidade, qualidade de resposta e complexidade de saída", + "waf": "Desempenho" + }, + { + "category": "Gestão de Operações", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "id": "AOAI.26", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Afinar", + "text": "Tenha uma linha de base para o desempenho sem ajuste fino para saber se o ajuste fino melhorou ou não o desempenho do modelo", + "waf": "Desempenho" + }, + { + "category": "BC e DR", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "id": "AOAI.27", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Baixo", + "subcategory": "Arquitetura multirregional", + "text": "Implantar várias instâncias de OAI em regiões", + "waf": "Fiabilidade" + }, + { + "category": "BC e DR", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "id": "AOAI.28", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Balanceamento de carga", + "text": "Implemente novas tentativas e verificações de integridade com o padrão de Gateway como APIM", + "waf": "Fiabilidade" + }, + { + "category": "BC e DR", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "id": "AOAI.29", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Quotas", + "text": "Garantir que tenha cotas adequadas de TPM e RPM para a carga de trabalho", + "waf": "Fiabilidade" + }, + { + "category": "IA responsável", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "id": "AOAI.3", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Prática recomendada de UX", + "text": "Revise as considerações nas diretrizes do kit de ferramentas HAI e aplique essas práticas de interação para a análise", + "waf": "Excelência Operacional" + }, + { + "category": "BC e DR", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "id": "AOAI.30", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Balanceamento de carga", + "text": "Implantar modelos ajustados separados entre regiões se o ajuste fino for empregado", + "waf": "Fiabilidade" + }, + { + "category": "BC e DR", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "id": "AOAI.31", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Backup de dados e recuperação de desastres", + "text": "Faça backup e replique regularmente dados críticos para garantir a disponibilidade e a capacidade de recuperação dos dados em caso de perda de dados ou falhas do sistema. Aproveite os serviços de backup e recuperação de desastre do Azure para proteger seus dados.", + "waf": "Fiabilidade" + }, + { + "category": "BC e DR", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "id": "AOAI.32", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Considerações sobre SLA", + "text": "As camadas de serviço de pesquisa de IA do Azure devem ser escolhidas para ter um SLA ", + "waf": "Fiabilidade" + }, + { + "category": "Governança e segurança", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "id": "AOAI.33", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "Baixo", + "subcategory": "Sensibilidade de dados", + "text": "Classifique os dados e a confidencialidade, rotulando com o Microsoft Purview antes de gerar as inserções e certifique-se de tratar as inserções geradas com a mesma confidencialidade e classificação", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "id": "AOAI.34", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Criptografia em repouso", + "text": "Criptografar dados usados para RAG com criptografia SSE/Disco com BYOK opcional", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "id": "AOAI.35", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Criptografia de trânsito", + "text": "Certifique-se de que o TLS seja aplicado para dados em trânsito entre fontes de dados, pesquisa de IA usada para RG (Geração Aumentada por Recuperação) e comunicação LLM", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "id": "AOAI.36", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Controle de acesso", + "text": "Use o RBAC para gerenciar o acesso aos serviços do OpenAI do Azure. Atribua permissões apropriadas aos usuários e restrinja o acesso com base em suas funções e responsabilidades", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "id": "AOAI.37", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Mascaramento e redação de dados", + "text": "Implemente técnicas de criptografia, mascaramento ou redação de dados para ocultar dados confidenciais ou substituí-los por valores ofuscados em ambientes de não produção ou ao compartilhar dados para fins de teste ou solução de problemas", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "id": "AOAI.38", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Detecção e monitoramento de ameaças", + "text": "Utilize o Azure Defender para detectar e responder a ameaças de segurança e configurar mecanismos de monitoramento e alerta para identificar atividades suspeitas ou violações. Aproveite o Azure Sentinel para detecção e resposta avançadas a ameaças", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "id": "AOAI.39", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Retenção e descarte de dados", + "text": "Estabeleça políticas de retenção e descarte de dados para cumprir os regulamentos de conformidade. Implemente métodos de exclusão segura para dados que não são mais necessários e mantenha uma trilha de auditoria das atividades de retenção e descarte de dados", + "waf": "Segurança" + }, + { + "category": "IA responsável", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "id": "AOAI.4", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Segurança de fuga da prisão", + "text": "Implementar proteções imediatas e detecção de aterramento usando a Segurança de conteúdo ", + "waf": "Excelência Operacional" + }, + { + "category": "Governança e segurança", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "id": "AOAI.40", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Privacidade e conformidade de dados", + "text": "Garanta a conformidade com os regulamentos de proteção de dados relevantes, como GDPR ou HIPAA, implementando controles de privacidade e obtendo os consentimentos ou permissões necessários para atividades de processamento de dados.", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "id": "AOAI.41", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Conscientização e treinamento de funcionários", + "text": "Eduque seus funcionários sobre as melhores práticas de segurança de dados, a importância de lidar com dados com segurança e os possíveis riscos associados a violações de dados. Incentive-os a seguir os protocolos de segurança de dados diligentemente.", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "id": "AOAI.42", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Segregação ambiental", + "text": "Mantenha os dados de produção separados dos dados de desenvolvimento e teste. Use apenas dados confidenciais reais na produção e utilize dados anônimos ou sintéticos em ambientes de desenvolvimento e teste.", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "id": "AOAI.43", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Segregação de índice", + "text": "Se você tiver níveis variados de confidencialidade de dados, considere criar índices separados para cada nível. Por exemplo, você pode ter um índice para dados gerais e outro para dados confidenciais, cada um regido por diferentes protocolos de acesso", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "id": "AOAI.44", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Dados confidenciais em instâncias separadas", + "text": "Leve a segregação um passo adiante, colocando conjuntos de dados confidenciais em diferentes instâncias do serviço. Cada instância pode ser controlada com seu próprio conjunto específico de políticas RBAC", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "id": "AOAI.45", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Incorporação e manipulação de vetores", + "text": "Reconheça que incorporações e vetores gerados a partir de informações confidenciais são eles próprios sensíveis. Esses dados devem receber as mesmas medidas de proteção que o material de origem", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "id": "AOAI.46", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Controle de acesso", + "text": "Aplique o RBAC aos armazenamentos de dados com incorporações e vetores e acesso ao escopo com base nos requisitos de acesso da função", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "id": "AOAI.47", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Segurança de rede", + "text": "Configurar o ponto de extremidade privado para serviços de IA para restringir o acesso ao serviço em sua rede", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "id": "AOAI.48", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Segurança de rede", + "text": "Imponha um controle estrito de tráfego de entrada e saída com o Firewall do Azure e UDRs e limite os pontos de integração externos", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "id": "AOAI.49", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Controle o acesso à rede", + "text": "Implemente segmentação de rede e controles de acesso para restringir o acesso ao aplicativo LLM apenas a usuários e sistemas autorizados e evitar movimentos laterais", + "waf": "Segurança" + }, + { + "category": "Otimização de custos", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "id": "AOAI.5", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Otimização de token", + "text": "Use ferramentas de compactação imediatas como LLMLingua ou gprtrim", + "waf": "Otimização de custos" + }, + { + "category": "Governança e segurança", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "id": "AOAI.50", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "APIs e endpoints seguros", + "text": "Certifique-se de que as APIs e os endpoints usados pelo aplicativo LLM estejam devidamente protegidos com mecanismos de autenticação e autorização, como identidades gerenciadas, chaves de API ou OAuth, para impedir o acesso não autorizado.", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "id": "AOAI.51", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Implementar autenticação forte", + "text": "Aplique mecanismos fortes de autenticação do usuário final, como autenticação multifator, para impedir o acesso não autorizado ao aplicativo LLM e aos recursos de rede associados", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "id": "AOAI.52", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Usar o monitoramento de rede", + "text": "Implemente ferramentas de monitoramento de rede para detectar e analisar o tráfego de rede em busca de atividades suspeitas ou maliciosas. Habilite o registro para capturar eventos de rede e facilitar a análise forense em caso de incidentes de segurança", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "id": "AOAI.53", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Auditorias de segurança e testes de penetração", + "text": "Realize auditorias de segurança e testes de penetração para identificar e resolver quaisquer pontos fracos ou vulnerabilidades de segurança de rede na infraestrutura de rede do aplicativo LLM", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "id": "AOAI.54", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "Baixo", + "subcategory": "Implantação de infraestrutura", + "text": "Os Serviços de IA do Azure são marcados corretamente para melhor gerenciamento", + "waf": "Excelência Operacional" + }, + { + "category": "Governança e segurança", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "id": "AOAI.55", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "Baixo", + "subcategory": "Implantação de infraestrutura", + "text": "As contas do Serviço de IA do Azure seguem as convenções de nomenclatura organizacional", + "waf": "Excelência Operacional" + }, + { + "category": "Governança e segurança", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "id": "AOAI.56", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Log de diagnóstico", + "text": "Os logs de diagnóstico nos recursos de serviços de IA do Azure devem ser habilitados", + "waf": "Excelência Operacional" + }, + { + "category": "Gerenciamento de identidade e acesso", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "id": "AOAI.57", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Acesso baseado em ID de entrada", + "text": "Recomenda-se que o acesso à chave (autenticação local) seja desabilitado por segurança. Depois de desabilitar o acesso baseado em chave, o Microsoft Entra ID se torna o único método de acesso, o que permite manter o princípio de privilégio mínimo e o controle granular. ", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "id": "AOAI.58", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Gerenciamento seguro de chaves", + "text": "Armazene e gerencie chaves com segurança usando o Azure Key Vault. Evite codificar ou inserir chaves confidenciais no código do aplicativo LLM e recuperá-las com segurança do Azure Key Vault usando identidades gerenciadas", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "id": "AOAI.59", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Rotação e expiração de chaves", + "text": "Gire e expire regularmente as chaves armazenadas no Azure Key Vault para minimizar o risco de acesso não autorizado.", + "waf": "Segurança" + }, + { + "category": "Otimização de custos", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "id": "AOAI.6", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Otimização de token", + "text": "Use tiktoken para entender os tamanhos de token para otimizações de token no modo de conversação", + "waf": "Otimização de custos" + }, + { + "category": "Governança e segurança", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "id": "AOAI.60", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Prática de codificação segura", + "text": "Siga práticas de codificação segura para evitar vulnerabilidades comuns, como ataques de injeção, cross-site scripting (XSS) ou configurações incorretas de segurança", + "waf": "Segurança" + }, + { + "category": "Governança e segurança", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "id": "AOAI.61", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Patches e atualizações", + "text": "Configure um processo para atualizar e corrigir regularmente as bibliotecas LLM e outros componentes do sistema", + "waf": "Segurança" + }, + { + "category": "IA responsável", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "id": "AOAI.62", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Governança", + "text": "Aderir aos termos de uso, políticas e diretrizes do Azure OpenAI ou de outros LLMs e casos de uso permitidos", + "waf": "Excelência Operacional" + }, + { + "category": "Otimização de custos", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "id": "AOAI.63", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Familiarização com custos", + "text": "Entender a diferença no custo de modelos básicos e modelos ajustados e tamanhos de etapa de token", + "waf": "Otimização de custos" + }, + { + "category": "Otimização de custos", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "id": "AOAI.64", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Processamento em lote", + "text": "Solicitações em lote, sempre que possível, para minimizar a sobrecarga por chamada, o que pode reduzir os custos gerais. Certifique-se de otimizar o tamanho do lote", + "waf": "Otimização de custos" + }, + { + "category": "Otimização de custos", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "id": "AOAI.65", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Monitoramento de custos", + "text": "Configure um sistema de rastreamento de custos que monitore o uso do modelo e use essas informações para ajudar a informar as escolhas do modelo e solicitar tamanhos", + "waf": "Otimização de custos" + }, + { + "category": "Otimização de custos", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "id": "AOAI.66", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Limite de token", + "text": "Defina um limite máximo para o número de tokens por resposta do modelo. Otimize o tamanho para garantir que seja grande o suficiente para uma resposta válida", + "waf": "Otimização de custos" + }, + { + "category": "Gestão de Operações", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "id": "AOAI.67", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Confiabilidade da pesquisa de IA", + "text": "Examine as diretrizes fornecidas sobre como configurar a pesquisa de IA para confiabilidade", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "id": "AOAI.68", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Limites de vetor de pesquisa de IA", + "text": "Planejar e gerenciar o armazenamento de vetores do AI Search", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "id": "AOAI.69", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "DevOps", + "text": "Aplique as práticas do LLMOps para automatizar o gerenciamento do ciclo de vida de seus aplicativos GenAI", + "waf": "Excelência Operacional" + }, + { + "category": "Otimização de custos", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "id": "AOAI.7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Modelo de Custeio", + "text": "Avalie o uso de modelos de faturamento - PAYG vs PTU", + "waf": "Otimização de custos" + }, + { + "category": "Gestão de Operações", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "id": "AOAI.70", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "DevOps", + "text": "Avaliar a qualidade de prompts e aplicativos ao alternar entre versões de modelo", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "id": "AOAI.71", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Desenvolvimento", + "text": "Avalie, monitore e refine seus aplicativos GenAI para recursos como fundamentação, relevância, precisão, coerência, fluência,", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "id": "AOAI.72", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Desenvolvimento", + "text": "Avaliar os resultados do Azure AI Search com base em diferentes parâmetros de pesquisa", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "id": "AOAI.73", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Desenvolvimento", + "text": "Olhe para os modelos de ajuste fino como forma de aumentar a precisão somente quando você tiver tentado outras abordagens básicas, como engenharia rápida e RAG com seus dados", + "waf": "Excelência Operacional" + }, + { + "category": "Gestão de Operações", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "id": "AOAI.74", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Desenvolvimento", + "text": "Use técnicas de engenharia rápida para melhorar a precisão das respostas do LLM", + "waf": "Excelência Operacional" + }, + { + "category": "Governança e segurança", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "id": "AOAI.75", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Auditorias de segurança e testes de penetração", + "text": "Equipe vermelha de seus aplicativos GenAI", + "waf": "Segurança" + }, + { + "category": "Gestão de Operações", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "id": "AOAI.76", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Feedback do usuário final", + "text": "Forneça aos usuários finais opções de pontuação para respostas LLM e acompanhe essas pontuações. ", + "waf": "Excelência Operacional" + }, + { + "category": "Otimização de custos", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "id": "AOAI.8", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Alto", + "subcategory": "Gerenciamento de cotas", + "text": "Considere as práticas de gerenciamento de cotas", + "waf": "Otimização de custos" + }, + { + "category": "Gestão de Operações", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "id": "AOAI.9", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "Média", + "subcategory": "Balanceamento de carga", + "text": "Use soluções de balanceador de carga, como gateway baseado em APIM, para balancear carga e capacidade entre serviços e regiões", + "waf": "Excelência Operacional" + } + ], + "metadata": { + "name": "Azure OpenAI Review", + "state": "Preview", + "timestamp": "July 23, 2024", + "waf": "all" + }, + "severities": [ + { + "name": "Alto" + }, + { + "name": "Média" + }, + { + "name": "Baixo" + } + ], + "status": [ + { + "description": "Esta verificação ainda não foi analisada", + "name": "Não verificado" + }, + { + "description": "Há um item de ação associado a essa verificação", + "name": "Abrir" + }, + { + "description": "Essa verificação foi verificada e não há mais itens de ação associados a ela", + "name": "Cumprido" + }, + { + "description": "Recomendação compreendida, mas não necessária pelos requisitos atuais", + "name": "Não é necessário" + }, + { + "description": "Não aplicável para o projeto atual", + "name": "N/A" + } + ], + "waf": [ + { + "name": "Fiabilidade" + }, + { + "name": "Segurança" + }, + { + "name": "Custar" + }, + { + "name": "Operações" + }, + { + "name": "Desempenho" + } + ], + "yesno": [ + { + "name": "Sim" + }, + { + "name": "Não" + } + ] +} \ No newline at end of file diff --git a/checklists/aoai_checklist.zh-Hant.json b/checklists/aoai_checklist.zh-Hant.json new file mode 100644 index 000000000..76c04c87f --- /dev/null +++ b/checklists/aoai_checklist.zh-Hant.json @@ -0,0 +1,920 @@ +{ + "categories": [ + { + "name": "身份和訪問管理" + }, + { + "name": "網路拓撲和連接" + }, + { + "name": "BC 和DR" + }, + { + "name": "治理與安全" + }, + { + "name": "成本治理" + }, + { + "name": "運營管理" + }, + { + "name": "應用程式部署" + }, + { + "name": "負責任的 AI" + } + ], + "items": [ + { + "category": "負責任的 AI", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "id": "AOAI.1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "元提示", + "text": "遵循 Metaprompting 護欄,實現 realible AI", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "id": "AOAI.10", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "負載均衡", + "text": "考慮使用APIM或 AI central 等解決方案的閘道模式,以實現更好的速率限制、負載均衡、身份驗證和日誌記錄", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "id": "AOAI.11", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "監測", + "text": "為您的 AOAI 實例啟用監控", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "id": "AOAI.12", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "警報", + "text": "建立警報以通知團隊有關事件的通知,例如由對資源執行的操作(例如重新生成其訂閱金閜)創建的活動日誌中的條目或指標閾值(例如一小時內超過 10 的錯誤數)", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "id": "AOAI.13", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "監測", + "text": "監控令牌使用方式,防止由於容量導致服務中斷", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "id": "AOAI.14", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "可觀察性", + "text": "觀察已處理的推理令牌、生成的完成令牌等指標,監視速率限制", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "id": "AOAI.15", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "低", + "subcategory": "可觀察性", + "text": "如果診斷對你來說還不夠,請考慮在 Azure OpenAI 前面使用閘道(例如 Azure API 管理)來記錄傳入提示和傳出回應(如果允許)", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "id": "AOAI.16", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "基礎設施部署", + "text": "使用基礎結構即代碼部署 Azure OpenAI 服務、模型部署和所有相關資源", + "waf": "卓越運營" + }, + { + "category": "治理與安全", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "id": "AOAI.17", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "認證", + "text": "將 Microsoft Entra 身份驗證與託管標識(而不是 API 金鑰)配合使用", + "waf": "安全" + }, + { + "category": "負責任的 AI", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "id": "AOAI.18", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "評估", + "text": "使用已知的黃金數據集評估系統的性能/準確性,該數據集具有輸入和正確答案。利用 PromptFlow 中的功能進行評估。", + "waf": "卓越的運營執行力" + }, + { + "category": "運營管理", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "id": "AOAI.19", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "託管模型", + "text": "評估預配輸送量模型的使用方式", + "waf": "性能" + }, + { + "category": "負責任的 AI", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "id": "AOAI.2", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "內容安全", + "text": "查看和實施 Azure AI 內容安全性", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "id": "AOAI.20", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "輸送量定義", + "text": "根據令牌數和每分鐘的回應來定義和評估系統的輸送量,並符合要求", + "waf": "性能" + }, + { + "category": "運營管理", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "id": "AOAI.21", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "延遲改善", + "text": "通過限制令牌大小、流式處理選項來改善系統的延遲", + "waf": "性能" + }, + { + "category": "運營管理", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "id": "AOAI.22", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "彈性分離", + "text": "估計彈性需求,以根據優先順序確定同步和批量請求分離。對於高優先順序,使用同步方法,對於低優先順序,首選使用佇列的異步批處理", + "waf": "性能" + }, + { + "category": "運營管理", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "id": "AOAI.23", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "標杆", + "text": "根據消費者的估計需求對代幣消費要求進行基準測試。如果使用的是預設輸送量單元部署,請考慮使用 Azure OpenAI 基準測試工具來幫助驗證輸送量", + "waf": "性能" + }, + { + "category": "運營管理", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "id": "AOAI.24", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "彈性", + "text": "如果您使用的是預設輸送量單位 (PTU),請考慮為溢出請求部署每分鐘令牌 (TPM) 部署。當達到 PTU 限制時,使用閘道將請求路由到 TPM 部署。", + "waf": "性能" + }, + { + "category": "運營管理", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "id": "AOAI.25", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "型號選擇", + "text": "為正確的任務選擇正確的模型。選擇在速度、回應質量和輸出複雜性之間做出正確權衡的模型", + "waf": "性能" + }, + { + "category": "運營管理", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "id": "AOAI.26", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "微調", + "text": "有一個性能基線,而不進行微調,以瞭解微調是否提高了模型性能", + "waf": "性能" + }, + { + "category": "BC 和DR", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "id": "AOAI.27", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "低", + "subcategory": "多區域架構", + "text": "跨區域部署多個 OAI 實例", + "waf": "可靠性" + }, + { + "category": "BC 和DR", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "id": "AOAI.28", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "負載均衡", + "text": "使用閘道模式(如 APIM)實現重試和運行狀況檢查", + "waf": "可靠性" + }, + { + "category": "BC 和DR", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "id": "AOAI.29", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "配額", + "text": "確保為工作負載提供足夠的 TPM 和 RPM 配額", + "waf": "可靠性" + }, + { + "category": "負責任的 AI", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "id": "AOAI.3", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "UX 最佳實踐", + "text": "查看 HAI 工具包指南中的注意事項,並將這些交互實踐應用於 slution", + "waf": "卓越運營" + }, + { + "category": "BC 和DR", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "id": "AOAI.30", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "負載均衡", + "text": "如果採用微調,則跨區域部署單獨的微調模型", + "waf": "可靠性" + }, + { + "category": "BC 和DR", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "id": "AOAI.31", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "數據備份和災難恢復", + "text": "定期備份和複製關鍵數據,以確保數據丟失或系統故障時的數據可用性和可恢復性。利用 Azure 的備份和災難恢復服務來保護數據。", + "waf": "可靠性" + }, + { + "category": "BC 和DR", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "id": "AOAI.32", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "SLA 注意事項", + "text": "應選擇 Azure AI 搜索服務層級以具有 SLA", + "waf": "可靠性" + }, + { + "category": "治理與安全", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "id": "AOAI.33", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "低", + "subcategory": "數據敏感度", + "text": "對數據和敏感度進行分類,在生成嵌入之前使用 Microsoft Purview 進行標記,並確保以相同的敏感度和分類處理生成的嵌入", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "id": "AOAI.34", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "靜態加密", + "text": "使用 SSE/磁碟加密和可選的 BYOK 加密來加密用於 RAG 的數據", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "id": "AOAI.35", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "傳輸加密", + "text": "確保對跨數據源傳輸的數據實施 TLS,用於檢索增強生成 (RAG) 和 LLM 通信的 AI 搜索", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "id": "AOAI.36", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "存取控制", + "text": "使用 RBAC 管理對 Azure OpenAI 服務的訪問。為使用者分配適當的許可權,並根據其角色和職責限制訪問許可權", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "id": "AOAI.37", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "數據遮罩和編輯", + "text": "實施數據加密、遮罩或編輯技術,以在非生產環境中或出於測試或故障排除目的共用數據時隱藏敏感數據或將其替換為混淆值", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "id": "AOAI.38", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "威脅檢測和監控", + "text": "利用 Azure Defender 來檢測和回應安全威脅,並設置監視和警報機制來識別可疑活動或違規行為。利用 Azure Sentinel 進行高級威脅檢測和回應", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "id": "AOAI.39", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "數據保留和處置", + "text": "制定數據保留和處置策略,以遵守合規性法規。對不再需要的數據實施安全刪除方法,並維護數據保留和處置活動的審計跟蹤", + "waf": "安全" + }, + { + "category": "負責任的 AI", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "id": "AOAI.4", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "越獄安全", + "text": "使用 Content Safety 實施 Prompt shields 和接地檢測", + "waf": "卓越運營" + }, + { + "category": "治理與安全", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "id": "AOAI.40", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "數據隱私與合規", + "text": "通過實施隱私控制並獲得數據處理活動所需的同意或許可,確保遵守相關的數據保護法規,例如GDPR或HIPAA。", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "id": "AOAI.41", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "員工意識和培訓", + "text": "對員工進行有關數據安全最佳實踐、安全處理數據的重要性以及與數據洩露相關的潛在風險的教育。鼓勵他們勤奮地遵循數據安全協定。", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "id": "AOAI.42", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "環境隔離", + "text": "將生產數據與開發和測試數據分開。僅在生產中使用真實的敏感數據,並在開發和測試環境中使用匿名或合成數據。", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "id": "AOAI.43", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "索引分離", + "text": "如果您具有不同級別的數據敏感度,請考慮為每個級別創建單獨的索引。例如,您可以有一個用於常規數據的索引,另一個用於敏感數據的索引,每個索引都由不同的訪問協定管理", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "id": "AOAI.44", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "不同實例中的敏感數據", + "text": "通過將敏感數據集放置在服務的不同實例中,進一步實現隔離。每個實例都可以使用其自己的特定 RBAC 策略集進行控制", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "id": "AOAI.45", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "嵌入和向量處理", + "text": "認識到從敏感資訊生成的嵌入和向量本身就是敏感的。這些數據應得到與源材料相同的保護措施", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "id": "AOAI.46", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "存取控制", + "text": "將 RBAC 應用於具有嵌入和向量的數據存儲,並根據角色的訪問要求確定存取範圍", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "id": "AOAI.47", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "網路安全", + "text": "為 AI 服務配置專用終結點,以限制網路內的服務訪問", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "id": "AOAI.48", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "網路安全", + "text": "使用 Azure 防火牆和 UDR 強制實施嚴格的入站和出站流量控制,並限制外部集成點", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "id": "AOAI.49", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "控制網路訪問", + "text": "實施網路分段和訪問控制,將 LLM 應用程式的存取限製為僅授權使用者和系統,並防止橫向行動", + "waf": "安全" + }, + { + "category": "成本優化", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "id": "AOAI.5", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "代幣優化", + "text": "使用提示壓縮工具,如 LLMLingua 或 gprtrim", + "waf": "成本優化" + }, + { + "category": "治理與安全", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "id": "AOAI.50", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "保護 API 和端點", + "text": "確保 LLM 應用程式使用的 API 和端點使用身份驗證和授權機制(例如託管標識、API 金鑰或 OAuth)得到適當保護,以防止未經授權的訪問。", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "id": "AOAI.51", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "實施強身份驗證", + "text": "實施強大的最終使用者身份驗證機制,例如多因素身份驗證,以防止對 LLM 應用程式和相關網路資源的未經授權的訪問", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "id": "AOAI.52", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "使用網路監控", + "text": "實施網路監控工具,以檢測和分析網路流量中的任何可疑或惡意活動。啟用日誌記錄以捕獲網路事件,並在發生安全事件時促進取證分析", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "id": "AOAI.53", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "安全審計和滲透測試", + "text": "進行安全審計和滲透測試,以識別和解決LLM應用程式的網路基礎設施中的任何網路安全弱點或漏洞", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "id": "AOAI.54", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "低", + "subcategory": "基礎設施部署", + "text": "Azure AI 服務已正確標記,以便更好地管理", + "waf": "卓越運營" + }, + { + "category": "治理與安全", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "id": "AOAI.55", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "低", + "subcategory": "基礎設施部署", + "text": "Azure AI 服務帳戶遵循組織命名約定", + "waf": "卓越運營" + }, + { + "category": "治理與安全", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "id": "AOAI.56", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "診斷記錄", + "text": "應啟用 Azure AI 服務資源中的診斷日誌", + "waf": "卓越運營" + }, + { + "category": "身份和訪問管理", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "id": "AOAI.57", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "基於 Entra ID 的訪問", + "text": "為了安全起見,建議禁用密鑰訪問(本地身份驗證)。 禁用基於密鑰的訪問后,Microsoft Entra ID 將成為唯一的訪問方法,該方法允許保持最小許可權原則和精細控制。", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "id": "AOAI.58", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "安全金鑰管理", + "text": "使用 Azure Key Vault 安全地存儲和管理密鑰。避免在 LLM 應用程式的代碼中硬編碼或嵌入敏感密鑰,並使用託管標識從 Azure Key Vault 中安全地檢索它們", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "id": "AOAI.59", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "密鑰輪換和過期", + "text": "定期輪換和過期存儲在 Azure Key Vault 中的密鑰,以最大程度地降低未經授權訪問的風險。", + "waf": "安全" + }, + { + "category": "成本優化", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "id": "AOAI.6", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "代幣優化", + "text": "使用 tiktoken 了解對話模式下令牌優化的令牌大小", + "waf": "成本優化" + }, + { + "category": "治理與安全", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "id": "AOAI.60", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "安全編碼實踐", + "text": "遵循安全編碼做法,以防止常見漏洞,例如注入攻擊、跨網站腳本 (XSS) 或安全配置錯誤", + "waf": "安全" + }, + { + "category": "治理與安全", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "id": "AOAI.61", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "修補和更新", + "text": "設置一個流程來定期更新和修補 LLM 庫和其他系統元件", + "waf": "安全" + }, + { + "category": "負責任的 AI", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "id": "AOAI.62", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "統轄", + "text": "遵守 Azure OpenAI 或其他 LLM 的使用條款、策略和指南以及允許的用例", + "waf": "卓越運營" + }, + { + "category": "成本優化", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "id": "AOAI.63", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "熟悉成本", + "text": "了解基礎模型和微調模型的成本差異以及令牌步長", + "waf": "成本優化" + }, + { + "category": "成本優化", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "id": "AOAI.64", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "批處理", + "text": "在可能的情況下,批量請求,以最大程度地減少每次調用的開銷,從而降低總體成本。確保優化批量大小", + "waf": "成本優化" + }, + { + "category": "成本優化", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "id": "AOAI.65", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "成本監控", + "text": "設置成本跟蹤系統,用於監視模型使用方式,並使用該資訊來説明通知模型選擇和提示大小", + "waf": "成本優化" + }, + { + "category": "成本優化", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "id": "AOAI.66", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "令牌限制", + "text": "為每個模型回應的令牌數設置最大限制。優化大小以確保其足夠大以實現有效的回應", + "waf": "成本優化" + }, + { + "category": "運營管理", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "id": "AOAI.67", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "AI 搜尋可靠性", + "text": "查看提供的有關設置 AI 搜索以實現可靠性的指南", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "id": "AOAI.68", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "AI 搜索向量限制", + "text": "規劃和管理 AI 搜索向量存儲", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "id": "AOAI.69", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "DevOps的", + "text": "應用 LLMOps 實踐來自動化 GenAI 應用程式的生命週期管理", + "waf": "卓越運營" + }, + { + "category": "成本優化", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "id": "AOAI.7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "成本核算模型", + "text": "評估計費模型的使用方式 - PAYG 與 PTU", + "waf": "成本優化" + }, + { + "category": "運營管理", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "id": "AOAI.70", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "DevOps的", + "text": "在模型版本之間切換時評估提示和應用程式的品質", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "id": "AOAI.71", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "發展", + "text": "評估、監控和優化您的 GenAI 應用程式的特性,如接地氣、相關性、準確性、連貫性、流暢性、", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "id": "AOAI.72", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "發展", + "text": "根據不同的搜索參數評估 Azure AI 搜尋結果", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "id": "AOAI.73", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "發展", + "text": "只有在嘗試了其他基本方法(如提示工程和RAG處理數據)時,才將微調模型視為提高準確性的方法", + "waf": "卓越運營" + }, + { + "category": "運營管理", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "id": "AOAI.74", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "發展", + "text": "使用提示工程技術來提高 LLM 回應的準確性", + "waf": "卓越運營" + }, + { + "category": "治理與安全", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "id": "AOAI.75", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "安全審計和滲透測試", + "text": "紅隊您的 GenAI 應用程式", + "waf": "安全" + }, + { + "category": "運營管理", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "id": "AOAI.76", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "最終用戶反饋", + "text": "為最終使用者提供 LLM 回應的評分選項並跟蹤這些分數。", + "waf": "卓越運營" + }, + { + "category": "成本優化", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "id": "AOAI.8", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "高", + "subcategory": "配額管理", + "text": "考慮配額管理做法", + "waf": "成本優化" + }, + { + "category": "運營管理", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "id": "AOAI.9", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "中等", + "subcategory": "負載均衡", + "text": "使用負載均衡器解決方案(如基於APIM的閘道)在服務和區域之間平衡負載和容量", + "waf": "卓越運營" + } + ], + "metadata": { + "name": "Azure OpenAI Review", + "state": "Preview", + "timestamp": "July 23, 2024", + "waf": "all" + }, + "severities": [ + { + "name": "高" + }, + { + "name": "中等" + }, + { + "name": "低" + } + ], + "status": [ + { + "description": "此檢查尚未查看", + "name": "未驗證" + }, + { + "description": "有一個與此檢查關聯的操作項", + "name": "打開" + }, + { + "description": "此檢查已經過驗證,並且沒有與之關聯的其他操作項", + "name": "實現" + }, + { + "description": "建議已理解,但當前要求不需要", + "name": "不需要" + }, + { + "description": "不適用於當前設計", + "name": "N/A" + } + ], + "waf": [ + { + "name": "可靠性" + }, + { + "name": "安全" + }, + { + "name": "成本" + }, + { + "name": "操作" + }, + { + "name": "性能" + } + ], + "yesno": [ + { + "name": "是的" + }, + { + "name": "不" + } + ] +} \ No newline at end of file diff --git a/checklists/checklist.en.master.json b/checklists/checklist.en.master.json index 68a07a3bc..fd8cab64c 100644 --- a/checklists/checklist.en.master.json +++ b/checklists/checklist.en.master.json @@ -140,8 +140,8 @@ "guid": "685cb4f2-ac9c-4b19-9167-993ed0b32415", "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts", "services": [ - "Entra", - "LoadBalancer" + "LoadBalancer", + "Entra" ], "severity": "Medium", "subcategory": "Enterprise Agreement", @@ -154,8 +154,8 @@ "guid": "12cd499f-96e2-4e41-a243-231fb3245a1c", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations", "services": [ - "Entra", - "TrafficManager" + "TrafficManager", + "Entra" ], "severity": "Low", "subcategory": "Enterprise Agreement", @@ -183,9 +183,9 @@ "guid": "5cf9f485-2784-49b3-9824-75d9b8bdb57b", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations", "services": [ + "Subscriptions", "Entra", - "Cost", - "Subscriptions" + "Cost" ], "severity": "Low", "subcategory": "Enterprise Agreement", @@ -212,8 +212,8 @@ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/mca-section-invoice", "services": [ "Entra", - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Low", "subcategory": "Microsoft Customer Agreement", @@ -240,8 +240,8 @@ "guid": "ae757485-92a4-482a-8bc9-eefe6f5b5ec3", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations", "services": [ - "Entra", - "RBAC" + "RBAC", + "Entra" ], "severity": "Medium", "subcategory": "Microsoft Customer Agreement", @@ -255,9 +255,9 @@ "link": "https://learn.microsoft.com/azure/role-based-access-control/overview", "service": "Entra", "services": [ - "ACR", "RBAC", "Subscriptions", + "ACR", "Entra" ], "severity": "High", @@ -317,8 +317,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview", "service": "Entra", "services": [ - "Entra", - "AzurePolicy" + "AzurePolicy", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -347,8 +347,8 @@ "guid": "e6a83de5-de32-4c19-a248-1607d5d1e4e6", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations", "services": [ - "Entra", - "RBAC" + "RBAC", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -393,9 +393,9 @@ "guid": "f5664b5e-984a-4859-a773-e7d261623a76", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access#prerequisites-for-a-landing-zone---design-recommendations", "services": [ - "ACR", "RBAC", "Subscriptions", + "ACR", "Entra" ], "severity": "Medium", @@ -426,8 +426,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor", "service": "Entra", "services": [ - "Entra", - "Monitor" + "Monitor", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -456,8 +456,8 @@ "guid": "cd163e39-84a5-4b39-97b7-6973abd70d94", "link": "https://learn.microsoft.com/azure/active-directory/hybrid/how-to-connect-sync-staging-server", "services": [ - "Entra", - "ASR" + "ASR", + "Entra" ], "severity": "Medium", "subcategory": "Microsoft Entra ID", @@ -471,8 +471,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices", "service": "Entra", "services": [ - "Entra", - "RBAC" + "RBAC", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -516,11 +516,11 @@ "guid": "d4d1ad54-1abc-4919-b267-3f342d3b49e4", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#rbac-recommendations", "services": [ - "AKV", + "ACR", "Storage", + "Entra", "RBAC", - "ACR", - "Entra" + "AKV" ], "severity": "Medium", "subcategory": "Landing zones", @@ -589,8 +589,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-group-recommendations", "services": [ "RBAC", - "AzurePolicy", - "Subscriptions" + "Subscriptions", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Subscriptions", @@ -605,9 +605,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups#management-group-recommendations", "services": [ "DNS", - "VWAN", + "Subscriptions", "ExpressRoute", - "Subscriptions" + "VWAN" ], "severity": "Medium", "subcategory": "Subscriptions", @@ -663,9 +663,9 @@ "link": "https://learn.microsoft.com/azure/governance/management-groups/overview", "services": [ "RBAC", + "Subscriptions", "AzurePolicy", - "Cost", - "Subscriptions" + "Cost" ], "severity": "High", "subcategory": "Subscriptions", @@ -691,8 +691,8 @@ "guid": "c68e1d76-6673-413b-9f56-64b5e984a859", "link": "https://learn.microsoft.com/azure/cost-management-billing/reservations/save-compute-costs-reservations", "services": [ - "Cost", - "Subscriptions" + "Subscriptions", + "Cost" ], "severity": "High", "subcategory": "Subscriptions", @@ -723,8 +723,8 @@ "guid": "ae28c84c-33b6-4b78-88b9-fe5c41049d40", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/get-started/manage-costs", "services": [ - "Cost", - "Subscriptions" + "Subscriptions", + "Cost" ], "severity": "High", "subcategory": "Subscriptions", @@ -738,8 +738,8 @@ "guid": "3a923c34-74d0-4001-aac6-a9e01e6a83de", "link": "https://learn.microsoft.com/azure/governance/management-groups/overview", "services": [ - "Entra", - "Subscriptions" + "Subscriptions", + "Entra" ], "severity": "Medium", "subcategory": "Subscriptions", @@ -754,8 +754,8 @@ "guid": "5de32c19-9248-4160-9d5d-1e4e614658d3", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/track-costs", "services": [ - "Cost", - "Subscriptions" + "Subscriptions", + "Cost" ], "severity": "Medium", "subcategory": "Subscriptions", @@ -822,8 +822,8 @@ "guid": "373f482f-3e39-4d39-8aa4-7e566f6082b6", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-app-delivery", "services": [ - "FrontDoor", - "AppGW" + "AppGW", + "FrontDoor" ], "severity": "Medium", "subcategory": "App delivery", @@ -853,12 +853,12 @@ "service": "VNet", "services": [ "Firewall", + "VPN", "VNet", "NVA", - "ExpressRoute", - "VPN", "DNS", - "Entra" + "Entra", + "ExpressRoute" ], "severity": "High", "subcategory": "Hub and spoke", @@ -918,8 +918,8 @@ "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1", "service": "ARS", "services": [ - "VNet", - "ARS" + "ARS", + "VNet" ], "severity": "Low", "subcategory": "Hub and spoke", @@ -933,8 +933,8 @@ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-faq#can-i-create-a-peering-connection-to-a-vnet-in-a-different-region", "service": "VNet", "services": [ - "VNet", - "ACR" + "ACR", + "VNet" ], "severity": "Medium", "subcategory": "Hub and spoke", @@ -965,8 +965,8 @@ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits", "service": "VNet", "services": [ - "VNet", - "ExpressRoute" + "ExpressRoute", + "VNet" ], "severity": "Medium", "subcategory": "Hub and spoke", @@ -1040,8 +1040,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing", "service": "ExpressRoute", "services": [ - "VNet", - "ACR" + "ACR", + "VNet" ], "severity": "High", "subcategory": "IP plan", @@ -1088,8 +1088,8 @@ "link": "https://learn.microsoft.com/azure/site-recovery/concepts-on-premises-to-azure-networking#retain-ip-addresses", "service": "VNet", "services": [ - "VNet", - "ASR" + "ASR", + "VNet" ], "severity": "High", "subcategory": "IP plan", @@ -1153,8 +1153,8 @@ "service": "DNS", "services": [ "DNS", - "VNet", - "VM" + "VM", + "VNet" ], "severity": "High", "subcategory": "IP plan", @@ -1184,8 +1184,8 @@ "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet", "service": "Bastion", "services": [ - "VNet", - "Bastion" + "Bastion", + "VNet" ], "severity": "Medium", "subcategory": "Internet", @@ -1199,9 +1199,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview", "service": "WAF", "services": [ - "WAF", "ACR", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -1217,10 +1217,10 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "WAF", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "FrontDoor", - "AppGW" + "WAF", + "FrontDoor" ], "severity": "Low", "subcategory": "Internet", @@ -1235,8 +1235,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "WAF", "services": [ - "VNet", - "WAF" + "WAF", + "VNet" ], "severity": "High", "subcategory": "Internet", @@ -1251,8 +1251,8 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures", "service": "VNet", "services": [ - "VNet", - "DDoS" + "DDoS", + "VNet" ], "severity": "High", "subcategory": "Internet", @@ -1294,8 +1294,8 @@ "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp", "service": "Policy", "services": [ - "AzurePolicy", - "VM" + "VM", + "AzurePolicy" ], "severity": "High", "subcategory": "Internet", @@ -1310,8 +1310,8 @@ "service": "ExpressRoute", "services": [ "Backup", - "VPN", - "ExpressRoute" + "ExpressRoute", + "VPN" ], "severity": "Medium", "subcategory": "Hybrid", @@ -1516,8 +1516,8 @@ "service": "ExpressRoute", "services": [ "ACR", - "NetworkWatcher", - "Monitor" + "Monitor", + "NetworkWatcher" ], "severity": "Medium", "subcategory": "Hybrid", @@ -1579,8 +1579,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections", "service": "ExpressRoute", "services": [ - "ACR", - "ExpressRoute" + "ExpressRoute", + "ACR" ], "severity": "High", "subcategory": "Hybrid", @@ -1637,9 +1637,9 @@ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log", "service": "ExpressRoute", "services": [ - "VNet", "ExpressRoute", - "Monitor" + "Monitor", + "VNet" ], "severity": "Medium", "subcategory": "Hybrid", @@ -1654,8 +1654,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance", "service": "ExpressRoute", "services": [ - "VNet", - "ExpressRoute" + "ExpressRoute", + "VNet" ], "severity": "Medium", "subcategory": "Hybrid", @@ -1700,8 +1700,8 @@ "service": "Firewall", "services": [ "Firewall", - "RBAC", "ACR", + "RBAC", "AzurePolicy" ], "severity": "Medium", @@ -1733,8 +1733,8 @@ "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules", "service": "Firewall", "services": [ - "DNS", - "Firewall" + "Firewall", + "DNS" ], "severity": "High", "subcategory": "Firewall", @@ -1845,8 +1845,8 @@ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size", "service": "Firewall", "services": [ - "VNet", - "Firewall" + "Firewall", + "VNet" ], "severity": "High", "subcategory": "Segmentation", @@ -1954,8 +1954,8 @@ "link": "https://learn.microsoft.com/azure/firewall/dns-details", "service": "Firewall", "services": [ - "DNS", - "Firewall" + "Firewall", + "DNS" ], "severity": "Medium", "subcategory": "Firewall", @@ -2059,10 +2059,10 @@ "link": "azure/private-link/inspect-traffic-with-azure-firewall", "service": "Firewall", "services": [ - "DNS", + "PrivateLink", "Firewall", "NVA", - "PrivateLink" + "DNS" ], "severity": "Medium", "subcategory": "PaaS", @@ -2078,9 +2078,9 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway", "service": "ExpressRoute", "services": [ - "VNet", "ExpressRoute", - "VPN" + "VPN", + "VNet" ], "severity": "High", "subcategory": "Segmentation", @@ -2123,8 +2123,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation", "service": "NSG", "services": [ - "VNet", - "ACR" + "ACR", + "VNet" ], "severity": "Medium", "subcategory": "Segmentation", @@ -2139,9 +2139,9 @@ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works", "service": "NSG", "services": [ + "NVA", "VNet", - "Entra", - "NVA" + "Entra" ], "severity": "Medium", "subcategory": "Segmentation", @@ -2156,8 +2156,8 @@ "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview", "service": "NSG", "services": [ - "VNet", - "NetworkWatcher" + "NetworkWatcher", + "VNet" ], "severity": "Medium", "subcategory": "Segmentation", @@ -2219,8 +2219,8 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/howto-firewall", "service": "VWAN", "services": [ - "VWAN", - "Firewall" + "Firewall", + "VWAN" ], "severity": "Medium", "subcategory": "Virtual WAN", @@ -2351,8 +2351,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "AzurePolicy", - "Subscriptions" + "Subscriptions", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Governance", @@ -2380,8 +2380,8 @@ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services", "service": "Policy", "services": [ - "AzurePolicy", - "Subscriptions" + "Subscriptions", + "AzurePolicy" ], "severity": "Low", "subcategory": "Governance", @@ -2410,10 +2410,10 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy", "service": "Policy", "services": [ - "Entra", "RBAC", + "Subscriptions", "AzurePolicy", - "Subscriptions" + "Entra" ], "severity": "Medium", "subcategory": "Governance", @@ -2427,8 +2427,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "AzurePolicy", - "Subscriptions" + "Subscriptions", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Governance", @@ -2457,8 +2457,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone", "service": "Policy", "services": [ - "AzurePolicy", - "Subscriptions" + "Subscriptions", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Governance", @@ -2499,9 +2499,9 @@ "guid": "29fd366b-a180-452b-9bd7-954b7700c667", "link": "https://learn.microsoft.com/azure/cost-management-billing/costs/tutorial-acm-create-budgets?bc=%2Fazure%2Fcloud-adoption-framework%2F_bread%2Ftoc.json&toc=%2Fazure%2Fcloud-adoption-framework%2Ftoc.json", "services": [ + "Monitor", "TrafficManager", - "Cost", - "Monitor" + "Cost" ], "severity": "Medium", "subcategory": "Optimize your cloud investment", @@ -2515,10 +2515,10 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment", "service": "Monitor", "services": [ - "Entra", "RBAC", + "Monitor", "AzurePolicy", - "Monitor" + "Entra" ], "severity": "Medium", "subcategory": "Monitoring", @@ -2534,8 +2534,8 @@ "service": "Monitor", "services": [ "ARS", - "AzurePolicy", "Monitor", + "AzurePolicy", "Storage" ], "severity": "High", @@ -2551,9 +2551,9 @@ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview", "service": "VM", "services": [ + "Monitor", "AzurePolicy", - "VM", - "Monitor" + "VM" ], "severity": "Medium", "subcategory": "Monitoring", @@ -2598,8 +2598,8 @@ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview", "service": "Network Watcher", "services": [ - "NetworkWatcher", - "Monitor" + "Monitor", + "NetworkWatcher" ], "severity": "Medium", "subcategory": "Monitoring", @@ -2628,8 +2628,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "services": [ "RBAC", - "AzurePolicy", - "Monitor" + "Monitor", + "AzurePolicy" ], "severity": "Low", "subcategory": "Monitoring", @@ -2750,8 +2750,8 @@ "guid": "aa45be6a-8f2d-4896-b0e3-775e6e94e610", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-monitor", "services": [ - "AzurePolicy", - "Monitor" + "Monitor", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Monitoring", @@ -2791,8 +2791,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration", "service": "VM", "services": [ - "AzurePolicy", - "VM" + "VM", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Operational compliance", @@ -2807,9 +2807,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift", "service": "VM", "services": [ + "Monitor", "AzurePolicy", - "VM", - "Monitor" + "VM" ], "severity": "Medium", "subcategory": "Operational compliance", @@ -2823,8 +2823,8 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview", "service": "VM", "services": [ - "ACR", "ASR", + "ACR", "VM" ], "severity": "Medium", @@ -2866,9 +2866,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs", "service": "WAF", "services": [ + "AppGW", "WAF", - "FrontDoor", - "AppGW" + "FrontDoor" ], "severity": "High", "subcategory": "App delivery", @@ -2882,10 +2882,10 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel", "service": "WAF", "services": [ - "WAF", - "FrontDoor", "AppGW", - "Sentinel" + "WAF", + "Sentinel", + "FrontDoor" ], "severity": "Medium", "subcategory": "App delivery", @@ -2950,8 +2950,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "AKV", - "AzurePolicy" + "AzurePolicy", + "AKV" ], "severity": "Medium", "subcategory": "Encryption and keys", @@ -2965,8 +2965,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "AKV", "RBAC", + "AKV", "Entra" ], "severity": "Medium", @@ -3009,9 +3009,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "VNet", + "PrivateLink", "AKV", - "PrivateLink" + "VNet" ], "severity": "Medium", "subcategory": "Encryption and keys", @@ -3025,8 +3025,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault", "service": "Key Vault", "services": [ - "AKV", "Monitor", + "AKV", "Entra" ], "severity": "Medium", @@ -3041,8 +3041,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "AKV", - "AzurePolicy" + "AzurePolicy", + "AKV" ], "severity": "Medium", "subcategory": "Encryption and keys", @@ -3083,8 +3083,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "ACR", "ASR", + "ACR", "AKV" ], "severity": "Medium", @@ -3142,8 +3142,8 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management", "service": "Defender", "services": [ - "Subscriptions", - "Defender" + "Defender", + "Subscriptions" ], "severity": "High", "subcategory": "Operations", @@ -3157,8 +3157,8 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan", "service": "Defender", "services": [ - "Subscriptions", - "Defender" + "Defender", + "Subscriptions" ], "severity": "High", "subcategory": "Operations", @@ -3172,8 +3172,8 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription", "service": "Defender", "services": [ - "Subscriptions", - "Defender" + "Defender", + "Subscriptions" ], "severity": "High", "subcategory": "Operations", @@ -3199,8 +3199,8 @@ "link": "https://learn.microsoft.com/azure/security-center/", "service": "VM", "services": [ - "Monitor", - "Defender" + "Defender", + "Monitor" ], "severity": "Medium", "subcategory": "Operations", @@ -3214,8 +3214,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment", "service": "Monitor", "services": [ - "Entra", - "Monitor" + "Monitor", + "Entra" ], "severity": "Medium", "subcategory": "Operations", @@ -3390,8 +3390,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle#automated-builds", "service": "Key Vault", "services": [ - "AKV", - "VM" + "VM", + "AKV" ], "severity": "High", "subcategory": "DevOps Team Topologies", @@ -3563,8 +3563,8 @@ "guid": "b94ee5ef-47d2-4d92-a81b-1cd6d1f54b29", "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/sharing-metadata-across-different-databricks-workspaces-using/ba-p/3679757", "services": [ - "ACR", - "Backup" + "Backup", + "ACR" ], "severity": "Medium", "subcategory": "Backup", @@ -3577,8 +3577,8 @@ "guid": "769e3969-0e78-428a-a936-657d03b0f466", "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/disaster-recovery-strategy-in-azure-databricks-using-the-hive/ba-p/3684581", "services": [ - "Backup", - "ASR" + "ASR", + "Backup" ], "severity": "Medium", "subcategory": "Backup", @@ -3774,8 +3774,8 @@ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check", "service": "App Services", "services": [ - "AppSvc", - "Monitor" + "Monitor", + "AppSvc" ], "severity": "Medium", "subcategory": "Monitoring", @@ -3860,8 +3860,8 @@ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check", "service": "App Services", "services": [ - "AppSvc", - "Monitor" + "Monitor", + "AppSvc" ], "severity": "Medium", "subcategory": "Monitoring", @@ -3875,8 +3875,8 @@ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview", "service": "App Services", "services": [ - "AppSvc", - "Monitor" + "Monitor", + "AppSvc" ], "severity": "Medium", "subcategory": "Monitoring", @@ -3890,8 +3890,8 @@ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests", "service": "App Services", "services": [ - "AppSvc", - "Monitor" + "Monitor", + "AppSvc" ], "severity": "Low", "subcategory": "Monitoring", @@ -3922,9 +3922,9 @@ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references", "service": "App Services", "services": [ + "Entra", "AKV", - "AppSvc", - "Entra" + "AppSvc" ], "severity": "High", "subcategory": "Data Protection", @@ -3955,8 +3955,8 @@ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans", "service": "App Services", "services": [ - "AppSvc", - "Subscriptions" + "Subscriptions", + "AppSvc" ], "severity": "Medium", "subcategory": "Data Protection", @@ -4036,8 +4036,8 @@ "service": "App Services", "services": [ "Entra", - "AppSvc", - "AKV" + "AKV", + "AppSvc" ], "severity": "High", "subcategory": "Identity and Access Control", @@ -4052,9 +4052,9 @@ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry", "service": "App Services", "services": [ + "ACR", "Entra", - "AppSvc", - "ACR" + "AppSvc" ], "severity": "High", "subcategory": "Identity and Access Control", @@ -4069,9 +4069,9 @@ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs", "service": "App Services", "services": [ + "Monitor", "Entra", - "AppSvc", - "Monitor" + "AppSvc" ], "severity": "Medium", "subcategory": "Logging and Monitoring", @@ -4086,9 +4086,9 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log", "service": "App Services", "services": [ + "Monitor", "Entra", - "AppSvc", - "Monitor" + "AppSvc" ], "severity": "Medium", "subcategory": "Logging and Monitoring", @@ -4104,10 +4104,10 @@ "service": "App Services", "services": [ "Firewall", - "Monitor", "VNet", "NVA", - "AppSvc" + "AppSvc", + "Monitor" ], "severity": "Medium", "subcategory": "Network Security", @@ -4122,12 +4122,12 @@ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration", "service": "App Services", "services": [ - "PrivateLink", "Firewall", "VNet", + "PrivateLink", "NVA", - "Storage", - "AppSvc" + "AppSvc", + "Storage" ], "severity": "Low", "subcategory": "Network Security", @@ -4158,10 +4158,10 @@ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints", "service": "App Services", "services": [ - "WAF", + "AppSvc", "Monitor", "AppGW", - "AppSvc", + "WAF", "FrontDoor" ], "severity": "High", @@ -4177,9 +4177,9 @@ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions", "service": "App Services", "services": [ + "PrivateLink", "WAF", - "AppSvc", - "PrivateLink" + "AppSvc" ], "severity": "High", "subcategory": "Network Security", @@ -4228,8 +4228,8 @@ "link": "https://learn.microsoft.com/azure/app-service/app-service-web-tutorial-rest-api", "service": "App Services", "services": [ - "AppSvc", - "Storage" + "Storage", + "AppSvc" ], "severity": "High", "subcategory": "Network Security", @@ -4260,8 +4260,8 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction", "service": "App Services", "services": [ - "AppSvc", - "Defender" + "Defender", + "AppSvc" ], "severity": "Medium", "subcategory": "Network Security", @@ -4276,13 +4276,13 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "service": "App Services", "services": [ - "EventHubs", - "WAF", - "AppGW", - "VNet", "DDoS", + "VNet", + "EventHubs", "NVA", - "AppSvc" + "AppSvc", + "AppGW", + "WAF" ], "severity": "Medium", "subcategory": "Network Security", @@ -4297,10 +4297,10 @@ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry", "service": "App Services", "services": [ - "VNet", + "PrivateLink", "ACR", - "AppSvc", - "PrivateLink" + "VNet", + "AppSvc" ], "severity": "Medium", "subcategory": "Network Security", @@ -4358,9 +4358,9 @@ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9", "service": "AVS", "services": [ - "Entra", "Subscriptions", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -4373,8 +4373,8 @@ "guid": "75089c20-990d-4927-b105-885576f76fc2", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -4387,8 +4387,8 @@ "guid": "de3aad1e-7c28-4ec9-9666-b7570449aa80", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -4401,8 +4401,8 @@ "guid": "cd289ced-6b17-4db8-8554-61e2aee3553a", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -4415,8 +4415,8 @@ "guid": "b9d37dac-43bc-46cd-8d79-a9b24604489a", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -4429,8 +4429,8 @@ "guid": "53d88e89-d17b-473b-82a5-a67e7a9ed5b3", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -4443,9 +4443,9 @@ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d", "service": "AVS", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -4458,9 +4458,9 @@ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e", "service": "AVS", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -4473,9 +4473,9 @@ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d", "service": "AVS", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -4488,9 +4488,9 @@ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5", "service": "AVS", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -4517,10 +4517,10 @@ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5", "service": "AVS", "services": [ - "Monitor", "NetworkWatcher", - "ExpressRoute", "VPN", + "Monitor", + "ExpressRoute", "AVS" ], "severity": "High", @@ -4534,10 +4534,10 @@ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99", "service": "AVS", "services": [ - "Monitor", - "NetworkWatcher", "ExpressRoute", + "Monitor", "VM", + "NetworkWatcher", "AVS" ], "severity": "Medium", @@ -4551,10 +4551,10 @@ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265", "service": "AVS", "services": [ - "NetworkWatcher", - "VM", "Monitor", - "AVS" + "NetworkWatcher", + "AVS", + "VM" ], "severity": "Medium", "subcategory": "Monitoring", @@ -4581,9 +4581,9 @@ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3", "service": "AVS", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Security (identity)", @@ -4596,9 +4596,9 @@ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c", "service": "AVS", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Security (identity)", @@ -4611,8 +4611,8 @@ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security (identity)", @@ -4625,8 +4625,8 @@ "guid": "8defc4d7-21d3-41d2-90fb-707ae9eab40e", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Security (identity)", @@ -4639,9 +4639,9 @@ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1", "service": "AVS", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security (identity)", @@ -4654,8 +4654,8 @@ "guid": "9dd24429-eb72-4281-97a1-51c5bb4e4f18", "service": "AVS", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security (identity)", @@ -4668,9 +4668,9 @@ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5", "service": "AVS", "services": [ - "Entra", "VM", - "AVS" + "AVS", + "Entra" ], "severity": "High", "subcategory": "Security (identity)", @@ -4697,8 +4697,8 @@ "service": "AVS", "services": [ "Firewall", - "AppGW", - "AVS" + "AVS", + "AppGW" ], "severity": "High", "subcategory": "Security (network)", @@ -4738,10 +4738,10 @@ "guid": "334fdf91-c234-4182-a652-75269440b4be", "service": "AVS", "services": [ - "VNet", + "VPN", "DDoS", + "VNet", "ExpressRoute", - "VPN", "AVS" ], "severity": "Medium", @@ -4810,8 +4810,8 @@ "guid": "a3592718-e6e2-4051-9267-6ae46691e883", "service": "AVS", "services": [ - "AKV", - "AVS" + "AVS", + "AKV" ], "severity": "Low", "subcategory": "Security (guest/VM)", @@ -4850,9 +4850,9 @@ "guid": "d88408f3-7273-44c8-96ba-280214590146", "service": "AVS", "services": [ + "AVS", "AzurePolicy", - "Storage", - "AVS" + "Storage" ], "severity": "High", "subcategory": "Governance (platform)", @@ -4892,8 +4892,8 @@ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52", "service": "AVS", "services": [ - "AzurePolicy", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Governance (platform)", @@ -4906,8 +4906,8 @@ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef", "service": "AVS", "services": [ - "Cost", - "AVS" + "AVS", + "Cost" ], "severity": "Medium", "subcategory": "Governance (platform)", @@ -4920,8 +4920,8 @@ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4", "service": "AVS", "services": [ - "Cost", - "AVS" + "AVS", + "Cost" ], "severity": "Low", "subcategory": "Governance (platform)", @@ -4960,8 +4960,8 @@ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da", "service": "AVS", "services": [ - "VM", "Defender", + "VM", "AVS" ], "severity": "Medium", @@ -4975,8 +4975,8 @@ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe", "service": "AVS", "services": [ - "VM", "Arc", + "VM", "AVS" ], "severity": "Medium", @@ -5003,9 +5003,9 @@ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46", "service": "AVS", "services": [ - "VM", "Monitor", - "AVS" + "AVS", + "VM" ], "severity": "Medium", "subcategory": "Governance (guest/VM)", @@ -5019,9 +5019,9 @@ "service": "AVS", "services": [ "Backup", - "AzurePolicy", "VM", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Governance (guest/VM)", @@ -5159,8 +5159,8 @@ "service": "AVS", "services": [ "Monitor", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Monitoring", @@ -5187,10 +5187,10 @@ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682", "service": "AVS", "services": [ - "AzurePolicy", "VM", - "Storage", - "AVS" + "AVS", + "AzurePolicy", + "Storage" ], "severity": "High", "subcategory": "Operations", @@ -5217,8 +5217,8 @@ "service": "AVS", "services": [ "Backup", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Operations", @@ -5272,9 +5272,9 @@ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa", "service": "AVS", "services": [ - "AzurePolicy", "Monitor", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Operations", @@ -5386,9 +5386,9 @@ "service": "AVS", "services": [ "ExpressRoute", - "ASR", "NVA", - "AVS" + "AVS", + "ASR" ], "severity": "Medium", "subcategory": "Disaster Recovery", @@ -5508,8 +5508,8 @@ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b", "service": "AVS", "services": [ - "AzurePolicy", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Low", "subcategory": "Automated Deployment", @@ -5522,8 +5522,8 @@ "guid": "e2cc95d4-8c6b-4791-bca0-f6c56589e558", "service": "AVS", "services": [ - "AKV", - "AVS" + "AVS", + "AKV" ], "severity": "Low", "subcategory": "Automated Connectivity", @@ -5536,9 +5536,9 @@ "guid": "255461e2-aee3-4553-afc8-339248b262d6", "service": "AVS", "services": [ - "AKV", "ExpressRoute", - "AVS" + "AVS", + "AKV" ], "severity": "Low", "subcategory": "Automated Connectivity", @@ -5591,9 +5591,9 @@ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b", "service": "AVS", "services": [ + "AVS", "AzurePolicy", - "Storage", - "AVS" + "Storage" ], "severity": "Medium", "subcategory": "Automated Scale", @@ -5732,8 +5732,8 @@ "service": "AVS", "services": [ "VM", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Architecture", @@ -5748,8 +5748,8 @@ "service": "AVS", "services": [ "ExpressRoute", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Architecture", @@ -5764,8 +5764,8 @@ "service": "AVS", "services": [ "ExpressRoute", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Architecture", @@ -5976,8 +5976,8 @@ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives", "service": "Cognitive Search", "services": [ - "Backup", "ASR", + "Backup", "Storage" ], "severity": "High", @@ -6074,8 +6074,8 @@ "link": "https://learn.microsoft.com/azure/data-explorer/kusto/management/data-export/continuous-data-export", "service": "Azure Data Explorer", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "subcategory": "Replication", "text": "Leverage External Tables and Continuous data export overview to reduce costs", @@ -6182,10 +6182,10 @@ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration", "service": "Azure Data Explorer", "services": [ - "Cost", "ASR", "AzurePolicy", - "Storage" + "Storage", + "Cost" ], "subcategory": "DR Configuration", "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration", @@ -6238,8 +6238,8 @@ "link": "https://learn.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution", "services": [ "Backup", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Backup", @@ -6268,8 +6268,8 @@ "guid": "be28860f-3d29-a79a-1a0e-36f1b23b36ae", "link": "Best practice to deploy backup in the same region as your AVS deployment", "services": [ - "Backup", "ASR", + "Backup", "AVS" ], "severity": "Medium", @@ -6387,8 +6387,8 @@ "guid": "b44fb6ec-bfc1-3a8e-dba2-ca97f0991d2c", "link": "This depends if you have multiple AVS Private Clouds. If so and they are in the same region then use AVS Interconnect. If they are in separate regions then use ExpressRoute Global Reach.", "services": [ - "ExpressRoute", "ASR", + "ExpressRoute", "NVA", "AVS" ], @@ -6479,8 +6479,8 @@ "guid": "91f7a87b-21ac-d712-959c-8df2ba034253", "link": "https://learn.microsoft.com/azure/virtual-network/quick-create-portal", "services": [ - "VNet", - "AVS" + "AVS", + "VNet" ], "severity": "Medium", "subcategory": "Hub & Spoke", @@ -6494,10 +6494,10 @@ "guid": "58a027e2-f37f-b540-45d5-e44843aba26b", "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings", "services": [ - "VNet", - "ExpressRoute", "VPN", - "AVS" + "ExpressRoute", + "AVS", + "VNet" ], "severity": "Medium", "subcategory": "Hub & Spoke", @@ -6511,10 +6511,10 @@ "guid": "d4806549-0913-3e79-b580-ac2d3706e65a", "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings", "services": [ - "VNet", - "ExpressRoute", "VPN", - "AVS" + "ExpressRoute", + "AVS", + "VNet" ], "severity": "Medium", "subcategory": "Hub & Spoke", @@ -6528,10 +6528,10 @@ "guid": "864d7a8b-7016-c769-a717-61af6bfb73d2", "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings", "services": [ - "VNet", - "ExpressRoute", "VPN", - "AVS" + "ExpressRoute", + "AVS", + "VNet" ], "severity": "Medium", "subcategory": "Hub & Spoke", @@ -6560,8 +6560,8 @@ "guid": "71e68ce3-982e-5e56-0191-01100ad0e66f", "link": "https://learn.microsoft.com/answers/questions/171195/how-to-create-jump-server-in-azure-not-bastion-paa.html", "services": [ - "Bastion", - "AVS" + "AVS", + "Bastion" ], "severity": "Medium", "subcategory": "Jumpbox & Bastion", @@ -6576,8 +6576,8 @@ "link": "https://learn.microsoft.com/azure/bastion/tutorial-create-host-portal", "services": [ "VNet", - "Bastion", - "AVS" + "AVS", + "Bastion" ], "severity": "Medium", "subcategory": "Jumpbox & Bastion", @@ -6591,9 +6591,9 @@ "guid": "ba430d58-4541-085c-3641-068c00be9bc5", "link": "https://learn.microsoft.com/azure/virtual-network/network-security-groups-overview", "services": [ - "Bastion", "VM", - "AVS" + "AVS", + "Bastion" ], "severity": "Medium", "subcategory": "Jumpbox & Bastion", @@ -6667,8 +6667,8 @@ "guid": "51d6affd-8e02-6aea-d3d4-0baf618b3076", "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-point-to-site-portal", "services": [ - "VWAN", "VPN", + "VWAN", "AVS" ], "severity": "Medium", @@ -6683,8 +6683,8 @@ "guid": "e32a4c67-3dc0-c134-1c12-52d46dcbab5b", "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-expressroute-portal", "services": [ - "VWAN", "Firewall", + "VWAN", "AVS" ], "severity": "Medium", @@ -6699,8 +6699,8 @@ "guid": "fbc47fbf-bc96-fa93-ed5d-8c9be63cd5c3", "link": "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Access", @@ -6714,8 +6714,8 @@ "guid": "b5db7975-f6bb-8ba3-ee5f-e3e805887997", "link": "https://learn.microsoft.com/windows-server/identity/ad-ds/plan/understanding-active-directory-site-topology", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Access", @@ -6729,8 +6729,8 @@ "guid": "c30749c4-e2af-558c-2eb9-0b6ae84881d1", "link": "https://learn.microsoft.com/azure/azure-vmware/configure-identity-source-vcenter", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Access", @@ -6744,8 +6744,8 @@ "guid": "64cb9b5c-9edd-787e-1dd8-2b2338e51635", "link": "https://learn.microsoft.com/azure/azure-vmware/configure-external-identity-source-nsx-t", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Access", @@ -6759,8 +6759,8 @@ "guid": "bec285ab-037e-d629-81d1-f61dac23cd4c", "link": "https://youtu.be/4jvfbsrhnEs", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -6774,9 +6774,9 @@ "guid": "4ba394a2-3c33-104c-8e34-2dadaba9cc73", "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-identity", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -6790,9 +6790,9 @@ "guid": "b04ca129-83a9-3494-7512-347dd2d766db", "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-identity#view-the-vcenter-server-privileges", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -6806,9 +6806,9 @@ "guid": "8e477d2f-8004-3dd0-93d6-0aece9e1b2fb", "link": "Best practice", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -6822,9 +6822,9 @@ "guid": "00e0b729-f9be-f600-8c32-5ec0e8f2ed63", "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security ", @@ -6838,9 +6838,9 @@ "guid": "0842d45f-41a8-8274-1155-2f6ed554d315", "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure", "services": [ - "Entra", "RBAC", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security ", @@ -6854,9 +6854,9 @@ "guid": "915cbcd7-0640-eb7c-4162-9f33775de559", "link": "Best practice", "services": [ - "Entra", "Monitor", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security ", @@ -6870,8 +6870,8 @@ "guid": "7effa0c0-9172-e8e4-726a-67dbea8be40a", "link": "https://learn.microsoft.com/azure/azure-vmware/rotate-cloudadmin-credentials?tabs=azure-portal", "services": [ - "Entra", - "AVS" + "AVS", + "Entra" ], "severity": "Medium", "subcategory": "Security ", @@ -6885,8 +6885,8 @@ "guid": "8f426fd0-d73b-d398-1f6f-df0cbe262a82", "link": "https://learn.microsoft.com/azure/azure-arc/vmware-vsphere/overview", "services": [ - "VM", "Arc", + "VM", "AVS" ], "severity": "Medium", @@ -6901,9 +6901,9 @@ "guid": "11dbe773-e380-9191-1418-e886fa7a6fd0", "link": "https://docs.microsoft.com/azure/governance/policy/overview", "services": [ - "AzurePolicy", "Monitor", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Operations", @@ -6945,8 +6945,8 @@ "guid": "86b314f9-1f1e-317a-4dfb-cf510ad4a030", "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", "services": [ - "AKV", - "AVS" + "AVS", + "AKV" ], "severity": "Medium", "subcategory": "Operations", @@ -7005,9 +7005,9 @@ "guid": "0962606c-e3b4-62a9-5661-e4ffd62a4509", "link": "https://docs.microsoft.com/azure/azure-vmware/set-up-backup-server-for-azure-vmware-solution", "services": [ - "Monitor", "Backup", "AzurePolicy", + "Monitor", "VM", "AVS" ], @@ -7023,9 +7023,9 @@ "guid": "4ec7ccfb-795e-897e-4a84-fd31c04eadc6", "link": "https://docs.microsoft.com/azure/azure-vmware/configure-alerts-for-azure-vmware-solution", "services": [ - "AzurePolicy", "Monitor", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Capacity", @@ -7040,9 +7040,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/govern", "services": [ "Subscriptions", - "Cost", "Monitor", - "AVS" + "AVS", + "Cost" ], "severity": "Medium", "subcategory": "Costs", @@ -7056,8 +7056,8 @@ "guid": "01e689e0-7c6c-b58f-37bd-4d6b9b1b9c74", "link": "https://docs.microsoft.com/azure/azure-portal/azure-portal-dashboards", "services": [ - "NetworkWatcher", "Monitor", + "NetworkWatcher", "AVS" ], "severity": "Medium", @@ -7073,8 +7073,8 @@ "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs", "services": [ "Monitor", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Logs & Metrics", @@ -7103,8 +7103,8 @@ "guid": "b243521a-644d-f865-7fb6-21f9019c0dd2", "link": "https://docs.microsoft.com/azure/azure-vmware/configure-vmware-syslogs", "services": [ - "VM", "Monitor", + "VM", "AVS" ], "severity": "Medium", @@ -7119,10 +7119,10 @@ "guid": "2ca97d91-dd36-7229-b668-01036ccc3cd3", "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-create-using-portal", "services": [ - "Monitor", "NetworkWatcher", - "ExpressRoute", "VPN", + "Monitor", + "ExpressRoute", "AVS" ], "severity": "Medium", @@ -7213,9 +7213,9 @@ "guid": "fb00b69a-83ec-ce72-446e-6c23a0cab09a", "link": "https://docs.microsoft.com/azure/azure-monitor/agents/agent-windows?tabs=setup-wizard", "services": [ - "VM", "Monitor", - "AVS" + "AVS", + "VM" ], "severity": "Medium", "subcategory": "VMware", @@ -7302,10 +7302,10 @@ "guid": "e942c03d-beaa-3d9f-0526-9b26cd5e9937", "link": "Research and choose optimal solution for each application", "services": [ - "FrontDoor", "NVA", + "AVS", "AppGW", - "AVS" + "FrontDoor" ], "severity": "Medium", "subcategory": "Internet", @@ -7334,15 +7334,15 @@ "guid": "66c97b30-81b9-139a-cc76-dd1d94aef42a", "link": "https://docs.microsoft.com/azure/ddos-protection/manage-ddos-protection", "services": [ - "AppGW", - "VNet", + "VPN", "DDoS", - "ExpressRoute", + "VNet", + "LoadBalancer", "VM", - "FrontDoor", - "VPN", + "AppGW", + "ExpressRoute", "AVS", - "LoadBalancer" + "FrontDoor" ], "severity": "Medium", "subcategory": "Security", @@ -7384,8 +7384,8 @@ "guid": "3f621543-dfac-c471-54a6-7b2849b6909a", "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture", "services": [ - "VWAN", "Firewall", + "VWAN", "AVS" ], "severity": "Medium", @@ -7430,9 +7430,9 @@ "guid": "7242c1de-da37-27f3-1ddd-565ccccb8ece", "link": "https://docs.microsoft.com/azure/cloud-adoption-framework/scenarios/azure-vmware/eslz-platform-automation-and-devops#automated-scale", "services": [ + "AVS", "AzurePolicy", - "Storage", - "AVS" + "Storage" ], "severity": "Medium", "subcategory": "Automated Scale", @@ -7546,8 +7546,8 @@ "guid": "e52d1615-9cc6-565c-deb6-743ed7e90f4b", "link": "Internal policy or regulatory compliance", "services": [ - "AzurePolicy", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Pre-deployment", @@ -7661,8 +7661,8 @@ "guid": "0c87f999-e517-21ef-f355-f210ad4134d2", "link": "https://docs.vmware.com/en/VMware-NSX-T-Data-Center/3.2/installation/GUID-4B3860B8-1883-48CA-B2F3-7C2205D91D6D.html", "services": [ - "VNet", - "AVS" + "AVS", + "VNet" ], "severity": "Medium", "subcategory": "Pre-deployment", @@ -7704,8 +7704,8 @@ "guid": "f2b73c4f-3d46-32c9-5df1-5b8dfcd3947f", "link": "https://azure.microsoft.com/en-ca/pricing/details/azure-vmware/#:~:text=Azure%20VMware%20Solution%20%20%20%20Instance%20size,TB%20%28all%20NVMe%29%20%20%20N%2FA%20%2Fhour%20", "services": [ - "Cost", - "AVS" + "AVS", + "Cost" ], "severity": "Medium", "subcategory": "Pre-deployment", @@ -7762,8 +7762,8 @@ "guid": "70cfbddc-d3d4-9188-77c8-1cabaefef646", "link": "General recommendation for storing encryption keys.", "services": [ - "AKV", - "AVS" + "AVS", + "AKV" ], "severity": "Medium", "subcategory": "Encryption", @@ -7792,9 +7792,9 @@ "guid": "8d0a8f51-8d35-19cd-c2fe-4e3512fb467e", "link": "https://docs.microsoft.com/azure/key-vault/general/authentication", "services": [ - "AKV", "ExpressRoute", - "AVS" + "AVS", + "AKV" ], "severity": "Medium", "subcategory": "Encryption", @@ -7822,8 +7822,8 @@ "guid": "9bb22fec-4d00-3b95-7136-e225d0f5c63a", "link": "https://learn.microsoft.com/azure/sentinel/overview", "services": [ - "Sentinel", - "AVS" + "AVS", + "Sentinel" ], "severity": "Medium", "subcategory": "Investigation", @@ -7852,8 +7852,8 @@ "guid": "bcdd2348-3d0e-c6bb-1092-aa4cd1a66d6b", "link": "https://docs.microsoft.com/azure/azure-vmware/azure-security-integration", "services": [ - "AzurePolicy", - "AVS" + "AVS", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Security", @@ -8007,8 +8007,8 @@ "guid": "16ab821a-27c6-b6d3-6042-10dc4d6dfcb7", "link": "https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.storage.doc/GUID-01D3CF47-A84A-4988-8103-A0487D6441AA.html", "services": [ - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8023,8 +8023,8 @@ "link": "3rd-Party tools", "services": [ "VM", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8039,8 +8039,8 @@ "link": "Contact VMware", "services": [ "VM", - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8054,8 +8054,8 @@ "guid": "efc8a311-74f8-0252-c6a0-4bac7610e266", "link": "Contact VMware", "services": [ - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8069,8 +8069,8 @@ "guid": "ab6c89cd-a26f-b894-fe59-61863975458e", "link": "Contact VMware", "services": [ - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8084,10 +8084,10 @@ "guid": "7628d446-6b10-9678-9cec-f407d990de43", "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance", "services": [ - "AzurePolicy", "VM", - "Storage", - "AVS" + "AVS", + "AzurePolicy", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8101,10 +8101,10 @@ "guid": "37fef358-7ab9-43a9-542c-22673955200e", "link": "https://learn.microsoft.com/azure/azure-vmware/configure-storage-policy", "services": [ - "AzurePolicy", "VM", - "Storage", - "AVS" + "AVS", + "AzurePolicy", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8118,9 +8118,9 @@ "guid": "ebebd109-9f9d-d85e-1b2f-d302012843b7", "link": "https://learn.microsoft.com/azure/azure-vmware/concepts-storage#storage-policies-and-fault-tolerance", "services": [ + "AVS", "AzurePolicy", - "Storage", - "AVS" + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8134,8 +8134,8 @@ "guid": "1be821bd-4f37-216a-3e3d-2a5ac6996863", "link": "https://learn.microsoft.com/azure/azure-vmware/netapp-files-with-azure-vmware-solution", "services": [ - "Storage", - "AVS" + "AVS", + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -8149,8 +8149,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "AKV", - "Backup" + "Backup", + "AKV" ], "severity": "High", "subcategory": "Deployment best practices", @@ -8164,8 +8164,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance", "service": "Key Vault", "services": [ - "AKV", - "ACR" + "ACR", + "AKV" ], "severity": "Medium", "subcategory": "High Availability", @@ -8193,8 +8193,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions", "service": "Key Vault", "services": [ - "AKV", - "AzurePolicy" + "AzurePolicy", + "AKV" ], "severity": "Medium", "subcategory": "High Availability", @@ -8208,11 +8208,11 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations", "service": "Key Vault", "services": [ - "AKV", "Subscriptions", - "Storage", "Backup", - "ASR" + "Storage", + "ASR", + "AKV" ], "severity": "Medium", "subcategory": "Business continuity and disaster recovery", @@ -8226,8 +8226,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview", "service": "Key Vault", "services": [ - "AKV", - "ASR" + "ASR", + "AKV" ], "severity": "High", "subcategory": "Business continuity and disaster recovery", @@ -8241,8 +8241,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview", "service": "Key Vault", "services": [ - "AKV", - "ASR" + "ASR", + "AKV" ], "severity": "Low", "subcategory": "Business continuity and disaster recovery", @@ -8256,9 +8256,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations", "service": "Key Vault", "services": [ - "AKV", + "ASR", "Backup", - "ASR" + "AKV" ], "severity": "Low", "subcategory": "Business continuity and disaster recovery", @@ -8272,9 +8272,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations", "service": "Key Vault", "services": [ - "AKV", + "ASR", "Backup", - "ASR" + "AKV" ], "severity": "Low", "subcategory": "Business continuity and disaster recovery", @@ -8288,9 +8288,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection", "service": "Key Vault", "services": [ + "ASR", "EventHubs", - "AKV", - "ASR" + "AKV" ], "severity": "Medium", "subcategory": "Business continuity and disaster recovery", @@ -8535,8 +8535,8 @@ "guid": "c851fd44-7cf1-459c-95a4-f6455d75a981", "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/approaches/cost-management-allocation", "services": [ - "Cost", - "Monitor" + "Monitor", + "Cost" ], "severity": "Medium", "subcategory": "Cost Optimization", @@ -8743,9 +8743,9 @@ "guid": "74faa19b-f39d-495d-94c7-c8919ca1f6d5", "link": "https://learn.microsoft.com/azure/reliability/reliability-traffic-manager?toc=%2Fazure%2Fdns%2Ftoc.json", "services": [ + "ASR", "DNS", - "TrafficManager", - "ASR" + "TrafficManager" ], "severity": "Medium", "subcategory": "Azure DNS", @@ -8771,8 +8771,8 @@ "guid": "f7b95e06-e154-4e2a-a359-2828e6e20517", "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover", "services": [ - "DNS", - "ASR" + "ASR", + "DNS" ], "severity": "Medium", "subcategory": "Azure DNS Resolver", @@ -8800,8 +8800,8 @@ "link": "https://www.windows-active-directory.com/azure-ad-dns-for-custom-domain-names-with-advanced-dns-settings.html", "services": [ "DNS", - "Entra", - "VM" + "VM", + "Entra" ], "severity": "Medium", "subcategory": "VM Based DNS Service", @@ -8888,8 +8888,8 @@ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet", "service": "App Gateway", "services": [ - "VNet", - "AppGW" + "AppGW", + "VNet" ], "severity": "Medium", "subcategory": "App Gateway", @@ -8905,12 +8905,12 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "App Gateway", "services": [ - "WAF", - "AppGW", "VNet", - "NVA", "Subscriptions", - "Entra" + "NVA", + "AppGW", + "Entra", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -8971,8 +8971,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "Front Door", "services": [ - "WAF", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -8988,10 +8988,10 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "service": "Front Door", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "FrontDoor", - "AppGW" + "WAF", + "FrontDoor" ], "severity": "Medium", "subcategory": "App delivery", @@ -9055,8 +9055,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings", "service": "Front Door", "services": [ - "WAF", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "High", @@ -9164,9 +9164,9 @@ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates", "service": "Front Door", "services": [ + "FrontDoor", "AKV", - "Cost", - "FrontDoor" + "Cost" ], "severity": "High", "subcategory": "Front Door", @@ -9257,8 +9257,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection", "service": "Front Door", "services": [ - "WAF", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "High", @@ -9381,8 +9381,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "High", "subcategory": "App Gateway", @@ -9397,9 +9397,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection", "service": "App Gateway", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "AppGW" + "WAF" ], "severity": "High", "subcategory": "App Gateway", @@ -9414,8 +9414,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "High", "subcategory": "App Gateway", @@ -9431,9 +9431,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings", "service": "App Gateway", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "AppGW" + "WAF" ], "severity": "High", "subcategory": "App Gateway", @@ -9447,8 +9447,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -9462,8 +9462,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -9489,8 +9489,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -9504,8 +9504,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -9519,8 +9519,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -9549,8 +9549,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel", "service": "App Gateway", "services": [ - "WAF", "AppGW", + "WAF", "Sentinel" ], "severity": "Medium", @@ -9566,8 +9566,8 @@ "service": "Front Door", "services": [ "WAF", - "FrontDoor", - "Sentinel" + "Sentinel", + "FrontDoor" ], "severity": "Medium", "subcategory": "Front Door", @@ -9581,8 +9581,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -9596,8 +9596,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview", "service": "App Gateway", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "subcategory": "App Gateway", @@ -9611,8 +9611,8 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway", "service": "App Gateway", "services": [ - "VPN", "ExpressRoute", + "VPN", "AppGW", "VNet" ], @@ -9850,8 +9850,8 @@ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/", "service": "Windows AD", "services": [ - "Entra", - "VM" + "VM", + "Entra" ], "severity": "Medium", "subcategory": "Windows Server AD", @@ -9934,8 +9934,8 @@ "guid": "338ee253-c17d-432e-aaaa-b7571549ab81", "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters#availability-zones", "services": [ - "ServiceBus", - "ACR" + "ACR", + "ServiceBus" ], "severity": "High", "subcategory": "Best Practices", @@ -9949,9 +9949,9 @@ "guid": "53d89f89-d17b-484b-93b5-a67f7b9ed5b3", "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-outages-disasters#geo-disaster-recovery", "services": [ - "ServiceBus", "ASR", - "Storage" + "Storage", + "ServiceBus" ], "severity": "Medium", "subcategory": "Geo-Disaster Recovery", @@ -9965,9 +9965,9 @@ "guid": "1f38c403-a822-4c24-93cf-0f18ac699ef1", "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-federation-overview", "services": [ - "ServiceBus", "ASR", - "ACR" + "ACR", + "ServiceBus" ], "severity": "Medium", "subcategory": "Geo-Disaster Recovery", @@ -9981,8 +9981,8 @@ "guid": "d5a83de4-de32-4c18-a147-0607c5c0e4e6", "link": "https://learn.microsoft.com/azure/architecture/best-practices/data-partitioning-strategies#partitioning-azure-service-bus", "services": [ - "ServiceBus", - "Storage" + "Storage", + "ServiceBus" ], "severity": "Medium", "subcategory": "Best Practices", @@ -10022,8 +10022,8 @@ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist", "services": [ "PrivateLink", - "ServiceBus", - "Storage" + "Storage", + "ServiceBus" ], "severity": "Medium", "subcategory": "Best Practices", @@ -10062,9 +10062,9 @@ "guid": "1549ab81-53d8-49f8-ad17-b84b33b5a67f", "link": "https://learn.microsoft.com/azure/well-architected/service-guides/service-bus/reliability#checklist", "services": [ - "ServiceBus", "ASR", - "Storage" + "Storage", + "ServiceBus" ], "severity": "Medium", "subcategory": "Best Practices", @@ -10176,11 +10176,11 @@ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies", "service": "Service Bus", "services": [ + "TrafficManager", "ServiceBus", - "RBAC", "AzurePolicy", "Entra", - "TrafficManager" + "RBAC" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -10197,11 +10197,11 @@ "service": "Service Bus", "services": [ "ServiceBus", - "AKV", - "Storage", - "VM", "AppSvc", - "Entra" + "VM", + "Storage", + "Entra", + "AKV" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -10220,8 +10220,8 @@ "ServiceBus", "Subscriptions", "Storage", - "RBAC", - "Entra" + "Entra", + "RBAC" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -10237,9 +10237,9 @@ "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference", "service": "Service Bus", "services": [ + "Monitor", "VNet", - "ServiceBus", - "Monitor" + "ServiceBus" ], "severity": "Medium", "subcategory": "Monitoring", @@ -10256,8 +10256,8 @@ "service": "Service Bus", "services": [ "PrivateLink", - "ServiceBus", - "VNet" + "VNet", + "ServiceBus" ], "severity": "Medium", "subcategory": "Networking", @@ -10350,9 +10350,9 @@ "guid": "676f6951-0368-49e9-808d-c33a692c9a64", "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/sql-database-security-baseline#br-2-encrypt-backup-data", "services": [ - "AKV", + "SQL", "Backup", - "SQL" + "AKV" ], "severity": "Medium", "subcategory": "Azure Key Vault", @@ -10366,9 +10366,9 @@ "guid": "e2518261-b3bc-4bd1-b331-637fb2df833f", "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/sql-database-security-baseline#br-1-ensure-regular-automated-backups", "services": [ + "SQL", "Backup", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": "Backup", @@ -10382,9 +10382,9 @@ "guid": "f8c7cda2-3ed7-43fb-a100-85dcd12a0ee4", "link": "https://learn.microsoft.com/azure/azure-sql/database/automated-backups-overview?tabs=single-database&view=azuresql#backup-storage-redundancy", "services": [ + "SQL", "Backup", - "Storage", - "SQL" + "Storage" ], "severity": "Low", "subcategory": "Backup", @@ -10440,9 +10440,9 @@ "guid": "4e52d73f-5d37-428f-b3a2-e6997e835979", "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-configure", "services": [ + "SQL", "EventHubs", - "Defender", - "SQL" + "Defender" ], "severity": "High", "subcategory": "Advanced Threat Protection", @@ -10456,9 +10456,9 @@ "guid": "dff87489-9edb-4cef-bdda-86e8212b2aa1", "link": "https://learn.microsoft.com/azure/azure-sql/database/azure-defender-for-sql?view=azuresql#enable-microsoft-defender-for-sql ", "services": [ + "SQL", "Subscriptions", - "Defender", - "SQL" + "Defender" ], "severity": "High", "subcategory": "Defender for Azure SQL", @@ -10472,9 +10472,9 @@ "guid": "ca342fdf-d25a-4427-b105-fcd50ff8a0ea", "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-configure", "services": [ - "Defender", + "SQL", "Monitor", - "SQL" + "Defender" ], "severity": "High", "subcategory": "Defender for Azure SQL", @@ -10488,9 +10488,9 @@ "guid": "a6101ae7-534c-45ab-86fd-b34c55ea21ca", "link": "https://learn.microsoft.com/azure/defender-for-cloud/sql-azure-vulnerability-assessment-overview", "services": [ + "SQL", "Monitor", - "Defender", - "SQL" + "Defender" ], "severity": "High", "subcategory": "Vulnerability Assessment", @@ -10504,8 +10504,8 @@ "guid": "c8c5f112-1e50-4f77-9264-8195b4cd61ac", "link": "https://learn.microsoft.com/azure/defender-for-cloud/sql-azure-vulnerability-assessment-find?view=azuresql", "services": [ - "Defender", - "SQL" + "SQL", + "Defender" ], "severity": "High", "subcategory": "Vulnerability Assessment", @@ -10533,9 +10533,9 @@ "guid": "c03ce136-e3d5-4e17-bf25-ed955ee480d3", "link": "https://learn.microsoft.com/azure/azure-sql/database/security-best-practice?view=azuresql#control-access-of-application-users-to-sensitive-data-through-encryption", "services": [ + "SQL", "AKV", - "Storage", - "SQL" + "Storage" ], "severity": "Low", "subcategory": "Column Encryption", @@ -10549,9 +10549,9 @@ "guid": "c614ac47-bebf-4061-b0a1-43e0c6b5e00d", "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-create-server", "services": [ + "SQL", "Backup", - "Storage", - "SQL" + "Storage" ], "severity": "High", "subcategory": "Transparent Data Encryption", @@ -10565,8 +10565,8 @@ "guid": "2edb4165-4f54-47cc-a891-5c82c2f21e25", "link": "https://learn.microsoft.com/azure/azure-sql/database/transparent-data-encryption-byok-overview", "services": [ - "AKV", - "SQL" + "SQL", + "AKV" ], "severity": "Medium", "subcategory": "Transparent Data Encryption", @@ -10594,8 +10594,8 @@ "guid": "c9b8b6bf-2c6b-453d-b400-de9a43a549d7", "link": "https://learn.microsoft.com/azure/azure-sql/database/authentication-aad-overview", "services": [ - "Entra", - "SQL" + "SQL", + "Entra" ], "severity": "Medium", "subcategory": "Azure Active Directory", @@ -10609,9 +10609,9 @@ "guid": "29820254-1d14-4778-ae90-ff4aeba504a3", "link": "https://learn.microsoft.com/azure/azure-sql/database/security-best-practice?view=azuresql#central-management-for-identities", "services": [ - "Entra", + "SQL", "Monitor", - "SQL" + "Entra" ], "severity": "Medium", "subcategory": "Azure Active Directory", @@ -10625,8 +10625,8 @@ "guid": "df3a09ee-03bb-4198-8637-d141acf5f289", "link": "https://learn.microsoft.com/azure/azure-sql/database/security-best-practice?view=azuresql#minimize-the-use-of-password-based-authentication-for-applications", "services": [ - "Entra", - "SQL" + "SQL", + "Entra" ], "severity": "Medium", "subcategory": "Azure Active Directory", @@ -10640,11 +10640,11 @@ "guid": "69891194-5074-4e30-8f69-4efc3c580900", "link": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/overview", "services": [ - "AKV", "SQL", "ACR", + "Entra", "RBAC", - "Entra" + "AKV" ], "severity": "Low", "subcategory": "Managed Identities", @@ -10658,8 +10658,8 @@ "guid": "88287d4a-8bb8-4640-ad78-03f51354d003", "link": "https://learn.microsoft.com/azure/azure-sql/database/authentication-aad-configure?view=azuresql&tabs=azure-powershell#active-directory-integrated-authentication", "services": [ - "Entra", - "SQL" + "SQL", + "Entra" ], "severity": "Medium", "subcategory": "Passwords", @@ -10673,8 +10673,8 @@ "guid": "0e853380-50ba-4bce-b2fd-5c7391c85ecc", "link": "https://learn.microsoft.com/azure/architecture/guide/technology-choices/multiparty-computing-service#confidential-ledger-and-azure-blob-storage", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "Medium", "subcategory": "Database Digest", @@ -10688,9 +10688,9 @@ "guid": "afefb2d3-95da-4ac9-acf5-33d18b32ef9a", "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-digest-management", "services": [ + "SQL", "AzurePolicy", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": "Database Digest", @@ -10704,8 +10704,8 @@ "guid": "f8d4ffda-8aac-4cc6-b72b-c81cb8625420", "link": "https://learn.microsoft.com/sql/relational-databases/security/ledger/ledger-database-verification", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "Medium", "subcategory": "Integrity", @@ -10747,9 +10747,9 @@ "guid": "4082e31d-35f4-4a49-8507-d3172cc930a6", "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview", "services": [ + "SQL", "AzurePolicy", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": "Auditing", @@ -10763,11 +10763,11 @@ "guid": "9b64bc50-b60f-4035-bf7a-28c4806dfb46", "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview", "services": [ + "SQL", "EventHubs", + "Backup", "Monitor", "Storage", - "SQL", - "Backup", "Entra" ], "severity": "Low", @@ -10782,11 +10782,11 @@ "guid": "fcd34708-87ac-4efc-aaf6-57a47f76644a", "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log", "services": [ + "SQL", "EventHubs", - "Monitor", "Subscriptions", - "Storage", - "SQL" + "Monitor", + "Storage" ], "severity": "Medium", "subcategory": "Auditing", @@ -10800,8 +10800,8 @@ "guid": "f96e127e-9572-453a-b325-ff89ae9f6b44", "link": "https://learn.microsoft.com/azure/azure-sql/database/auditing-overview", "services": [ - "Monitor", - "SQL" + "SQL", + "Monitor" ], "severity": "Medium", "subcategory": "SIEM/SOAR", @@ -10815,8 +10815,8 @@ "guid": "41503bf8-73da-4a10-af9f-5f7fceb5456f", "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log", "services": [ - "Monitor", - "SQL" + "SQL", + "Monitor" ], "severity": "Medium", "subcategory": "SIEM/SOAR", @@ -10830,8 +10830,8 @@ "guid": "19ec7c97-c563-4e1d-82f0-54d6ec12e754", "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log", "services": [ - "EventHubs", - "SQL" + "SQL", + "EventHubs" ], "severity": "Medium", "subcategory": "SIEM/SOAR", @@ -10861,8 +10861,8 @@ "link": "https://learn.microsoft.com/azure/azure-sql/database/connectivity-architecture", "services": [ "PrivateLink", - "AzurePolicy", - "SQL" + "SQL", + "AzurePolicy" ], "severity": "Low", "subcategory": "Connectivity", @@ -10876,8 +10876,8 @@ "guid": "f48efacf-4405-4e8d-9dd0-16c5302ed082", "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview", "services": [ - "Subscriptions", - "SQL" + "SQL", + "Subscriptions" ], "severity": "High", "subcategory": "Connectivity", @@ -10891,9 +10891,9 @@ "guid": "cb3274a7-e36d-46f6-8de5-46d30c8dde8e", "link": "https://learn.microsoft.com/sql/relational-databases/system-stored-procedures/sp-invoke-external-rest-endpoint-transact-sql", "services": [ - "EventHubs", "APIM", - "SQL" + "SQL", + "EventHubs" ], "severity": "Medium", "subcategory": "Outbound Control", @@ -10907,8 +10907,8 @@ "guid": "a566dd3d-314e-4a94-9378-102c42d82b38", "link": "https://learn.microsoft.com/azure/azure-sql/database/outbound-firewall-rule-overview", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "Medium", "subcategory": "Outbound Control", @@ -10922,11 +10922,11 @@ "guid": "246cd832-f550-4af0-9c74-ca9baeeb8860", "link": "https://learn.microsoft.com/azure/azure-sql/database/private-endpoint-overview?view=azuresql#disable-public-access-to-your-logical-server", "services": [ - "PrivateLink", "Firewall", - "Monitor", "VNet", - "SQL" + "PrivateLink", + "SQL", + "Monitor" ], "severity": "Medium", "subcategory": "Private Access", @@ -10941,8 +10941,8 @@ "link": "https://learn.microsoft.com/azure/azure-sql/database/private-endpoint-overview?view=azuresql#disable-public-access-to-your-logical-server", "services": [ "PrivateLink", - "VNet", - "SQL" + "SQL", + "VNet" ], "severity": "High", "subcategory": "Private Access", @@ -10956,9 +10956,9 @@ "guid": "8600527e-e8c4-4424-90ef-1f0dca0224f2", "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview#network-security-of-private-endpoints", "services": [ - "VNet", "PrivateLink", - "SQL" + "SQL", + "VNet" ], "severity": "Medium", "subcategory": "Private Access", @@ -10972,9 +10972,9 @@ "guid": "18123ef4-a0a6-45e3-87fe-7f454f65d975", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/connectivity-architecture-overview", "services": [ - "VNet", + "SQL", "ExpressRoute", - "SQL" + "VNet" ], "severity": "Medium", "subcategory": "Private Access", @@ -10988,9 +10988,9 @@ "guid": "55187443-6852-4fbd-99c6-ce303597ca7f", "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview?view=azuresql#ip-vs-virtual-network-firewall-rules", "services": [ - "VNet", + "SQL", "AzurePolicy", - "SQL" + "VNet" ], "severity": "High", "subcategory": "Public Access", @@ -11004,8 +11004,8 @@ "guid": "a73e32da-b3f4-4960-b5ec-2f42a557bf31", "link": "https://learn.microsoft.com/azure/azure-sql/database/network-access-controls-overview", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "Medium", "subcategory": "Public Access", @@ -11019,8 +11019,8 @@ "guid": "e0f31ac9-35c8-4bfd-9865-edb60ffc6768", "link": "https://learn.microsoft.com/azure/azure-sql/database/firewall-configure", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "Low", "subcategory": "Public Access", @@ -11034,9 +11034,9 @@ "guid": "b8435656-143e-41a8-9922-61d34edb751a", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/public-endpoint-overview", "services": [ - "VNet", + "SQL", "AzurePolicy", - "SQL" + "VNet" ], "severity": "High", "subcategory": "Public Access", @@ -11050,8 +11050,8 @@ "guid": "057dd298-8726-4aa6-b590-1f81d2e30421", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/public-endpoint-overview", "services": [ - "VNet", - "SQL" + "SQL", + "VNet" ], "severity": "High", "subcategory": "Public Access", @@ -11093,8 +11093,8 @@ "guid": "7b5b55e5-4750-4920-be97-eb726c256a5c", "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/sql-database-security-baseline#im-3-use-azure-ad-single-sign-on-sso-for-application-access", "services": [ - "Entra", - "SQL" + "SQL", + "Entra" ], "severity": "Low", "subcategory": "Permissions", @@ -11170,9 +11170,9 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk", "service": "VM", "services": [ + "SQL", "VM", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": "Virtual Machines", @@ -11429,8 +11429,8 @@ "guid": "fe237de2-43b1-46c3-8d7a-a9b7570449aa", "link": "https://learn.microsoft.com/azure/well-architected/devops/automation-infrastructure", "services": [ - "RBAC", - "ASR" + "ASR", + "RBAC" ], "severity": "Medium", "subcategory": "DevOps", @@ -11472,8 +11472,8 @@ "guid": "ced126cd-032a-4f5b-8fc6-998a535e3378", "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2", "services": [ - "Storage", - "AppGW" + "AppGW", + "Storage" ], "severity": "High", "subcategory": "Application Gateways", @@ -11501,10 +11501,10 @@ "guid": "8df03a82-2cd4-463c-abbc-8ac299ebc92a", "link": "https://learn.microsoft.com/azure/networking/disaster-recovery-dns-traffic-manager", "services": [ - "DNS", - "TrafficManager", "ASR", - "Monitor" + "DNS", + "Monitor", + "TrafficManager" ], "severity": "Low", "subcategory": "DNS", @@ -11519,9 +11519,9 @@ "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover", "service": "DNS", "services": [ + "ASR", "DNS", - "ACR", - "ASR" + "ACR" ], "severity": "Low", "subcategory": "DNS", @@ -11564,8 +11564,8 @@ "guid": "a359c373-e7dd-4616-83a3-64a907ebae48", "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", "services": [ - "ExpressRoute", - "Backup" + "Backup", + "ExpressRoute" ], "severity": "Medium", "subcategory": "ExpressRoute", @@ -11580,9 +11580,9 @@ "link": "https://learn.microsoft.com/azure/expressroute/use-s2s-vpn-as-backup-for-expressroute-privatepeering", "services": [ "Backup", - "Cost", + "ExpressRoute", "VPN", - "ExpressRoute" + "Cost" ], "severity": "Low", "subcategory": "ExpressRoute", @@ -11610,8 +11610,8 @@ "guid": "b2b38c88-6ba2-4c02-8499-114a5d3ce574", "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-standard-availability-zones", "services": [ - "LoadBalancer", - "VM" + "VM", + "LoadBalancer" ], "severity": "Low", "subcategory": "Load Balancers", @@ -11625,8 +11625,8 @@ "guid": "dccbd979-2a6b-4cca-8b5f-ea1ebf3dd95d", "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-custom-probe-overview#design-guidance", "services": [ - "LoadBalancer", - "Monitor" + "Monitor", + "LoadBalancer" ], "severity": "Low", "subcategory": "Load Balancers", @@ -11727,8 +11727,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions", "service": "CosmosDB", "services": [ - "CosmosDB", - "ACR" + "ACR", + "CosmosDB" ], "severity": "Medium", "subcategory": "High Availability", @@ -11743,8 +11743,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas", "service": "CosmosDB", "services": [ - "CosmosDB", - "ACR" + "ACR", + "CosmosDB" ], "severity": "Medium", "subcategory": "High Availability", @@ -11789,8 +11789,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore", "service": "CosmosDB", "services": [ - "CosmosDB", "Backup", + "CosmosDB", "Storage" ], "severity": "Medium", @@ -11807,8 +11807,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction", "service": "CosmosDB", "services": [ - "CosmosDB", - "Backup" + "Backup", + "CosmosDB" ], "severity": "Medium", "subcategory": "Backup Strategy", @@ -11824,8 +11824,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction", "service": "CosmosDB", "services": [ - "CosmosDB", - "Backup" + "Backup", + "CosmosDB" ], "severity": "Medium", "subcategory": "Backup Strategy", @@ -11839,8 +11839,8 @@ "guid": "d7e47431-76c8-4bdb-b55b-ce619e8a03f9", "link": "https://learn.microsoft.com/azure/openshift/howto-create-service-principal?pivots=aro-azurecli", "services": [ - "Entra", - "RBAC" + "RBAC", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -11879,8 +11879,8 @@ "guid": "483835c9-86bb-4291-8155-a11475e39f54", "link": "https://docs.openshift.com/container-platform/4.13/applications/projects/working-with-projects.html", "services": [ - "Entra", - "RBAC" + "RBAC", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -11893,8 +11893,8 @@ "guid": "0acccd97-9376-4bcd-a375-0ab2ab039da6", "link": "https://docs.openshift.com/container-platform/4.13/authentication/using-rbac.html", "services": [ - "Entra", - "RBAC" + "RBAC", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -11921,8 +11921,8 @@ "guid": "685e2223-ace8-4bb1-8307-ca5f16f154e3", "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-configure", "services": [ - "Entra", - "RBAC" + "RBAC", + "Entra" ], "severity": "Medium", "subcategory": "Identity", @@ -11935,12 +11935,12 @@ "guid": "aa369282-9e7e-4216-8836-87af467a1f89", "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "services": [ - "WAF", "Firewall", - "VNet", "DDoS", + "VNet", "Subscriptions", - "Entra" + "Entra", + "WAF" ], "severity": "Low", "subcategory": "DDoS", @@ -11993,8 +11993,8 @@ "link": "https://learn.microsoft.com/azure/openshift/howto-restrict-egress", "services": [ "Firewall", - "AzurePolicy", - "NVA" + "NVA", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Internet", @@ -12308,8 +12308,8 @@ "guid": "76af4a69-1e88-439a-ba46-667e13c10567", "link": "https://learn.microsoft.com/azure/openshift/howto-segregate-machinesets", "services": [ - "VNet", - "AKS" + "AKS", + "VNet" ], "severity": "Medium", "subcategory": "Cluster Design", @@ -12393,8 +12393,8 @@ "guid": "08fe8273-4c48-46ba-880d-c0591cf75ee8", "link": "https://learn.microsoft.com/azure/azure-arc/kubernetes/quickstart-connect-cluster", "services": [ - "AKS", - "Arc" + "Arc", + "AKS" ], "severity": "High", "subcategory": "Control plane", @@ -12418,9 +12418,9 @@ "guid": "d55d14c3-c492-49cb-8b3d-1325ae124ba3", "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction", "services": [ - "AKS", + "Arc", "Defender", - "Arc" + "AKS" ], "severity": "Medium", "subcategory": "Posture", @@ -12433,9 +12433,9 @@ "guid": "4d0685ed-dce9-4be3-ab0d-db3b55fb2ec1", "link": "https://learn.microsoft.com/azure/azure-arc/kubernetes/tutorial-akv-secrets-provider", "services": [ - "AKS", + "Arc", "AKV", - "Arc" + "AKS" ], "severity": "Medium", "subcategory": "Secrets", @@ -12459,8 +12459,8 @@ "guid": "b4935ada-4232-44ec-b81c-123181a64174", "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes#install-azure-policy-extension-for-azure-arc-enabled-kubernetes", "services": [ - "AzurePolicy", - "Monitor" + "Monitor", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Workload", @@ -12486,14 +12486,1006 @@ "guid": "e209d4a0-da57-4778-924d-216785d2fa56", "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link", "services": [ - "ACR", - "Subscriptions" + "Subscriptions", + "ACR" ], "severity": "Low", "subcategory": "Workload", "text": "Deploy a dedicated and private instance of Azure Container Registry to each landing zone subscription.", "waf": "Security" }, + { + "category": "Responsible AI", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Metaprompting", + "text": "Follow Metaprompting guardrails for resonsible AI", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "services": [ + "APIM", + "Entra" + ], + "severity": "High", + "subcategory": "Load Balancing", + "text": "Consider Gateway patterns with APIM or solutions like AI central for better rate limiting, load balancing, authentication and logging", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "services": [ + "Monitor" + ], + "severity": "High", + "subcategory": "Monitoring", + "text": "Enable monitoring for your AOAI instances", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "services": [ + "Subscriptions", + "Monitor", + "AKV" + ], + "severity": "High", + "subcategory": "Alerts", + "text": "Create alerts to notify teams of events such as an entry in the activity log created by an action performed on the resource, such as regenerating its subscription keys or a metric threshold such as the number of errors exceeding 10 in an hour", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "services": [ + "Monitor" + ], + "severity": "High", + "subcategory": "Monitoring", + "text": "Monitor token usage to prevent service disruptions due to capacity", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "services": [ + "Monitor" + ], + "severity": "Medium", + "subcategory": "Observability", + "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "services": [ + "APIM" + ], + "severity": "Low", + "subcategory": "Observability", + "text": "If the diagnostics are not sufficient for you, consider using a gateway such as Azure API Managements in front of Azure OpenAI to log both incoming prompts and outgoing responses, where permitted", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Infrastructure Deployment", + "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources", + "waf": "Operational Excellence" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "services": [ + "Entra" + ], + "severity": "High", + "subcategory": "Authentication", + "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key", + "waf": "Security" + }, + { + "category": "Responsible AI", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Evaluation", + "text": "Evaluate the performance/accuracy of the system with a known golden dataset which has the inputs and the correct answers. Leverage capabilities in PromptFlow for Evaluation.", + "waf": "Operational Execellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Hosting model", + "text": "Evaluate usage of Provisioned throughput model ", + "waf": "Performance" + }, + { + "category": "Responsible AI", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Content Safety", + "text": "Review and implement Azure AI content safety", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Throughput definition", + "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements", + "waf": "Performance" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Latency improvement", + "text": "Improve latency of the system by limiting token sizes, streaming options", + "waf": "Performance" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "services": [ + "Storage", + "ServiceBus" + ], + "severity": "Medium", + "subcategory": "Elasticity segregation", + "text": "Estimate elasticity demands to determine synchronous and batch request segregation based on priority. For high priority, use synchronous approach and for low priority, asynchronous batch processing with queue is preferred", + "waf": "Performance" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Benchmarking", + "text": "Benchmark token consumption requirements based on estimated demands from consumers. Consider using the Azure OpenAI benchmarking tool to help you validate the throughput if you are using Provisioned Throughput Unit deployments", + "waf": "Performance" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Elasticity ", + "text": "If you are using Provisioned Throughput Units (PTUs), consider deploying a token-per-minute (TPM) deployment for overflow requests. Use a gateway to route requests to the TPM deployment when the PTU limits are reached.", + "waf": "Performance" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Model choice", + "text": "Choose the right model for the right task. Pick models with right tradeoff between speed, quality of response and output complexity", + "waf": "Performance" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Fine tuning", + "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance", + "waf": "Performance" + }, + { + "category": "BC and DR", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "services": [ + "ACR" + ], + "severity": "Low", + "subcategory": "Multi-region architecture", + "text": "Deploy multiple OAI instances across regions", + "waf": "Reliability" + }, + { + "category": "BC and DR", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "services": [ + "APIM", + "Entra" + ], + "severity": "High", + "subcategory": "Load balancing", + "text": "Implement retry & healthchecks with Gateway pattern like APIM", + "waf": "Reliability" + }, + { + "category": "BC and DR", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Quotas", + "text": "Ensure having adequate quotas of TPM & RPM for the workload", + "waf": "Reliability" + }, + { + "category": "Responsible AI", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "UX best practice", + "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution", + "waf": "Operational Excellence" + }, + { + "category": "BC and DR", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "services": [ + "ACR" + ], + "severity": "Medium", + "subcategory": "Load balancing", + "text": "Deploy separate fine tuned models across regions if finetuning is employed", + "waf": "Reliability" + }, + { + "category": "BC and DR", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "services": [ + "ASR", + "Backup" + ], + "severity": "Medium", + "subcategory": "Data Backup and Disaster Recovery", + "text": "Regularly backup and replicate critical data to ensure data availability and recoverability in case of data loss or system failures. Leverage Azure's backup and disaster recovery services to protect your data.", + "waf": "Reliability" + }, + { + "category": "BC and DR", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "SLA considerations", + "text": "Azure AI search service tiers should be choosen to have a SLA ", + "waf": "Reliability" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "services": [], + "severity": "Low", + "subcategory": "Data Sensitivity", + "text": "Classify data and sensitivity, labeling with Microsoft Purview before generating the embeddings and make sure to treat the embeddings generated with same sensitivity and classification", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Encryption at Rest", + "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "services": [ + "ACR" + ], + "severity": "High", + "subcategory": "Transit Encryption", + "text": "Ensure TLS is enforced for data in transit across data sources, AI search used for Retrieval-Augmented Generation (RAG) and LLM communication", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "services": [ + "RBAC" + ], + "severity": "High", + "subcategory": "Access Control", + "text": "Use RBAC to manage access to Azure OpenAI services. Assign appropriate permissions to users and restrict access based on their roles and responsibilities", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Data Masking and Redaction", + "text": "Implement data encryption, masking or redaction techniques to hide sensitive data or replace it with obfuscated values in non-production environments or when sharing data for testing or troubleshooting purposes", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "services": [ + "Defender", + "Monitor", + "Sentinel" + ], + "severity": "High", + "subcategory": "Threat Detection and Monitoring", + "text": "Utilize Azure Defender to detect and respond to security threats and set up monitoring and alerting mechanisms to identify suspicious activities or breaches. Leverage Azure Sentinel for advanced threat detection and response", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "services": [ + "AzurePolicy" + ], + "severity": "Medium", + "subcategory": "Data Retention and Disposal", + "text": "Establish data retention and disposal policies to adhere to compliance regulations. Implement secure deletion methods for data that is no longer required and maintain an audit trail of data retention and disposal activities", + "waf": "Security" + }, + { + "category": "Responsible AI", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Jail break Safety", + "text": "Implement Prompt shields and groundedness detection using Content Safety ", + "waf": "Operational Excellence" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Data Privacy and Compliance", + "text": "Ensure compliance with relevant data protection regulations, such as GDPR or HIPAA, by implementing privacy controls and obtaining necessary consents or permissions for data processing activities.", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Employee Awareness and Training", + "text": "Educate your employees about data security best practices, the importance of handling data securely, and potential risks associated with data breaches. Encourage them to follow data security protocols diligently.", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Environment segregation", + "text": "Keep production data separate from development and testing data. Only use real sensitive data in production and utilize anonymized or synthetic data in development and test environments.", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Index Segregation", + "text": "If you have varying levels of data sensitivity, consider creating separate indexes for each level. For instance, you could have one index for general data and another for sensitive data, each governed by different access protocols", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "Azure OpenAI", + "services": [ + "RBAC", + "AzurePolicy" + ], + "severity": "Medium", + "subcategory": "Sensitive Data in Separate Instances", + "text": "Take segregation a step further by placing sensitive datasets in different instances of the service. Each instance can be controlled with its own specific set of RBAC policies", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Embedding and Vector handling", + "text": "Recognize that embeddings and vectors generated from sensitive information are themselves sensitive. This data should be afforded the same protective measures as the source material", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "services": [ + "RBAC" + ], + "severity": "High", + "subcategory": "Access control", + "text": "Apply RBAC to th data stores having embeddings and vectors and scope access based on role's access requirements", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "services": [ + "PrivateLink" + ], + "severity": "High", + "subcategory": "Network security", + "text": "Configure private endpoint for AI services to restrict service access within your network", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "Azure OpenAI", + "services": [ + "Firewall", + "VNet" + ], + "severity": "High", + "subcategory": "Network security", + "text": "Enforce strict inbound and outbound traffic control with Azure Firewall and UDRs and limit the external integration points", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Control Network Access", + "text": "Implement network segmentation and access controls to restrict access to the LLM application only to authorized users and systems and prevent lateral movement", + "waf": "Security" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "services": [ + "Cost" + ], + "severity": "Medium", + "subcategory": "Token Optimization", + "text": "Use prompt compression tools like LLMLingua or gprtrim", + "waf": "Cost Optimization" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "services": [ + "AKV", + "Entra" + ], + "severity": "High", + "subcategory": "Secure APIs and Endpoints", + "text": "Ensure that APIs and endpoints used by the LLM application are properly secured with authentication and authorization mechanisms, such as Managed identities, API keys or OAuth, to prevent unauthorized access.", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Implement Strong Authentication", + "text": "Enforce strong end user authentication mechanisms, such as multi-factor authentication, to prevent unauthorized access to the LLM application and associated network resources", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "Azure OpenAI", + "services": [ + "Monitor" + ], + "severity": "Medium", + "subcategory": "Use Network Monitoring", + "text": "Implement network monitoring tools to detect and analyze network traffic for any suspicious or malicious activities. Enable logging to capture network events and facilitate forensic analysis in case of security incidents", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Security Audits and Penetration Testing", + "text": "Conduct security audits and penetration testing to identify and address any network security weaknesses or vulnerabilities in the LLM application's network infrastructure", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "services": [], + "severity": "Low", + "subcategory": "Infrastructure Deployment", + "text": "Azure AI Services are properly tagged for better management", + "waf": "Operational Excellence" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "services": [], + "severity": "Low", + "subcategory": "Infrastructure Deployment", + "text": "Azure AI Service accounts follows organizational naming conventions", + "waf": "Operational Excellence" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Diagnostics Logging", + "text": "Diagnostic logs in Azure AI services resources should be enabled", + "waf": "Operational Excellence" + }, + { + "category": "Identity and Access Management", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "services": [ + "Entra" + ], + "severity": "High", + "subcategory": "Entra ID based access", + "text": "Key access (local authentication) is recommended to be disabled for security. After disabling key based access, Microsoft Entra ID becomes the only access method, which allows maintaining minimum privilege principle and granular control. ", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "services": [ + "AKV", + "Entra" + ], + "severity": "High", + "subcategory": "Secure Key Management", + "text": "Store and manage keys securely using Azure Key Vault. Avoid hard-coding or embedding sensitive keys within your LLM application's code and retrieve them securely from Azure Key Vault using managed identities", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "services": [ + "AKV" + ], + "severity": "High", + "subcategory": "Key Rotation and Expiration", + "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.", + "waf": "Security" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "services": [ + "Cost" + ], + "severity": "High", + "subcategory": "Token Optimization", + "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode", + "waf": "Cost Optimization" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Secure coding practice", + "text": "Follow secure coding practices to prevent common vulnerabilities such as injection attacks, cross-site scripting (XSS), or security misconfigurations", + "waf": "Security" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "services": [], + "severity": "High", + "subcategory": "Patching and updates", + "text": "Setup a process to regularly update and patch the LLM libraries and other system components", + "waf": "Security" + }, + { + "category": "Responsible AI", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "services": [ + "AzurePolicy" + ], + "severity": "High", + "subcategory": "Governance", + "text": "Adhere to Azure OpenAI or other LLMs terms of use, policies and guidance and allowed use cases", + "waf": "Operational Excellence" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "services": [ + "Cost" + ], + "severity": "Medium", + "subcategory": "Cost familiarization", + "text": "Understand difference in cost of base models and fine tuned models and token step sizes", + "waf": "Cost Optimization" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "services": [ + "Cost" + ], + "severity": "High", + "subcategory": "Batch processing", + "text": "Batch requests, where possible, to minimize the per-call overhead which can reduce overall costs. Ensure you optimize batch size", + "waf": "Cost Optimization" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "services": [ + "Monitor", + "Cost" + ], + "severity": "Medium", + "subcategory": "Cost monitoring", + "text": "Set up a cost tracking system that monitors model usage and use that information to help inform model choices and prompt sizes", + "waf": "Cost Optimization" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "services": [ + "Cost" + ], + "severity": "Medium", + "subcategory": "Token limit", + "text": "Set a maximum limit on the number of tokens per model response. Optimize the size to ensure it is large enough for a valid response", + "waf": "Cost Optimization" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "AI Search Reliability", + "text": "Review the guidance provided on setting up AI search for Reliability", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "services": [ + "Storage" + ], + "severity": "Medium", + "subcategory": "AI Search Vector Limits", + "text": "Plan and manage AI Search Vector storage", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "DevOps", + "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications", + "waf": "Operational Excellence" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "services": [ + "Cost" + ], + "severity": "High", + "subcategory": "Costing Model", + "text": "Evaluate usage of billing models - PAYG vs PTU", + "waf": "Cost Optimization" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "DevOps", + "text": "Evaluate the quality of prompts and applications when switching between model versions", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "services": [ + "Monitor" + ], + "severity": "Medium", + "subcategory": "Development", + "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Development", + "text": "Evaluate your Azure AI Search results based on different search parameters", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Development", + "text": "Look at fine tuning models as way of increasing accuracy only when you have tried other basic approaches like prompt engineering and RAG with your data", + "waf": "Operational Excellence" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Development", + "text": "Use prompt engineering techniques to improve the accuracy of LLM responses", + "waf": "Operational Excellence" + }, + { + "category": "Governance and Security", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "Security Audits and Penetration Testing", + "text": "Red team your GenAI applications", + "waf": "Security" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "services": [], + "severity": "Medium", + "subcategory": "End user feedback", + "text": "Provide end users with scoring options for LLM responses and track these scores. ", + "waf": "Operational Excellence" + }, + { + "category": "Cost Optimization", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "services": [ + "Cost" + ], + "severity": "High", + "subcategory": "Quota Management", + "text": "Consider Quota management practices", + "waf": "Cost Optimization" + }, + { + "category": "Operations Management", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "services": [ + "APIM", + "ACR", + "LoadBalancer", + "Entra" + ], + "severity": "Medium", + "subcategory": "Load Balancing", + "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions", + "waf": "Operational Excellence" + }, { "category": "Operations Management", "checklist": "Cognitive Services Review Checklist", @@ -12527,8 +13519,8 @@ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", "service": "Cognitive Services", "services": [ - "Backup", - "ASR" + "ASR", + "Backup" ], "severity": "High", "subcategory": "Backup", @@ -13085,8 +14077,8 @@ "guid": "56c57ba5-9119-4bf8-b8f5-c586c7d9cdc1", "link": "https://azure.microsoft.com/support/legal/sla/virtual-desktop/v1_0/", "services": [ - "AVD", "ASR", + "AVD", "VM", "Subscriptions" ], @@ -13102,8 +14094,8 @@ "guid": "6acc076e-f9b1-441a-a989-579e76b897e7", "link": "https://learn.microsoft.com/azure/architecture/example-scenario/wvd/azure-virtual-desktop-multi-region-bcdr", "services": [ - "AVD", "ASR", + "AVD", "VM", "Storage" ], @@ -13119,8 +14111,8 @@ "guid": "10a7da7b-e996-46e1-9d3c-4ada97cc3d13", "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery", "services": [ - "AVD", - "ASR" + "ASR", + "AVD" ], "severity": "Low", "subcategory": "Compute", @@ -13134,9 +14126,9 @@ "guid": "25ab225c-6f4e-4168-9fdd-dea8a4b7cdeb", "link": "https://techcommunity.microsoft.com/t5/azure-virtual-desktop-blog/announcing-general-availability-of-support-for-azure/ba-p/3636262", "services": [ + "ASR", "AVD", - "ACR", - "ASR" + "ACR" ], "severity": "High", "subcategory": "Compute", @@ -13150,10 +14142,10 @@ "guid": "4c61fc3f-c14e-4ea6-b69e-8d9a3eec218e", "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery", "services": [ - "AVD", - "Backup", "ASR", - "VM" + "AVD", + "VM", + "Backup" ], "severity": "Medium", "subcategory": "Compute", @@ -13168,10 +14160,10 @@ "link": "https://learn.microsoft.com/azure/site-recovery/azure-to-azure-how-to-enable-zone-to-zone-disaster-recovery", "services": [ "AVD", - "Cost", "Backup", + "VM", "ASR", - "VM" + "Cost" ], "severity": "Medium", "subcategory": "Compute", @@ -13186,10 +14178,10 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/azure-compute-gallery", "services": [ "AVD", - "Storage", - "ASR", + "ACR", "VM", - "ACR" + "Storage", + "ASR" ], "severity": "Low", "subcategory": "Dependencies", @@ -13203,8 +14195,8 @@ "guid": "fd339489-8c12-488b-9c6a-57cfb644451e", "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery", "services": [ - "AVD", - "ASR" + "ASR", + "AVD" ], "severity": "Medium", "subcategory": "Dependencies", @@ -13218,8 +14210,8 @@ "guid": "687ab077-adb5-49e5-a960-3334fdf8cc23", "link": "https://docs.microsoft.com/fslogix/manage-profile-content-cncpt", "services": [ - "AVD", "ASR", + "AVD", "Storage" ], "severity": "Medium", @@ -13235,10 +14227,10 @@ "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery", "services": [ "AVD", - "Storage", "Backup", - "ASR", - "AzurePolicy" + "AzurePolicy", + "Storage", + "ASR" ], "severity": "Medium", "subcategory": "Storage", @@ -13252,8 +14244,8 @@ "guid": "9f7547c1-746d-4c56-868a-714435bd09dd", "link": "https://docs.microsoft.com/azure/virtual-desktop/disaster-recovery", "services": [ - "AVD", "ASR", + "AVD", "Storage" ], "severity": "Medium", @@ -13268,9 +14260,9 @@ "guid": "3d4f3537-c134-46dc-9602-7a71efe1bd05", "link": "https://docs.microsoft.com/azure/backup/backup-afs", "services": [ + "ASR", "AVD", "Backup", - "ASR", "Storage" ], "severity": "Medium", @@ -13285,8 +14277,8 @@ "guid": "10d4e875-d502-4142-a795-f2b6eff34f88", "link": "https://learn.microsoft.com/azure/storage/files/files-redundancy#zone-redundant-storage", "services": [ - "AVD", "ASR", + "AVD", "Storage" ], "severity": "High", @@ -13302,10 +14294,10 @@ "link": "https://learn.microsoft.com/azure/azure-netapp-files/cross-region-replication-create-peering", "services": [ "AVD", - "Storage", + "ACR", "Backup", - "ASR", - "ACR" + "Storage", + "ASR" ], "severity": "Medium", "subcategory": "Storage", @@ -13419,8 +14411,8 @@ "guid": "829e3fec-2183-4687-a017-7a2b5945bda4", "link": "https://github.com/The-Virtual-Desktop-Team/Virtual-Desktop-Optimization-Tool", "services": [ - "AVD", - "RBAC" + "RBAC", + "AVD" ], "severity": "Low", "subcategory": "Golden Images", @@ -13478,8 +14470,8 @@ "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share", "services": [ "AVD", - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "MSIX & AppAttach", @@ -13507,8 +14499,8 @@ "guid": "66e15d4d-5a2a-4db2-a3e2-326bf225ca41", "link": "https://docs.microsoft.com/azure/virtual-desktop/app-attach-file-share", "services": [ - "AVD", "RBAC", + "AVD", "VM", "Storage" ], @@ -13905,10 +14897,10 @@ "guid": "c14aea7e-65e8-4d9a-9aec-218e6436b073", "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain", "services": [ + "Storage", "AVD", - "Entra", "VNet", - "Storage" + "Entra" ], "severity": "Medium", "subcategory": "Active Directory", @@ -13968,8 +14960,8 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#session-hosts", "services": [ "AVD", - "Entra", - "VM" + "VM", + "Entra" ], "severity": "Medium", "subcategory": "Active Directory", @@ -13999,9 +14991,9 @@ "link": "https://docs.microsoft.com/azure/storage/files/storage-files-identity-ad-ds-enable", "services": [ "AVD", - "Entra", "AzurePolicy", - "Storage" + "Storage", + "Entra" ], "severity": "High", "subcategory": "Active Directory", @@ -14031,8 +15023,8 @@ "link": "https://learn.microsoft.com/azure/storage/files/storage-files-identity-auth-hybrid-identities-enable", "services": [ "AVD", - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "Medium", "subcategory": "Microsoft Entra ID", @@ -14047,9 +15039,9 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#identity", "services": [ "AVD", - "Entra", + "Subscriptions", "VNet", - "Subscriptions" + "Entra" ], "severity": "High", "subcategory": "Requirements", @@ -14109,8 +15101,8 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/prerequisites?tabs=portal#supported-identity-scenarios", "services": [ "AVD", - "Entra", - "VM" + "VM", + "Entra" ], "severity": "High", "subcategory": "Requirements", @@ -14140,8 +15132,8 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/administrative-template", "services": [ "AVD", - "Entra", - "Monitor" + "Monitor", + "Entra" ], "severity": "Low", "subcategory": "Management", @@ -14156,8 +15148,8 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/management", "services": [ "AVD", - "VM", - "Monitor" + "Monitor", + "VM" ], "severity": "Low", "subcategory": "Management", @@ -14187,9 +15179,9 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/autoscale-scenarios", "services": [ "AVD", - "Cost", + "Monitor", "VM", - "Monitor" + "Cost" ], "severity": "Medium", "subcategory": "Management", @@ -14203,8 +15195,8 @@ "guid": "55f612fe-f215-4f0d-a956-10e7dd96bcbc", "link": "https://learn.microsoft.com/azure/virtual-desktop/start-virtual-machine-connect", "services": [ - "AVD", "Cost", + "AVD", "VM", "Monitor" ], @@ -14220,11 +15212,11 @@ "guid": "79a686ea-d971-4ea0-a9a8-1aea074c94cb", "link": "https://learn.microsoft.com/azure/virtual-desktop/start-virtual-machine-connect-faq#are-vms-automatically-deallocated-when-a-user-stops-using-them", "services": [ - "Monitor", "AVD", - "Cost", "AzurePolicy", - "VM" + "Monitor", + "VM", + "Cost" ], "severity": "Low", "subcategory": "Management", @@ -14238,14 +15230,14 @@ "guid": "51bcafca-476a-48fa-9b91-9645a7679f20", "link": "https://learn.microsoft.com/azure/virtual-desktop/tag-virtual-desktop-resources", "services": [ - "Monitor", + "VPN", "AVD", - "Cost", + "DNS", + "Monitor", "Storage", + "VWAN", "ExpressRoute", - "VPN", - "DNS", - "VWAN" + "Cost" ], "severity": "Low", "subcategory": "Management", @@ -14259,10 +15251,10 @@ "guid": "611dd68c-5a4b-4252-8e44-a59a9c2399c4", "link": "https://learn.microsoft.com/azure/virtual-desktop/azure-advisor-recommendations", "services": [ - "AVD", - "Entra", "Cost", - "Monitor" + "AVD", + "Monitor", + "Entra" ], "severity": "Low", "subcategory": "Management", @@ -14307,8 +15299,8 @@ "link": "https://docs.microsoft.com/azure/virtual-desktop/create-validation-host-pool", "services": [ "AVD", - "VM", - "Monitor" + "Monitor", + "VM" ], "severity": "Medium", "subcategory": "Management", @@ -14323,8 +15315,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/wvd/eslz-platform-automation-and-devops", "services": [ "AVD", - "VM", - "Monitor" + "Monitor", + "VM" ], "severity": "Medium", "subcategory": "Management", @@ -14370,8 +15362,8 @@ "link": "https://docs.microsoft.com/azure/virtual-desktop/diagnostics-log-analytics", "services": [ "AVD", - "VM", - "Monitor" + "Monitor", + "VM" ], "severity": "Medium", "subcategory": "Monitoring", @@ -14416,8 +15408,8 @@ "guid": "dd399cfd-7b28-4dc8-9555-6202bfe4563b", "link": "https://docs.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/", "services": [ - "AVD", "ExpressRoute", + "AVD", "NVA", "VPN" ], @@ -14434,8 +15426,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/wvd/eslz-network-topology-and-connectivity", "services": [ "AVD", - "VWAN", - "VNet" + "VNet", + "VWAN" ], "severity": "Medium", "subcategory": "Networking", @@ -14464,10 +15456,10 @@ "guid": "fc4972cd-3cd2-41bf-9703-6e5e6b4bed3d", "link": "https://docs.microsoft.com/azure/firewall/protect-windows-virtual-desktop", "services": [ - "AVD", "Firewall", - "VNet", - "NVA" + "AVD", + "NVA", + "VNet" ], "severity": "Medium", "subcategory": "Networking", @@ -14510,10 +15502,10 @@ "guid": "523181a9-4174-4158-93ff-7ae7c6d37431", "link": "https://docs.microsoft.com/azure/firewall/protect-windows-virtual-desktop", "services": [ - "AVD", "Firewall", - "VNet", - "NVA" + "AVD", + "NVA", + "VNet" ], "severity": "Low", "subcategory": "Networking", @@ -14557,11 +15549,11 @@ "guid": "ec27d589-9178-426d-8df2-ff60020f30a6", "link": "https://learn.microsoft.com/azure/storage/files/storage-files-networking-endpoints", "services": [ + "VNet", "PrivateLink", "AVD", - "VNet", - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Networking", @@ -14620,8 +15612,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/disk-encryption-overview", "services": [ "AVD", - "AKV", "VM", + "AKV", "Storage" ], "severity": "Low", @@ -14739,11 +15731,11 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#enable-microsoft-defender-for-cloud", "services": [ "AVD", - "AKV", "Subscriptions", "Defender", + "VM", "Storage", - "VM" + "AKV" ], "severity": "Medium", "subcategory": "Management", @@ -14758,8 +15750,8 @@ "link": "https://learn.microsoft.com/azure/virtual-desktop/security-guide#collect-audit-logs", "services": [ "AVD", - "Entra", - "Monitor" + "Monitor", + "Entra" ], "severity": "Medium", "subcategory": "Management", @@ -14773,9 +15765,9 @@ "guid": "baaab757-1849-4ab8-893d-c9fc9d1bb73b", "link": "https://docs.microsoft.com/azure/virtual-desktop/rbac", "services": [ + "RBAC", "AVD", - "Entra", - "RBAC" + "Entra" ], "severity": "Low", "subcategory": "Management", @@ -14850,8 +15842,8 @@ "services": [ "AVD", "ACR", - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Low", "subcategory": "Azure Files", @@ -14973,8 +15965,8 @@ "link": "https://docs.microsoft.com/azure/virtual-desktop/fslogix-containers-azure-files", "services": [ "AVD", - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "High", "subcategory": "Capacity Planning", @@ -14988,8 +15980,8 @@ "guid": "df47d2d9-2881-4b1c-b5d1-e54a29759e39", "link": "https://learn.microsoft.com/fslogix/concepts-container-types#when-to-use-profile-and-odfc-containers", "services": [ - "AVD", "ASR", + "AVD", "Storage" ], "severity": "High", @@ -15203,8 +16195,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity", "service": "ACR", "services": [ - "ACR", "RBAC", + "ACR", "Entra" ], "severity": "High", @@ -15220,8 +16212,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity", "service": "ACR", "services": [ - "ACR", "RBAC", + "ACR", "Entra" ], "severity": "High", @@ -15237,8 +16229,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli", "service": "ACR", "services": [ - "ACR", "RBAC", + "ACR", "Entra" ], "severity": "High", @@ -15285,9 +16277,9 @@ "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee", "service": "ACR", "services": [ + "PrivateLink", "EventHubs", "ACR", - "PrivateLink", "Entra" ], "severity": "High", @@ -15320,8 +16312,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/monitor-service", "service": "ACR", "services": [ - "ACR", "Monitor", + "ACR", "Entra" ], "severity": "Medium", @@ -15338,9 +16330,9 @@ "service": "ACR", "services": [ "PrivateLink", + "Firewall", "ACR", - "VNet", - "Firewall" + "VNet" ], "severity": "Medium", "subcategory": "Network Security", @@ -15387,8 +16379,8 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction", "service": "ACR", "services": [ - "ACR", - "Defender" + "Defender", + "ACR" ], "severity": "Low", "subcategory": "Network Security", @@ -15463,11 +16455,11 @@ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies", "service": "Event Hubs", "services": [ + "TrafficManager", "EventHubs", - "RBAC", "AzurePolicy", "Entra", - "TrafficManager" + "RBAC" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -15484,10 +16476,10 @@ "service": "Event Hubs", "services": [ "EventHubs", - "AKV", - "Storage", "VM", - "Entra" + "Storage", + "Entra", + "AKV" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -15503,9 +16495,9 @@ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs", "service": "Event Hubs", "services": [ + "RBAC", "EventHubs", - "Entra", - "RBAC" + "Entra" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -15521,9 +16513,9 @@ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference", "service": "Event Hubs", "services": [ + "Monitor", "EventHubs", - "VNet", - "Monitor" + "VNet" ], "severity": "Medium", "subcategory": "Monitoring", @@ -15539,9 +16531,9 @@ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service", "service": "Event Hubs", "services": [ + "PrivateLink", "EventHubs", - "VNet", - "PrivateLink" + "VNet" ], "severity": "Medium", "subcategory": "Networking", @@ -15587,8 +16579,8 @@ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones", "service": "Event Hubs", "services": [ - "EventHubs", - "ACR" + "ACR", + "EventHubs" ], "severity": "High", "subcategory": "Zone Redudancy", @@ -15617,8 +16609,8 @@ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal", "service": "Event Hubs", "services": [ - "EventHubs", - "ASR" + "ASR", + "EventHubs" ], "severity": "High", "subcategory": "Geo Redudancy", @@ -15633,8 +16625,8 @@ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview", "service": "Event Hubs", "services": [ - "EventHubs", - "ASR" + "ASR", + "EventHubs" ], "severity": "Medium", "subcategory": "Geo Redudancy", @@ -15662,8 +16654,8 @@ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models", "service": "Azure Monitor", "services": [ - "Cost", - "Monitor" + "Monitor", + "Cost" ], "severity": "Medium", "subcategory": "Azure Monitor - enforce data collection rules", @@ -15720,8 +16712,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations", "services": [ "Backup", - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Delete/archive", @@ -15735,10 +16727,10 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations", "service": "Azure Backup", "services": [ - "Backup", - "Cost", "ASR", - "Storage" + "Backup", + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Delete/archive", @@ -15752,8 +16744,8 @@ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts", "service": "Azure Monitor", "services": [ - "Cost", - "Monitor" + "Monitor", + "Cost" ], "severity": "Medium", "subcategory": "Log Analytics retention for workspaces", @@ -15768,9 +16760,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations", "service": "Azure Monitor", "services": [ - "Cost", "AzurePolicy", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Policy", @@ -15814,9 +16806,9 @@ "service": "VM", "services": [ "Backup", - "Cost", "VM", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "stopped/deallocated VMs: check disks", @@ -15831,9 +16823,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations", "service": "Storage", "services": [ - "Cost", "AzurePolicy", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "storage accounts lifecycle policy", @@ -15886,9 +16878,9 @@ "guid": "a27b765a-91be-41f3-a8ef-394c2bd463cb", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations", "services": [ - "Cost", "VM", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "DB optimization", @@ -15929,8 +16921,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "Advisor", @@ -15956,8 +16948,8 @@ "guid": "b835556d-f2bf-4e45-93b0-d834a348726d", "link": "https://learn.microsoft.com/azure/governance/policy/overview", "services": [ - "Cost", - "Monitor" + "Monitor", + "Cost" ], "severity": "Medium", "subcategory": "Automation", @@ -15996,8 +16988,8 @@ "guid": "733be2a1-a27b-4765-a91b-e1f388ef394c", "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Baseline", @@ -16010,8 +17002,8 @@ "guid": "2bd463cb-bac7-4581-a59b-b91a3ed90cae", "link": "https://learn.microsoft.com/azure/governance/policy/overview", "services": [ - "Cost", - "AzurePolicy" + "AzurePolicy", + "Cost" ], "severity": "Medium", "subcategory": "Baseline", @@ -16144,10 +17136,10 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations", "service": "VM", "services": [ + "SQL", "VM", - "Cost", "AzurePolicy", - "SQL" + "Cost" ], "severity": "Medium", "subcategory": "check AHUB is applied to all Windows VMs, RHEL and SQL", @@ -16175,8 +17167,8 @@ "guid": "a76af4a6-91e8-4839-ada4-6667e13c1056", "link": "https://learn.microsoft.com/azure/active-directory/roles/security-planning#identify-microsoft-accounts-in-administrative-roles-that-need-to-be-switched-to-work-or-school-accounts", "services": [ - "Cost", - "AppSvc" + "AppSvc", + "Cost" ], "severity": "Medium", "subcategory": "Functions", @@ -16190,8 +17182,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "Planning", @@ -16207,8 +17199,8 @@ "service": "VM", "services": [ "ARS", - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "Reservations/savings plans", @@ -16248,8 +17240,8 @@ "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview", "service": "VM", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Reserve storage", @@ -16263,8 +17255,8 @@ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/identity/adds-extend-domain", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "Reserve VMs with normalized and rationalized sizes", @@ -16278,9 +17270,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy", "service": "Azure SQL", "services": [ - "Cost", + "SQL", "AzurePolicy", - "SQL" + "Cost" ], "severity": "Medium", "subcategory": "SQL Database AHUB", @@ -16294,9 +17286,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices", "service": "VM", "services": [ - "Cost", + "SQL", "VM", - "SQL" + "Cost" ], "severity": "Medium", "subcategory": "SQL Database Reservations", @@ -16322,8 +17314,8 @@ "guid": "d3b475a5-c7ac-4be4-abbe-64dd89f2e877", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access-landing-zones#rbac-recommendations", "services": [ - "Cost", - "AzurePolicy" + "AzurePolicy", + "Cost" ], "severity": "Medium", "subcategory": "Tracking", @@ -16336,8 +17328,8 @@ "guid": "78468d55-a785-4c6f-b96c-96ad8844cf3b", "link": "https://learn.microsoft.com/azure/active-directory/privileged-identity-management/pim-create-roles-and-resource-roles-review", "services": [ - "Cost", - "AzurePolicy" + "AzurePolicy", + "Cost" ], "severity": "Medium", "subcategory": "Automation", @@ -16350,8 +17342,8 @@ "guid": "2b38c886-ba2c-4021-9990-14a5d3ce574d", "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs", "services": [ - "Cost", - "AzurePolicy" + "AzurePolicy", + "Cost" ], "severity": "Medium", "subcategory": "Automation", @@ -16365,8 +17357,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "Autoscale", @@ -16450,9 +17442,9 @@ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination", "service": "Databricks", "services": [ + "VM", "LoadBalancer", - "Cost", - "VM" + "Cost" ], "severity": "Medium", "subcategory": "Databricks", @@ -16496,8 +17488,8 @@ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview", "service": "Azure Functions", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Functions", @@ -16583,8 +17575,8 @@ "service": "Front Door", "services": [ "EventHubs", - "Cost", - "FrontDoor" + "FrontDoor", + "Cost" ], "severity": "Medium", "subcategory": "Networking", @@ -16598,9 +17590,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor", "service": "Front Door", "services": [ - "Cost", "AppSvc", - "FrontDoor" + "FrontDoor", + "Cost" ], "severity": "Medium", "subcategory": "Networking", @@ -16640,8 +17632,8 @@ "link": "https://learn.microsoft.com/azure/architecture/best-practices/monitoring", "service": "Storage", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Storage", @@ -16655,8 +17647,8 @@ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings", "service": "VM", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Storage", @@ -16670,8 +17662,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration", "service": "Storage", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Storage", @@ -16685,8 +17677,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift", "service": "Storage", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Storage", @@ -16700,9 +17692,9 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview", "service": "Site Recovery", "services": [ - "Cost", "ASR", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Storage", @@ -16716,8 +17708,8 @@ "link": "https://learn.microsoft.com/azure/architecture/framework/resiliency/backup-and-recovery", "service": "Storage", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "storage", @@ -16731,8 +17723,8 @@ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview", "service": "VM", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Storage", @@ -16747,8 +17739,8 @@ "service": "Synapse", "services": [ "EventHubs", - "Cost", - "Monitor" + "Monitor", + "Cost" ], "severity": "Medium", "subcategory": "Synapse", @@ -16762,8 +17754,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability", "service": "Synapse", "services": [ - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "subcategory": "Synapse", @@ -16777,8 +17769,8 @@ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview", "service": "Synapse", "services": [ - "Cost", - "SQL" + "SQL", + "Cost" ], "severity": "Medium", "subcategory": "Synapse", @@ -16835,8 +17827,8 @@ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "VM", @@ -16851,8 +17843,8 @@ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "VM", @@ -16866,8 +17858,8 @@ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "VM", @@ -16882,9 +17874,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "VM", "services": [ - "Cost", + "Monitor", "VM", - "Monitor" + "Cost" ], "severity": "Medium", "subcategory": "VM", @@ -16899,8 +17891,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "VM", "services": [ - "Cost", - "VM" + "VM", + "Cost" ], "severity": "Medium", "subcategory": "VM", @@ -17305,8 +18297,8 @@ "service": "APIM", "services": [ "APIM", - "Entra", - "FrontDoor" + "FrontDoor", + "Entra" ], "severity": "Medium", "subcategory": "Connectivity", @@ -17336,9 +18328,9 @@ "service": "APIM", "services": [ "APIM", - "Entra", + "Monitor", "VNet", - "Monitor" + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -17353,9 +18345,9 @@ "service": "APIM", "services": [ "APIM", - "Entra", + "PrivateLink", "VNet", - "PrivateLink" + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -17542,9 +18534,9 @@ "service": "APIM", "services": [ "APIM", - "Entra", "AppGW", - "WAF" + "WAF", + "Entra" ], "severity": "High", "subcategory": "Network", @@ -17558,8 +18550,8 @@ "guid": "1fc3fc14-eea6-4e69-b8d9-a3eec218e687", "link": "https://learn.microsoft.com/sql/dma/dma-sku-recommend-sql-db?view=sql-server-ver16", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "High", "subcategory": "VM Size", @@ -17573,8 +18565,8 @@ "guid": "e04abe1f-8d39-4fda-9776-8424c116775c", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-vm-size?view=azuresql#memory-optimized", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "Medium", "subcategory": "VM Size", @@ -17588,9 +18580,9 @@ "guid": "2ea55b56-ad48-4408-be72-734b476ba18f", "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance#counters-to-measure-application-performance-requirements", "services": [ + "SQL", "VM", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -17604,8 +18596,8 @@ "guid": "dbf590ce-65de-48e0-9f9c-cbd468266abc", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "High", "subcategory": "Storage", @@ -17619,8 +18611,8 @@ "guid": "e6a84de5-df43-4d19-a248-1718d5d1e5f6", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "High", "subcategory": "Storage", @@ -17634,9 +18626,9 @@ "guid": "25659d35-58fd-4772-99c9-31112d027fe4", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ - "Cost", + "SQL", "Storage", - "SQL" + "Cost" ], "severity": "High", "subcategory": "Storage", @@ -17650,9 +18642,9 @@ "guid": "12f70983-f630-4472-8ee6-9d6b5c2622f5", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ + "SQL", "VM", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -17666,9 +18658,9 @@ "guid": "4b69bad3-4aad-45e8-a78e-1d76667313c4", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ + "SQL", "VM", - "Storage", - "SQL" + "Storage" ], "severity": "High", "subcategory": "Storage", @@ -17682,9 +18674,9 @@ "guid": "05674b5e-985b-4859-a773-e7e261623b77", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ + "SQL", "AzurePolicy", - "Storage", - "SQL" + "Storage" ], "severity": "High", "subcategory": "Storage", @@ -17698,9 +18690,9 @@ "guid": "5a917e1f-348e-4f35-9c27-d42e8bbac868", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ + "SQL", "VM", - "Storage", - "SQL" + "Storage" ], "severity": "High", "subcategory": "Storage", @@ -17714,8 +18706,8 @@ "guid": "155abb91-63e9-4908-ae28-c84c33b6b780", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql#storage", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "High", "subcategory": "Storage", @@ -17729,8 +18721,8 @@ "guid": "8b9fe5c4-2049-4d41-9a92-3c3474d11028", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/business-continuity-high-availability-disaster-recovery-hadr-overview?view=azuresql#azure-only-disaster-recovery-solutions", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "Medium", "subcategory": "HADR", @@ -17744,8 +18736,8 @@ "guid": "ac6aae01-e6a8-44de-9df4-3d1992481718", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/business-continuity-high-availability-disaster-recovery-hadr-overview?view=azuresql#high-availability-nodes-in-an-availability-set", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "High", "subcategory": "HADR", @@ -17759,10 +18751,10 @@ "guid": "d5d1e5f6-2565-49d3-958f-d77249c93111", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/availability-group-azure-portal-configure?view=azuresql&tabs=azure-cli", "services": [ - "VNet", - "LoadBalancer", + "SQL", "VM", - "SQL" + "LoadBalancer", + "VNet" ], "severity": "Medium", "subcategory": "HADR", @@ -17805,10 +18797,10 @@ "guid": "667313c4-0567-44b5-b985-b859c773e7e2", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/availability-group-vnn-azure-load-balancer-configure?view=azuresql-vm&tabs=ilb", "services": [ - "VNet", - "LoadBalancer", + "SQL", "VM", - "SQL" + "LoadBalancer", + "VNet" ], "severity": "High", "subcategory": "HADR", @@ -17822,8 +18814,8 @@ "guid": "61623b77-5a91-47e1-b348-ef354c27d42e", "link": "https://learn.microsoft.com/sql/relational-databases/data-compression/data-compression?view=sql-server-ver16", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "Low", "subcategory": "SQL Server", @@ -17837,8 +18829,8 @@ "guid": "8bbac868-155a-4bb9-863e-9908ae28c84c", "link": "https://learn.microsoft.com/sql/relational-databases/databases/database-instant-file-initialization?view=sql-server-ver16", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "High", "subcategory": "SQL Server", @@ -17866,9 +18858,9 @@ "guid": "b824546c-e1ae-4e34-93ae-c8239248725d", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/performance-guidelines-best-practices-checklist?view=azuresql-vm#sql-server-features", "services": [ + "SQL", "VM", - "Storage", - "SQL" + "Storage" ], "severity": "Low", "subcategory": "SQL Server", @@ -17882,8 +18874,8 @@ "guid": "d68c5b5c-2925-4394-a69a-9d2799c42bb6", "link": "https://learn.microsoft.com/sql/database-engine/configure-windows/server-memory-server-configuration-options#use-", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "High", "subcategory": "SQL Server", @@ -17897,8 +18889,8 @@ "guid": "8d1d7555-6246-4b43-a563-b4dc74a748b6", "link": "https://learn.microsoft.com/sql/database-engine/configure-windows/enable-the-lock-pages-in-memory-option-windows", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "High", "subcategory": "SQL Server", @@ -17912,8 +18904,8 @@ "guid": "633ad2a0-916a-4664-a8fa-d0e278ee293c", "link": "https://learn.microsoft.com/sql/relational-databases/performance/monitoring-performance-by-using-the-query-store", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "Low", "subcategory": "SQL Server", @@ -17927,8 +18919,8 @@ "guid": "1bc352ba-aab7-4571-a49a-b8093dc9ec9d", "link": "https://learn.microsoft.com/sql/relational-databases/databases/tempdb-database#optimizing-tempdb-performance-in-sql-server", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "High", "subcategory": "SQL Server", @@ -17942,8 +18934,8 @@ "guid": "1bb73b36-a5a6-47fb-a9ed-5b35478c3479", "link": "https://docs.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---require-authorization", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "High", "subcategory": "SQL Server", @@ -17957,8 +18949,8 @@ "guid": "816b2863-cffe-41ca-a599-ef0d5a73dd4c", "link": "https://docs.microsoft.com/azure/governance/management-groups/how-to/protect-resource-hierarchy#setting---require-authorization", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "Medium", "subcategory": "SQL Server", @@ -17972,10 +18964,10 @@ "guid": "e36c1c81-770a-4fbc-9c0d-43918648d285", "link": "https://learn.microsoft.com/azure/virtual-machines/constrained-vcpu", "services": [ - "Cost", + "SQL", "VM", "Storage", - "SQL" + "Cost" ], "severity": "Low", "subcategory": "Cost Optimization", @@ -17990,8 +18982,8 @@ "guid": "7ed67178-b824-4546-ae1a-ee3453aec823", "link": "https://azure.microsoft.com/en-ca/pricing/hybrid-benefit/", "services": [ - "Cost", - "SQL" + "SQL", + "Cost" ], "severity": "Low", "subcategory": "Cost Optimization", @@ -18005,8 +18997,8 @@ "guid": "9248725d-d68c-45b5-a292-5394a69a9d27", "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/sql-agent-extension-automatic-registration-all-vms?view=azuresql-vm&tabs=azure-cli", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "Medium", "subcategory": "Azure", @@ -18021,8 +19013,8 @@ "guid": "99c42bb6-8d1d-4755-9624-6b438563b4dc", "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "High", "subcategory": "Azure", @@ -18036,9 +19028,9 @@ "guid": "74a748b6-633a-4d2a-8916-a66498fad0e2", "link": "https://learn.microsoft.com/azure/defender-for-cloud/secure-score-security-controls", "services": [ + "SQL", "VM", - "Defender", - "SQL" + "Defender" ], "severity": "High", "subcategory": "Azure", @@ -18053,8 +19045,8 @@ "guid": "78ee293c-1bc3-452b-aaab-7571849ab809", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/transact-sql-tsql-differences-sql-server?view=azuresql", "services": [ - "EventHubs", - "SQL" + "SQL", + "EventHubs" ], "severity": "High", "subcategory": "Pre Migration", @@ -18160,8 +19152,8 @@ "guid": "c9a7f821-b8eb-48c0-aa77-e25e4d5aeaa8", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/vnet-existing-add-subnet?view=azuresql-mi", "services": [ - "VNet", - "SQL" + "SQL", + "VNet" ], "severity": "Medium", "subcategory": "Pre Migration", @@ -18176,8 +19168,8 @@ "guid": "dc4e2436-bb33-46d7-85f1-7960eee0b9b5", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/vnet-subnet-determine-size?view=azuresql-mi", "services": [ - "VNet", - "SQL" + "SQL", + "VNet" ], "severity": "High", "subcategory": "Deployment", @@ -18296,8 +19288,8 @@ "guid": "829e3eec-2183-4687-a007-7a2b5945bda4", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/tde-certificate-migrate?view=azuresql-mi&tabs=azure-powershell", "services": [ - "VM", - "SQL" + "SQL", + "VM" ], "severity": "Medium", "subcategory": "Deployment", @@ -18311,8 +19303,8 @@ "guid": "3334fdf9-1c23-4418-8b65-275269440b4b", "link": "https://learn.microsoft.com/azure/azure-sql/migration-guides/managed-instance/sql-server-to-managed-instance-guide?view=azuresql-mi#backup-and-restore", "services": [ - "Backup", - "SQL" + "SQL", + "Backup" ], "severity": "Low", "subcategory": "Migration", @@ -18368,9 +19360,9 @@ "guid": "141acdce-5793-477b-adb3-751ab2ac1fad", "link": "https://learn.microsoft.com/azure/azure-sql/managed-instance/auto-failover-group-configure-sql-mi?view=azuresql&tabs=azure-portal#test-failover", "services": [ + "SQL", "EventHubs", - "LoadBalancer", - "SQL" + "LoadBalancer" ], "severity": "High", "subcategory": "Post Migration", @@ -18384,8 +19376,8 @@ "guid": "aa359272-8e6e-4205-8726-76ae46691e88", "link": "https://techcommunity.microsoft.com/t5/azure-sql-blog/storage-performance-best-practices-and-considerations-for-azure/ba-p/305525", "services": [ - "Storage", - "SQL" + "SQL", + "Storage" ], "severity": "High", "subcategory": "Post Migration", @@ -18400,10 +19392,10 @@ "guid": "35ad9422-23e1-4381-8523-081a94174158", "link": "https://learn.microsoft.com/azure/architecture/example-scenario/data/sql-managed-instance-cmk", "services": [ - "AKV", + "SQL", "Backup", - "AzurePolicy", - "SQL" + "AKV", + "AzurePolicy" ], "severity": "Low", "subcategory": "Post Migration", @@ -18434,9 +19426,9 @@ "link": "https://learn.microsoft.com/azure/azure-sql/database/long-term-retention-overview?view=azuresql-mi", "services": [ "ARS", + "SQL", "Backup", - "Storage", - "SQL" + "Storage" ], "severity": "Low", "subcategory": "Post Migration", @@ -18451,8 +19443,8 @@ "guid": "ad88408f-3727-434c-a76b-a28021459014", "link": "https://azure.microsoft.com/en-gb/pricing/hybrid-benefit/#overview", "services": [ - "Cost", - "SQL" + "SQL", + "Cost" ], "severity": "Low", "subcategory": "Post Migration", @@ -18467,8 +19459,8 @@ "guid": "65d38e53-f9cc-4bd8-9926-6acca274faa1", "link": "https://learn.microsoft.com/azure/azure-sql/database/threat-detection-overview?view=azuresql", "services": [ - "Defender", - "SQL" + "SQL", + "Defender" ], "severity": "Medium", "subcategory": "Post Migration", @@ -18697,8 +19689,8 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview", "service": "Azure Storage", "services": [ - "AzurePolicy", "Subscriptions", + "AzurePolicy", "Storage" ], "severity": "High", @@ -18759,8 +19751,8 @@ "link": "https://learn.microsoft.com/azure/storage/common/authorize-data-access", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -18774,9 +19766,9 @@ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6", "service": "Azure Storage", "services": [ - "Entra", "RBAC", - "Storage" + "Storage", + "Entra" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -18791,8 +19783,8 @@ "link": "https://learn.microsoft.com/azure/storage/common/storage-sas-overview?toc=%2Fazure%2Fstorage%2Fblobs%2Ftoc.json#best-practices-when-using-sas", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -18807,8 +19799,8 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key", "service": "Azure Storage", "services": [ - "AKV", "Monitor", + "AKV", "Storage", "Entra" ], @@ -18825,9 +19817,9 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity", "service": "Azure Storage", "services": [ - "AKV", - "AzurePolicy", "Monitor", + "AzurePolicy", + "AKV", "Storage" ], "severity": "High", @@ -18843,8 +19835,8 @@ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy", "service": "Azure Storage", "services": [ - "AKV", "AzurePolicy", + "AKV", "Storage", "Entra" ], @@ -18861,9 +19853,9 @@ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy", "service": "Azure Storage", "services": [ - "Entra", "AzurePolicy", - "Storage" + "Storage", + "Entra" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -18878,10 +19870,10 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy", "service": "Azure Storage", "services": [ - "Entra", "AzurePolicy", "AKV", - "Storage" + "Storage", + "Entra" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -18911,8 +19903,8 @@ "link": "https://learn.microsoft.com/azure/architecture/framework/security/design-storage-keys", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -18927,9 +19919,9 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature", "service": "Azure Storage", "services": [ - "Entra", "AzurePolicy", - "Storage" + "Storage", + "Entra" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -18944,8 +19936,8 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -18960,8 +19952,8 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/create-account-sas", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -18975,8 +19967,8 @@ "guid": "348b263e-6dd6-4051-8a36-498f6dbad38e", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "Low", "subcategory": "Identity and Access Management", @@ -18991,9 +19983,9 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model", "service": "Azure Storage", "services": [ - "Entra", "RBAC", - "Storage" + "Storage", + "Entra" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -19007,8 +19999,8 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-known-issues#authentication-and-authorization", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "Medium", "subcategory": "Identity and Access Management", @@ -19082,8 +20074,8 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/anonymous-read-access-configure?tabs=portal#allow-or-disallow-public-read-access-for-a-storage-account", "service": "Azure Storage", "services": [ - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "High", "subcategory": "Identity and Access Management", @@ -19179,8 +20171,8 @@ "guid": "aa359271-8e6e-4205-8725-769e46691e88", "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-subscription-and-service-limits", "services": [ - "Entra", - "Arc" + "Arc", + "Entra" ], "severity": "Medium", "subcategory": "Capacity Planning", @@ -19194,8 +20186,8 @@ "guid": "deace4bb-1deb-44c6-9fc3-fc14eeaa3692", "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-resource-providers", "services": [ - "Subscriptions", - "Arc" + "Arc", + "Subscriptions" ], "severity": "High", "subcategory": "General", @@ -19264,8 +20256,8 @@ "guid": "f9ccbd86-8266-4abc-a264-f9a19bf39d95", "link": "https://learn.microsoft.com/azure/azure-arc/servers/organize-inventory-servers#organize-resources-with-built-in-azure-hierarchies", "services": [ - "Subscriptions", - "Arc" + "Arc", + "Subscriptions" ], "severity": "Low", "subcategory": "Organization", @@ -19279,9 +20271,9 @@ "guid": "9bf39d95-d44c-47c8-a19c-a1f6d5215ae5", "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#identity-and-access-control", "services": [ - "Entra", + "Arc", "RBAC", - "Arc" + "Entra" ], "severity": "Medium", "subcategory": "Access", @@ -19294,8 +20286,8 @@ "guid": "14ba34d4-585e-4111-89bd-7ba012f7b94e", "link": "https://learn.microsoft.com/azure/active-directory/managed-identities-azure-resources/tutorial-windows-vm-access-nonaad", "services": [ - "AKV", "Arc", + "AKV", "Entra" ], "severity": "Low", @@ -19310,9 +20302,9 @@ "guid": "35ac9322-23e1-4380-8523-081a94174158", "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#azure-subscription-and-service-limits", "services": [ - "Entra", + "Arc", "Subscriptions", - "Arc" + "Entra" ], "severity": "High", "subcategory": "Requirements", @@ -19326,9 +20318,9 @@ "guid": "33ee7ad6-c6d3-4733-865c-7acbe44bbe60", "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#required-permissions", "services": [ - "Entra", + "Arc", "RBAC", - "Arc" + "Entra" ], "severity": "Medium", "subcategory": "Requirements", @@ -19342,9 +20334,9 @@ "guid": "9d79f2e8-7778-4424-a516-775c6fa95b96", "link": "https://learn.microsoft.com/azure/azure-arc/servers/onboard-service-principal#create-a-service-principal-for-onboarding-at-scale", "services": [ - "Entra", + "Arc", "RBAC", - "Arc" + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -19358,9 +20350,9 @@ "guid": "ad88408e-3727-434b-a76b-a28f21459013", "link": "https://learn.microsoft.com/azure/azure-arc/servers/onboard-service-principal#create-a-service-principal-for-onboarding-at-scale", "services": [ - "Entra", + "Arc", "RBAC", - "Arc" + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -19374,9 +20366,9 @@ "guid": "65d38e53-f9cc-4bd8-9826-6abca264f9a1", "link": "https://learn.microsoft.com/azure/azure-arc/servers/prerequisites#required-permissions", "services": [ - "Entra", + "Arc", "RBAC", - "Arc" + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -19390,8 +20382,8 @@ "guid": "6ee79d6b-5c2a-4364-a4b6-9bad38aad53c", "link": "https://learn.microsoft.com/azure/azure-arc/servers/plan-at-scale-deployment", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Medium", "subcategory": "Management", @@ -19405,8 +20397,8 @@ "guid": "c78e1d76-6673-457c-9496-74c5ed85b859", "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-agent#upgrade-the-agent", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "High", "subcategory": "Management", @@ -19420,9 +20412,9 @@ "guid": "c7733be2-a1a2-47b7-95a9-1be1f388ff39", "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-vm-extensions", "services": [ - "AzurePolicy", + "Arc", "Monitor", - "Arc" + "AzurePolicy" ], "severity": "Medium", "subcategory": "Management", @@ -19436,8 +20428,8 @@ "guid": "4c2bd463-cbbb-4c86-a195-abb91a4ed90d", "link": "https://learn.microsoft.com/azure/azure-arc/servers/manage-automatic-vm-extension-upgrade?tabs=azure-portal", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "High", "subcategory": "Management", @@ -19451,8 +20443,8 @@ "guid": "7a927c39-74d1-4102-aac6-aae01e6a84de", "link": "https://learn.microsoft.com/azure/automanage/automanage-arc", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Medium", "subcategory": "Management", @@ -19465,8 +20457,8 @@ "guid": "37b6b780-cbaf-4e6c-9658-9d457a927c39", "link": "https://learn.microsoft.com/azure/azure-arc/servers/plan-at-scale-deployment#phase-3-manage-and-operate", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "High", "subcategory": "Monitoring", @@ -19479,8 +20471,8 @@ "guid": "74d1102c-ac6a-4ae0-8e6a-84de5df47d2d", "link": "https://learn.microsoft.com/azure/azure-monitor/agents/log-analytics-agent#data-collected", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Medium", "subcategory": "Monitoring", @@ -19493,8 +20485,8 @@ "guid": "92881b1c-d5d1-4e54-a296-59e3958fd782", "link": "https://learn.microsoft.com/azure/service-health/resource-health-alert-monitor-guide", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Medium", "subcategory": "Monitoring", @@ -19507,8 +20499,8 @@ "guid": "89c93555-6d02-4bfe-9564-b0d834a34872", "link": "https://learn.microsoft.com/azure/azure-arc/servers/learn/tutorial-enable-vm-insights", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Medium", "subcategory": "Monitoring", @@ -19521,8 +20513,8 @@ "guid": "5df47d2d-9288-41b1-ad5d-1e54a29659e3", "link": "https://learn.microsoft.com/azure/azure-arc/servers/plan-at-scale-deployment#phase-3-manage-and-operate", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Medium", "subcategory": "Monitoring", @@ -19536,8 +20528,8 @@ "guid": "ae2cc84c-37b6-4b78-8cba-fe6c46589d45", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/hybrid/server/best-practices/arc-update-management", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Low", "subcategory": "Security", @@ -19580,9 +20572,9 @@ "link": "https://learn.microsoft.com/azure/azure-arc/servers/private-link-security", "services": [ "PrivateLink", + "Arc", "ExpressRoute", - "VPN", - "Arc" + "VPN" ], "severity": "Medium", "subcategory": "Networking", @@ -19639,8 +20631,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/hybrid/arc-enabled-servers/eslz-arc-servers-connectivity#define-extensions-connectivity-method", "services": [ "PrivateLink", - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Low", "subcategory": "Networking", @@ -19653,8 +20645,8 @@ "guid": "ac6aae01-e6a8-44de-9df4-7d2d92881b1c", "link": "https://learn.microsoft.com/azure/governance/policy/", "services": [ - "AzurePolicy", - "Arc" + "Arc", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Management", @@ -19680,8 +20672,8 @@ "guid": "667357c4-4967-44c5-bd85-b859c7733be2", "link": "https://learn.microsoft.com/azure/governance/machine-configuration/machine-configuration-create", "services": [ - "AzurePolicy", - "Arc" + "Arc", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Management", @@ -19694,8 +20686,8 @@ "guid": "49674c5e-d85b-4859-a773-3be2a1a27b77", "link": "https://learn.microsoft.com/azure/automation/change-tracking/overview", "services": [ - "Monitor", - "Arc" + "Arc", + "Monitor" ], "severity": "Medium", "subcategory": "Monitoring", @@ -19721,8 +20713,8 @@ "guid": "195abb91-a4ed-490d-ae2c-c84c37b6b780", "link": "https://learn.microsoft.com/azure/key-vault/general/basic-concepts", "services": [ - "AKV", - "Arc" + "Arc", + "AKV" ], "severity": "Medium", "subcategory": "Secrets", @@ -19736,9 +20728,9 @@ "guid": "6d02bfe4-564b-40d8-94a3-48726ee79d6b", "link": "https://learn.microsoft.com/azure/active-directory/develop/howto-create-service-principal-portal#option-2-create-a-new-application-secret", "services": [ + "Arc", "AKV", "Storage", - "Arc", "Entra" ], "severity": "High", @@ -19753,8 +20745,8 @@ "guid": "a1a27b77-5a91-4be1-b388-ff394c2bd463", "link": "https://learn.microsoft.com/azure/azure-arc/servers/security-overview#using-disk-encryption", "services": [ - "AKV", - "Arc" + "Arc", + "AKV" ], "severity": "Medium", "subcategory": "Secrets", @@ -19795,8 +20787,8 @@ "guid": "4b69bad3-8aad-453c-a78e-1d76667357c4", "link": "https://learn.microsoft.com/azure/azure-arc/servers/managed-identity-authentication", "services": [ - "Entra", - "Arc" + "Arc", + "Entra" ], "severity": "Medium", "subcategory": "Security", @@ -19810,8 +20802,8 @@ "guid": "5a91be1f-388f-4f39-9c2b-d463cbbbc868", "link": "https://learn.microsoft.com/azure/security-center/security-center-get-started", "services": [ - "Defender", - "Arc" + "Arc", + "Defender" ], "severity": "Medium", "subcategory": "Security", @@ -20641,8 +21633,8 @@ "guid": "36cb45e5-7960-4332-9bdf-8cc23318da61", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/enterprise-scale/business-continuity-and-disaster-recovery", "services": [ - "AKS", - "ASR" + "ASR", + "AKS" ], "severity": "High", "subcategory": "Disaster Recovery", @@ -20655,10 +21647,10 @@ "guid": "170265f4-bb46-4a39-9af7-f317284797b1", "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region", "services": [ - "AKS", + "TrafficManager", "LoadBalancer", - "FrontDoor", - "TrafficManager" + "AKS", + "FrontDoor" ], "severity": "Medium", "subcategory": "High Availability", @@ -20716,8 +21708,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication", "service": "ACR", "services": [ - "AKS", - "ACR" + "ACR", + "AKS" ], "severity": "High", "subcategory": "High Availability", @@ -20730,8 +21722,8 @@ "guid": "daa9a260-c3ea-4490-b077-5fc1f2a80cb0", "link": "https://learn.microsoft.com/azure/aks/availability-zones#azure-disk-availability-zone-support", "services": [ - "AKS", "ASR", + "AKS", "Storage" ], "severity": "High", @@ -20820,8 +21812,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes", "service": "AKS", "services": [ - "AKS", - "AzurePolicy" + "AzurePolicy", + "AKS" ], "severity": "Medium", "subcategory": "Compliance", @@ -20864,8 +21856,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/", "service": "AKS", "services": [ - "AKS", - "ACR" + "ACR", + "AKS" ], "severity": "Medium", "subcategory": "Compliance", @@ -20892,8 +21884,8 @@ "guid": "cc639637-a652-42ac-89e8-06965388e9de", "link": "https://learn.microsoft.com/azure/security-center/container-security", "services": [ - "AKS", - "Defender" + "Defender", + "AKS" ], "severity": "Medium", "subcategory": "Compliance", @@ -20934,8 +21926,8 @@ "link": "https://github.com/Azure/secrets-store-csi-driver-provider-azure", "service": "AKS", "services": [ - "AKS", - "AKV" + "AKV", + "AKS" ], "severity": "Medium", "subcategory": "Secrets", @@ -20949,8 +21941,8 @@ "link": "https://learn.microsoft.com/azure/aks/update-credentials", "service": "AKS", "services": [ - "AKS", - "AKV" + "AKV", + "AKS" ], "severity": "High", "subcategory": "Secrets", @@ -20964,8 +21956,8 @@ "link": "https://learn.microsoft.com/azure/aks/use-kms-etcd-encryption", "service": "AKS", "services": [ - "AKS", - "AKV" + "AKV", + "AKS" ], "severity": "Medium", "subcategory": "Secrets", @@ -20979,8 +21971,8 @@ "link": "https://learn.microsoft.com/azure/confidential-computing/confidential-nodes-aks-overview", "service": "AKS", "services": [ - "AKS", - "AKV" + "AKV", + "AKS" ], "severity": "Low", "subcategory": "Secrets", @@ -20994,9 +21986,9 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable", "service": "AKS", "services": [ - "AKS", + "Defender", "AKV", - "Defender" + "AKS" ], "severity": "Medium", "subcategory": "Secrets", @@ -21057,8 +22049,8 @@ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac", "service": "AKS", "services": [ - "AKS", "RBAC", + "AKS", "Entra" ], "severity": "Medium", @@ -21073,8 +22065,8 @@ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity", "service": "AKS", "services": [ - "AKS", "RBAC", + "AKS", "Entra" ], "severity": "High", @@ -21195,9 +22187,9 @@ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/", "service": "AKS", "services": [ - "AKS", "ACR", - "AppGW" + "AppGW", + "AKS" ], "severity": "Medium", "subcategory": "Best practices", @@ -21241,8 +22233,8 @@ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard", "service": "AKS", "services": [ - "AKS", - "LoadBalancer" + "LoadBalancer", + "AKS" ], "severity": "High", "subcategory": "Best practices", @@ -21271,10 +22263,10 @@ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview", "service": "AKS", "services": [ + "PrivateLink", "VNet", "AKS", - "Cost", - "PrivateLink" + "Cost" ], "severity": "Medium", "subcategory": "Cost", @@ -21287,8 +22279,8 @@ "guid": "e8a03f97-8794-468d-96a7-86d60f96c97b", "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", "services": [ - "AKS", - "VPN" + "VPN", + "AKS" ], "severity": "Medium", "subcategory": "HA", @@ -21447,8 +22439,8 @@ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic", "service": "AKS", "services": [ - "AKS", - "NVA" + "NVA", + "AKS" ], "severity": "High", "subcategory": "Security", @@ -21493,8 +22485,8 @@ "link": "https://learn.microsoft.com/azure/aks/use-network-policies", "service": "AKS", "services": [ - "AKS", - "AzurePolicy" + "AzurePolicy", + "AKS" ], "severity": "Medium", "subcategory": "Security", @@ -21509,8 +22501,8 @@ "link": "https://learn.microsoft.com/azure/aks/use-network-policies", "service": "AKS", "services": [ - "AKS", - "AzurePolicy" + "AzurePolicy", + "AKS" ], "severity": "High", "subcategory": "Security", @@ -21524,8 +22516,8 @@ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network", "service": "AKS", "services": [ - "AKS", - "AzurePolicy" + "AzurePolicy", + "AKS" ], "severity": "High", "subcategory": "Security", @@ -21556,8 +22548,8 @@ "service": "AKS", "services": [ "VNet", - "AKS", - "DDoS" + "DDoS", + "AKS" ], "severity": "Medium", "subcategory": "Security", @@ -21600,8 +22592,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts", "service": "AKS", "services": [ - "AKS", - "Monitor" + "Monitor", + "AKS" ], "severity": "High", "subcategory": "Alerting", @@ -21800,8 +22792,8 @@ "link": "https://learn.microsoft.com/azure/aks/monitor-aks", "service": "AKS", "services": [ - "AKS", - "Monitor" + "Monitor", + "AKS" ], "severity": "Low", "subcategory": "Compliance", @@ -21860,8 +22852,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview", "service": "AKS", "services": [ - "AKS", - "Monitor" + "Monitor", + "AKS" ], "severity": "High", "subcategory": "Monitoring", @@ -21876,8 +22868,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview", "service": "AKS", "services": [ - "AKS", - "Monitor" + "Monitor", + "AKS" ], "severity": "High", "subcategory": "Monitoring", @@ -21891,8 +22883,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze", "service": "AKS", "services": [ - "AKS", - "Monitor" + "Monitor", + "AKS" ], "severity": "Medium", "subcategory": "Monitoring", @@ -21906,8 +22898,8 @@ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni", "service": "AKS", "services": [ - "AKS", - "Monitor" + "Monitor", + "AKS" ], "severity": "Medium", "subcategory": "Monitoring", @@ -21922,11 +22914,11 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance", "service": "AKS", "services": [ - "EventHubs", "ServiceBus", + "EventHubs", "Monitor", - "Storage", - "AKS" + "AKS", + "Storage" ], "severity": "Medium", "subcategory": "Monitoring", @@ -21940,10 +22932,10 @@ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard", "service": "AKS", "services": [ - "AKS", - "LoadBalancer", "NVA", - "Monitor" + "Monitor", + "LoadBalancer", + "AKS" ], "severity": "Medium", "subcategory": "Monitoring", @@ -21957,8 +22949,8 @@ "link": "https://learn.microsoft.com/azure/aks/aks-resource-health", "service": "AKS", "services": [ - "AKS", - "Monitor" + "Monitor", + "AKS" ], "severity": "Medium", "subcategory": "Monitoring", @@ -22000,8 +22992,8 @@ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits", "service": "AKS", "services": [ - "AKS", - "Subscriptions" + "Subscriptions", + "AKS" ], "severity": "High", "subcategory": "Resources", @@ -22190,9 +23182,9 @@ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region", "service": "AKS", "services": [ + "SQL", "AKS", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": "Storage", @@ -22248,8 +23240,8 @@ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region", "service": "Spring Apps", "services": [ - "TrafficManager", "ASR", + "TrafficManager", "FrontDoor" ], "severity": "Medium", @@ -22884,8 +23876,8 @@ "guid": "074541e3-fe08-458a-8062-32d13dcc10c6", "link": "https://learn.microsoft.com/azure/backup/back-up-azure-stack-hyperconverged-infrastructure-virtual-machines", "services": [ - "Backup", "ASR", + "Backup", "VM" ], "severity": "High", @@ -23074,8 +24066,8 @@ "guid": "8ea49f70-1038-4283-b0c4-230165d3eabc", "link": "https://learn.microsoft.com/azure-stack/hci/manage/azure-site-recovery", "services": [ - "Backup", - "ASR" + "ASR", + "Backup" ], "severity": "Medium", "subcategory": "Disaster Recovery", @@ -23216,9 +24208,9 @@ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform", "service": "SAP", "services": [ + "ASR", "SAP", - "Backup", - "ASR" + "Backup" ], "severity": "Medium", "subcategory": "Backup and restore", @@ -23231,9 +24223,9 @@ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a", "service": "SAP", "services": [ + "ASR", "SAP", - "Backup", - "ASR" + "Backup" ], "severity": "Medium", "subcategory": "Disaster recovery", @@ -23247,11 +24239,11 @@ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure", "service": "SAP", "services": [ - "Storage", "SQL", - "SAP", "Backup", - "ASR" + "Storage", + "ASR", + "SAP" ], "severity": "High", "subcategory": "Disaster recovery", @@ -23266,8 +24258,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "Medium", "subcategory": "Disaster recovery", @@ -23282,9 +24274,9 @@ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", "service": "SAP", "services": [ + "ASR", "SAP", "ExpressRoute", - "ASR", "VPN" ], "severity": "High", @@ -23300,9 +24292,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance", "service": "SAP", "services": [ + "ASR", "SAP", "ACR", - "ASR", "AKV" ], "severity": "Low", @@ -23317,9 +24309,9 @@ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana", "service": "SAP", "services": [ + "ASR", "SAP", - "VNet", - "ASR" + "VNet" ], "severity": "Medium", "subcategory": "Disaster recovery", @@ -23333,8 +24325,8 @@ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Storage" ], "severity": "Low", @@ -23350,8 +24342,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "High", "subcategory": "Disaster recovery", @@ -23366,9 +24358,9 @@ "link": "https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-faq", "service": "SAP", "services": [ + "ASR", "SAP", - "VNet", - "ASR" + "VNet" ], "severity": "High", "subcategory": "Disaster recovery", @@ -23382,10 +24374,10 @@ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a", "service": "SAP", "services": [ - "SAP", - "Entra", "ASR", - "VM" + "SAP", + "VM", + "Entra" ], "severity": "High", "subcategory": "Disaster recovery", @@ -23400,8 +24392,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "High", "subcategory": "High availability", @@ -23416,8 +24408,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "High", "subcategory": "High availability", @@ -23432,8 +24424,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "VM", "Storage" ], @@ -23450,8 +24442,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Storage" ], "severity": "High", @@ -23467,8 +24459,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "High", "subcategory": "High availability", @@ -23483,9 +24475,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections", "service": "SAP", "services": [ + "ASR", "SAP", - "LoadBalancer", - "ASR" + "LoadBalancer" ], "severity": "High", "subcategory": "High availability", @@ -23500,9 +24492,9 @@ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-ha-ports-overview?source=recommendations", "service": "SAP", "services": [ + "ASR", "SAP", - "LoadBalancer", - "ASR" + "LoadBalancer" ], "severity": "High", "subcategory": "High availability", @@ -23517,8 +24509,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "High", "subcategory": "High availability", @@ -23533,10 +24525,10 @@ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", "service": "SAP", "services": [ - "SAP", - "Entra", "ASR", - "VM" + "SAP", + "VM", + "Entra" ], "severity": "High", "subcategory": "High availability", @@ -23550,11 +24542,11 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview", "service": "SAP", "services": [ - "SAP", - "RBAC", "VM", + "Entra", "ASR", - "Entra" + "RBAC", + "SAP" ], "severity": "High", "subcategory": "High availability", @@ -23569,8 +24561,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/co-location", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "Medium", "subcategory": "High availability", @@ -23585,8 +24577,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "VM" ], "severity": "High", @@ -23602,9 +24594,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios", "service": "SAP", "services": [ + "ASR", "SAP", - "Entra", - "ASR" + "Entra" ], "severity": "High", "subcategory": "High availability", @@ -23618,9 +24610,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios", "service": "SAP", "services": [ + "ASR", "SAP", - "ACR", - "ASR" + "ACR" ], "severity": "High", "subcategory": "High availability", @@ -23634,9 +24626,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery", "service": "SAP", "services": [ + "ASR", "SAP", - "Entra", - "ASR" + "Entra" ], "severity": "High", "subcategory": "High availability", @@ -23651,10 +24643,10 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid", "service": "SAP", "services": [ - "SAP", - "Entra", "ASR", - "VM" + "SAP", + "VM", + "Entra" ], "severity": "Medium", "subcategory": "High availability", @@ -23669,8 +24661,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "VM", "Storage" ], @@ -23686,8 +24678,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance", "service": "SAP", "services": [ - "SAP", - "ASR" + "ASR", + "SAP" ], "severity": "Medium", "subcategory": "High availability", @@ -23702,8 +24694,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Storage" ], "severity": "High", @@ -23719,8 +24711,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Storage" ], "severity": "High", @@ -23736,8 +24728,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Storage" ], "severity": "High", @@ -23753,8 +24745,8 @@ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Storage" ], "severity": "High", @@ -23785,9 +24777,9 @@ "service": "SAP", "services": [ "SAP", - "Cost", "VM", - "Storage" + "Storage", + "Cost" ], "severity": "Low", "subcategory": " ", @@ -23802,9 +24794,9 @@ "service": "SAP", "services": [ "SAP", - "Cost", "VM", - "Storage" + "Storage", + "Cost" ], "severity": "Low", "subcategory": " ", @@ -23818,10 +24810,10 @@ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security", "service": "SAP", "services": [ - "SAP", - "Entra", "RBAC", - "Subscriptions" + "SAP", + "Subscriptions", + "Entra" ], "severity": "High", "subcategory": "Identity", @@ -24052,8 +25044,8 @@ "service": "SAP", "services": [ "SAP", - "AzurePolicy", - "Subscriptions" + "Subscriptions", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Subscriptions", @@ -24166,8 +25158,8 @@ "services": [ "SAP", "TrafficManager", - "Cost", - "Subscriptions" + "Subscriptions", + "Cost" ], "severity": "Medium", "subcategory": "Subscriptions", @@ -24183,8 +25175,8 @@ "service": "SAP", "services": [ "SAP", - "Backup", - "Monitor" + "Monitor", + "Backup" ], "severity": "High", "subcategory": "BCDR", @@ -24200,10 +25192,10 @@ "service": "SAP", "services": [ "Monitor", - "Storage", - "SAP", "VM", - "Entra" + "Storage", + "Entra", + "SAP" ], "severity": "Medium", "subcategory": "BCDR", @@ -24233,8 +25225,8 @@ "service": "SAP", "services": [ "SAP", - "Entra", - "Monitor" + "Monitor", + "Entra" ], "severity": "Medium", "subcategory": "Management", @@ -24250,8 +25242,8 @@ "service": "SAP", "services": [ "SAP", - "Cost", - "Monitor" + "Monitor", + "Cost" ], "severity": "Low", "subcategory": "Management", @@ -24266,8 +25258,8 @@ "service": "SAP", "services": [ "SAP", - "Entra", - "Monitor" + "Monitor", + "Entra" ], "severity": "Medium", "subcategory": "Management", @@ -24314,9 +25306,9 @@ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions", "service": "SAP", "services": [ + "SQL", "SAP", - "Monitor", - "SQL" + "Monitor" ], "severity": "Medium", "subcategory": "Monitoring", @@ -24332,9 +25324,9 @@ "service": "SAP", "services": [ "SAP", - "Entra", + "Monitor", "VM", - "Monitor" + "Entra" ], "severity": "High", "subcategory": "Monitoring", @@ -24350,8 +25342,8 @@ "service": "SAP", "services": [ "SAP", - "AzurePolicy", - "Monitor" + "Monitor", + "AzurePolicy" ], "severity": "Medium", "subcategory": "Monitoring", @@ -24416,8 +25408,8 @@ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Monitor", "Storage" ], @@ -24452,8 +25444,8 @@ "service": "SAP", "services": [ "SAP", - "Cost", - "Monitor" + "Monitor", + "Cost" ], "severity": "Medium", "subcategory": "Monitoring", @@ -24469,8 +25461,8 @@ "service": "SAP", "services": [ "SAP", - "VM", - "Monitor" + "Monitor", + "VM" ], "severity": "Low", "subcategory": "Performance", @@ -24484,8 +25476,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Monitor" ], "severity": "Medium", @@ -24549,9 +25541,9 @@ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178", "service": "SAP", "services": [ + "SQL", "SAP", - "Monitor", - "SQL" + "Monitor" ], "severity": "Medium", "subcategory": "Performance", @@ -24566,8 +25558,8 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Monitor" ], "severity": "High", @@ -24583,9 +25575,9 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "service": "SAP", "services": [ + "AppGW", "SAP", "AzurePolicy", - "AppGW", "WAF" ], "severity": "Medium", @@ -24601,8 +25593,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity", "service": "SAP", "services": [ - "SAP", "DNS", + "SAP", "VM" ], "severity": "Medium", @@ -24618,8 +25610,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity", "service": "SAP", "services": [ - "SAP", "DNS", + "SAP", "VNet" ], "severity": "Medium", @@ -24686,8 +25678,8 @@ "service": "SAP", "services": [ "SAP", - "VNet", - "NVA" + "NVA", + "VNet" ], "severity": "Medium", "subcategory": "Hybrid", @@ -24703,9 +25695,9 @@ "service": "SAP", "services": [ "SAP", - "VWAN", + "NVA", "VNet", - "NVA" + "VWAN" ], "severity": "Medium", "subcategory": "Hybrid", @@ -24721,8 +25713,8 @@ "service": "SAP", "services": [ "SAP", - "VNet", - "VM" + "VM", + "VNet" ], "severity": "High", "subcategory": "IP plan", @@ -24737,9 +25729,9 @@ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations", "service": "SAP", "services": [ + "ASR", "SAP", - "VNet", - "ASR" + "VNet" ], "severity": "High", "subcategory": "IP plan", @@ -24787,8 +25779,8 @@ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-firewall?toc=%2Fazure%2Ffirewall%2Ftoc.json&bc=%2Fazure%2Ffirewall%2Fbreadcrumb%2Ftoc.json", "service": "SAP", "services": [ - "SAP", - "Firewall" + "Firewall", + "SAP" ], "severity": "Medium", "subcategory": "Internet", @@ -24820,11 +25812,11 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "SAP", "services": [ - "WAF", - "SAP", + "ACR", "AzurePolicy", - "FrontDoor", - "ACR" + "SAP", + "WAF", + "FrontDoor" ], "severity": "Medium", "subcategory": "Internet", @@ -24839,10 +25831,10 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview", "service": "SAP", "services": [ - "WAF", + "AzurePolicy", "AppGW", "SAP", - "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -24859,9 +25851,9 @@ "service": "SAP", "services": [ "SAP", - "LoadBalancer", "AppGW", - "WAF" + "WAF", + "LoadBalancer" ], "severity": "Medium", "subcategory": "Internet", @@ -24893,12 +25885,12 @@ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services", "service": "SAP", "services": [ - "PrivateLink", "VNet", - "Storage", - "SAP", + "PrivateLink", "Backup", - "ACR" + "ACR", + "Storage", + "SAP" ], "severity": "Medium", "subcategory": "Internet", @@ -24946,8 +25938,8 @@ "service": "SAP", "services": [ "SAP", - "VNet", - "VM" + "VM", + "VNet" ], "severity": "Medium", "subcategory": "Segmentation", @@ -25057,8 +26049,8 @@ "service": "SAP", "services": [ "SAP", - "Backup", - "VM" + "VM", + "Backup" ], "severity": "High", "subcategory": " ", @@ -25072,8 +26064,8 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot", "service": "SAP", "services": [ - "SAP", "ASR", + "SAP", "Monitor" ], "severity": "Medium", @@ -25104,8 +26096,8 @@ "service": "SAP", "services": [ "SAP", - "Backup", - "VM" + "VM", + "Backup" ], "severity": "Medium", "subcategory": " ", @@ -25119,9 +26111,9 @@ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16", "service": "SAP", "services": [ + "SQL", "SAP", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "subcategory": " ", @@ -25136,8 +26128,8 @@ "service": "SAP", "services": [ "SAP", - "Backup", - "VM" + "VM", + "Backup" ], "severity": "Medium", "subcategory": " ", @@ -25207,9 +26199,9 @@ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80", "service": "SAP", "services": [ + "SQL", "SAP", - "Monitor", - "SQL" + "Monitor" ], "severity": "Medium", "subcategory": " ", @@ -25299,8 +26291,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security", "service": "SAP", "services": [ - "SAP", - "SQL" + "SQL", + "SAP" ], "severity": "Low", "subcategory": "Governance", @@ -25314,8 +26306,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security", "service": "SAP", "services": [ - "SAP", - "SQL" + "SQL", + "SAP" ], "severity": "High", "subcategory": "Governance", @@ -25330,11 +26322,11 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance", "service": "SAP", "services": [ - "AKV", - "Storage", "SQL", + "Backup", + "Storage", "SAP", - "Backup" + "AKV" ], "severity": "High", "subcategory": "Secrets", @@ -25382,11 +26374,11 @@ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json", "service": "SAP", "services": [ - "AKV", "Subscriptions", - "SAP", + "AzurePolicy", "RBAC", - "AzurePolicy" + "SAP", + "AKV" ], "severity": "Medium", "subcategory": "Secrets", @@ -25402,8 +26394,8 @@ "service": "SAP", "services": [ "SAP", - "AKV", - "AzurePolicy" + "AzurePolicy", + "AKV" ], "severity": "Medium", "subcategory": "Secrets", @@ -25418,10 +26410,10 @@ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy", "service": "SAP", "services": [ - "SAP", - "AKV", "RBAC", - "AzurePolicy" + "SAP", + "AzurePolicy", + "AKV" ], "severity": "High", "subcategory": "Secrets", @@ -25437,8 +26429,8 @@ "service": "SAP", "services": [ "SAP", - "AKV", "Defender", + "AKV", "Storage" ], "severity": "High", @@ -25454,10 +26446,10 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks", "service": "SAP", "services": [ - "SAP", - "AKV", "RBAC", - "Defender" + "SAP", + "Defender", + "AKV" ], "severity": "High", "subcategory": "Secrets", @@ -25536,8 +26528,8 @@ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles", "service": "SAP", "services": [ - "SAP", "RBAC", + "SAP", "Subscriptions" ], "severity": "High", @@ -25553,9 +26545,9 @@ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/", "service": "SAP", "services": [ + "PrivateLink", "SAP", - "NVA", - "PrivateLink" + "NVA" ], "severity": "High", "subcategory": "Security", @@ -25636,8 +26628,8 @@ "service": "SAP", "services": [ "SAP", - "AKV", - "Monitor" + "Monitor", + "AKV" ], "severity": "Medium", "subcategory": "Security", @@ -25721,7 +26713,7 @@ "Entra" ], "severity": "Low", - "text": "Ensure you have a Multi-Tenant Automation approach to managing your Microsoft Entra ID Tenants", + "text": "Use Multi-Tenant Automation approach to managing your Microsoft Entra ID Tenants.", "waf": "Operations" }, { @@ -25732,8 +26724,9 @@ "services": [ "WAF" ], - "severity": "Low", - "text": "Leverage Azure Lighthouse for Multi-Tenant Management", + "severity": "High", + "text": "Use Azure Lighthouse for Multi-Tenant Management with the same IDs.", + "training": "https://learn.microsoft.com/azure/lighthouse/concepts/cross-tenant-management-experience", "waf": "Operations" }, { @@ -25744,21 +26737,20 @@ "services": [ "WAF" ], - "severity": "Medium", - "text": "Ensure that Azure Lighthouse is used for administering the tenant by partner", + "severity": "High", + "text": "If you give a partner access to administer your tenant, use Azure Lighthouse.", "waf": "Cost" }, { - "ammp": true, "checklist": "WAF checklist", "guid": "348ef254-c27d-442e-abba-c7571559ab91", "link": "https://learn.microsoft.com/azure/role-based-access-control/overview", "service": "Entra", "services": [ - "WAF", - "ACR", "RBAC", - "Subscriptions" + "Subscriptions", + "ACR", + "WAF" ], "severity": "High", "text": "Enforce a RBAC model that aligns to your cloud operating model. Scope and Assign across Management Groups and Subscriptions.", @@ -25766,7 +26758,6 @@ "waf": "Security" }, { - "ammp": true, "checklist": "WAF checklist", "guid": "12e7f983-f630-4472-8dd6-9c5b5c2622f5", "link": "https://learn.microsoft.com/azure/active-directory/roles/security-planning#identify-microsoft-accounts-in-administrative-roles-that-need-to-be-switched-to-work-or-school-accounts", @@ -25799,17 +26790,16 @@ "link": "https://learn.microsoft.com/azure/active-directory/conditional-access/overview", "service": "Entra", "services": [ + "AzurePolicy", "WAF", - "Entra", - "AzurePolicy" + "Entra" ], - "severity": "Low", - "text": "Enforce Microsoft Entra ID conditional-access policies for any user with rights to Azure environments", + "severity": "High", + "text": "Enforce Microsoft Entra ID Conditional Access policies for any user with rights to Azure environments.", "training": "https://learn.microsoft.com/learn/modules/plan-implement-administer-conditional-access/", "waf": "Security" }, { - "ammp": true, "checklist": "WAF checklist", "guid": "1049d403-a923-4c34-94d0-0018ac6a9e01", "link": "https://learn.microsoft.com/azure/active-directory/authentication/concept-mfa-howitworks", @@ -25818,7 +26808,7 @@ "WAF" ], "severity": "High", - "text": "Enforce multi-factor authentication for any user with rights to the Azure environments", + "text": "Enforce multi-factor authentication for any user with rights to the Azure environments.", "training": "https://learn.microsoft.com/learn/modules/secure-aad-users-with-mfa/", "waf": "Security" }, @@ -25832,21 +26822,21 @@ "Entra" ], "severity": "Medium", - "text": "Enforce Microsoft Entra ID Privileged Identity Management (PIM) to establish zero standing access and least privilege", + "text": "Enforce Microsoft Entra ID Privileged Identity Management (PIM) to establish zero standing access and least privilege.", "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/", "waf": "Security" }, { "checklist": "WAF checklist", "guid": "8b9fe5c4-1049-4d40-9a92-3c3474d00018", - "link": "https://learn.microsoft.com/azure/active-directory-domain-services/overview", + "link": "https://learn.microsoft.com/en-us/entra/identity/domain-services/overview", "service": "Entra", "services": [ "WAF", "Entra" ], "severity": "Medium", - "text": "If planning to switch from Active Directory Domain Services to Entra domain services, evaluate the compatibility of all workloads", + "text": "If planning to switch from Active Directory Domain Services to Entra domain services, evaluate the compatibility of all workloads.", "training": "https://learn.microsoft.com/learn/modules/implement-hybrid-identity-windows-server/", "waf": "Security" }, @@ -25856,9 +26846,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/reports-monitoring/concept-activity-logs-azure-monitor", "service": "Entra", "services": [ + "Monitor", "WAF", - "Entra", - "Monitor" + "Entra" ], "severity": "Medium", "text": "Integrate Microsoft Entra ID logs with the platform-central Azure Monitor. Azure Monitor allows for a single source of truth around log and monitoring data in Azure, giving organizations a cloud native options to meet requirements around log collection and retention.", @@ -25874,7 +26864,7 @@ "WAF" ], "severity": "High", - "text": "Implement an emergency access or break-glass accounts to prevent tenant-wide account lockout", + "text": "Implement an emergency access or break-glass accounts to prevent tenant-wide account lockout.", "training": "https://learn.microsoft.com/learn/modules/azure-ad-privileged-identity-management/", "waf": "Security" }, @@ -25884,12 +26874,12 @@ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices", "service": "Entra", "services": [ + "RBAC", "WAF", - "Entra", - "RBAC" + "Entra" ], "severity": "Medium", - "text": "Avoid using on-premises synced accounts for Microsoft Entra ID role assignments.", + "text": "Do not use on-premises synced accounts for Microsoft Entra ID role assignments, unless you have a scenario that specifically requires it.", "training": "https://learn.microsoft.com/learn/modules/design-identity-security-strategy/", "waf": "Security" }, @@ -25903,7 +26893,7 @@ "Entra" ], "severity": "Medium", - "text": "Where required, use Microsoft Entra ID Application Proxy to give remote users secure and authenticated access to internal applications (hosted in the cloud or on-premises).", + "text": "When using Microsoft Entra ID Application Proxy to give remote users access to applications, manage it as a Platform resource as you can only have one instance per tenant.", "training": "https://learn.microsoft.com/learn/paths/implement-applications-external-access-azure-ad/", "waf": "Security" }, @@ -25918,29 +26908,28 @@ "VNet" ], "severity": "Medium", - "text": "Leverage a network design based on the traditional hub-and-spoke network topology for network scenarios that require maximum flexibility.", + "text": "Use a hub-and-spoke network topology for network scenarios that require maximum flexibility.", "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/virtualNetworks", "checklist": "WAF checklist", "guid": "7dd61623-a364-4a90-9eca-e48ebd54cd7d", - "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/expressroute", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/traditional-azure-networking-topology", "service": "VNet", "services": [ - "WAF", "Firewall", + "VPN", "VNet", "NVA", - "ExpressRoute", - "VPN", "DNS", - "Entra" + "Entra", + "ExpressRoute", + "WAF" ], "severity": "High", - "text": "Ensure that shared networking services, including ExpressRoute gateways, VPN gateways, and Azure Firewall or partner NVAs in the central-hub virtual network. If necessary, also deploy DNS servers.", + "text": "Deploy shared networking services, including ExpressRoute gateways, VPN gateways, and Azure Firewall or partner NVAs in the central-hub virtual network. If necessary, also deploy DNS services.", "waf": "Cost" }, { @@ -25950,11 +26939,11 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "service": "VNet", "services": [ - "WAF", - "DDoS" + "DDoS", + "WAF" ], - "severity": "Medium", - "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.", + "severity": "High", + "text": "Use a DDoS Network or IP protection plan for all public IP addresses in application landing zones.", "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/", "waf": "Security" }, @@ -25965,11 +26954,11 @@ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha", "service": "NVA", "services": [ - "WAF", - "NVA" + "NVA", + "WAF" ], "severity": "Medium", - "text": "When deploying partner networking technologies or NVAs, follow the partner vendor's guidance", + "text": "When deploying partner networking technologies or NVAs, follow the partner vendor's guidance.", "waf": "Reliability" }, { @@ -25979,10 +26968,10 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager#to-enable-transit-routing-between-expressroute-and-azure-vpn", "service": "ExpressRoute", "services": [ - "WAF", "ARS", + "ExpressRoute", "VPN", - "ExpressRoute" + "WAF" ], "severity": "Low", "text": "If you need transit between ExpressRoute and VPN gateways in hub and spoke scenarios, use Azure Route Server.", @@ -25996,9 +26985,9 @@ "link": "https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1", "service": "ARS", "services": [ + "ARS", "WAF", - "VNet", - "ARS" + "VNet" ], "severity": "Low", "text": "If using Route Server, use a /27 prefix for the Route Server subnet.", @@ -26011,8 +27000,8 @@ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-faq#can-i-create-a-peering-connection-to-a-vnet-in-a-different-region", "service": "VNet", "services": [ - "WAF", "ACR", + "WAF", "VNet" ], "severity": "Medium", @@ -26027,8 +27016,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/network-insights-overview", "service": "VNet", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Use Azure Monitor for Networks to monitor the end-to-end state of the networks on Azure.", @@ -26043,13 +27032,12 @@ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits", "service": "VNet", "services": [ + "ExpressRoute", "WAF", - "Entra", - "VNet", - "ExpressRoute" + "VNet" ], "severity": "Medium", - "text": "When connecting spoke virtual networks to the central hub virtual network, consider VNet peering limits (500), the maximum number of prefixes that can be advertised via ExpressRoute (1000)", + "text": "If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000).", "waf": "Reliability" }, { @@ -26064,11 +27052,10 @@ "Storage" ], "severity": "Medium", - "text": "Consider the limit of routes per route table (400).", + "text": "Limit the number of routes per route table to 400.", "waf": "Reliability" }, { - "ammp": true, "arm-service": "Microsoft.Network/virtualNetworks", "checklist": "WAF checklist", "graph": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)", @@ -26080,7 +27067,7 @@ "VNet" ], "severity": "High", - "text": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings", + "text": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings.", "waf": "Reliability" }, { @@ -26090,8 +27077,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-macsec", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", "text": "When you're using ExpressRoute Direct, configure MACsec in order to encrypt traffic at the layer-two level between the organization's routers and MSEE. The diagram shows this encryption in flow.", @@ -26101,31 +27088,30 @@ "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "guid": "ed301d6e-872e-452e-9611-cc58b5a4b151", - "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about", + "link": "https://learn.microsoft.com/azure/vpn-gateway/site-to-site-vpn-private-peering", "service": "ExpressRoute", "services": [ - "WAF", "ExpressRoute", - "VPN" + "VPN", + "WAF" ], - "severity": "Low", + "severity": "Medium", "text": "For scenarios where MACsec isn't an option (for example, not using ExpressRoute Direct), use a VPN gateway to establish IPsec tunnels over ExpressRoute private peering.", "training": "https://learn.microsoft.com/learn/paths/implement-network-security/", "waf": "Security" }, { - "ammp": true, "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "guid": "558fd772-49b8-4211-82df-27ee412e7f98", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing", "service": "ExpressRoute", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "High", - "text": "Ensure no overlapping IP address spaces across Azure regions and on-premises locations are used", + "text": "Ensure no overlapping IP address spaces across Azure regions and on-premises locations are used.", "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/", "waf": "Security" }, @@ -26139,13 +27125,12 @@ "services": [ "WAF" ], - "severity": "Low", + "severity": "Medium", "text": "Use IP addresses from the address allocation ranges for private internets (RFC 1918).", "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/virtualNetworks", "checklist": "WAF checklist", "graph": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant", @@ -26157,22 +27142,22 @@ "VNet" ], "severity": "High", - "text": "Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16)", + "text": "Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16).", "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/", "waf": "Performance" }, { - "ammp": true, "arm-service": "Microsoft.Network/virtualNetworks", "checklist": "WAF checklist", "guid": "f348ef25-4c27-4d42-b8bb-ac7571559ab9", "link": "https://learn.microsoft.com/azure/site-recovery/concepts-on-premises-to-azure-networking#retain-ip-addresses", "service": "VNet", "services": [ + "ASR", "WAF" ], "severity": "High", - "text": "Avoid using overlapping IP address ranges for production and DR sites.", + "text": "Do not use overlapping IP address ranges for production and disaster recovery sites.", "training": "https://learn.microsoft.com/learn/paths/az-104-manage-virtual-networks/", "waf": "Reliability" }, @@ -26180,11 +27165,11 @@ "arm-service": "Microsoft.Network/dnsZones", "checklist": "WAF checklist", "guid": "153e8908-ae28-4c84-a33b-6b7808b9fe5c", - "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances", + "link": "https://learn.microsoft.com/azure/dns/private-dns-getstarted-portal", "service": "DNS", "services": [ - "WAF", - "DNS" + "DNS", + "WAF" ], "severity": "Medium", "text": "For environments where name resolution in Azure is all that's required, use Azure Private DNS for resolution with a delegated zone for name resolution (such as 'azure.contoso.com').", @@ -26198,12 +27183,12 @@ "link": "https://learn.microsoft.com/azure/dns/dns-private-resolver-overview", "service": "DNS", "services": [ - "WAF", "DNS", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", - "text": "For environments where name resolution across Azure and on-premises is required, consider using Azure DNS Private Resolver.", + "text": "For environments where name resolution across Azure and on-premises is required and there is no existing enterprise DNS service like Active Directory, use Azure DNS Private Resolver to route DNS requests to Azure or to on-premises DNS servers.", "training": "https://learn.microsoft.com/training/modules/intro-to-azure-dns-private-resolver/", "waf": "Security" }, @@ -26214,25 +27199,24 @@ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-name-resolution-for-vms-and-role-instances", "service": "DNS", "services": [ - "WAF", - "DNS" + "DNS", + "WAF" ], "severity": "Low", "text": "Special workloads that require and deploy their own DNS (such as Red Hat OpenShift) should use their preferred DNS solution.", "waf": "Operations" }, { - "ammp": true, "arm-service": "Microsoft.Network/dnsZones", "checklist": "WAF checklist", "guid": "614658d3-558f-4d77-849b-821112df27ee", "link": "https://learn.microsoft.com/azure/dns/private-dns-autoregistration", "service": "DNS", "services": [ - "WAF", "DNS", - "VNet", - "VM" + "VM", + "WAF", + "VNet" ], "severity": "High", "text": "Enable auto-registration for Azure DNS to automatically manage the lifecycle of the DNS records for the virtual machines deployed within a virtual network.", @@ -26250,7 +27234,7 @@ "Bastion" ], "severity": "Medium", - "text": "Consider using Azure Bastion to securely connect to your network.", + "text": "Use Azure Bastion to securely connect to your network.", "waf": "Security" }, { @@ -26261,8 +27245,8 @@ "link": "https://learn.microsoft.com/azure/bastion/bastion-faq#subnet", "service": "Bastion", "services": [ - "WAF", "Bastion", + "WAF", "VNet" ], "severity": "Medium", @@ -26276,9 +27260,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview", "service": "WAF", "services": [ - "WAF", "ACR", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -26293,10 +27277,10 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "WAF", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "FrontDoor", - "AppGW" + "WAF", + "FrontDoor" ], "severity": "Low", "text": "When using Azure Front Door and Azure Application Gateway to help protect HTTP/S apps, use WAF policies in Azure Front Door. Lock down Azure Application Gateway to receive traffic only from Azure Front Door.", @@ -26304,7 +27288,6 @@ "waf": "Security" }, { - "ammp": true, "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls", "checklist": "WAF checklist", "guid": "2363cefe-179b-4599-be0d-5973cd4cd21b", @@ -26315,21 +27298,20 @@ "VNet" ], "severity": "High", - "text": "Deploy WAFs and other reverse proxies are required for inbound HTTP/S connections, deploy them within a landing-zone virtual network and together with the apps that they're protecting and exposing to the internet.", + "text": "When WAFs and other reverse proxies are required for inbound HTTP/S connections, deploy them within a landing-zone virtual network and together with the apps that they're protecting and exposing to the internet.", "training": "https://learn.microsoft.com/learn/paths/architect-network-infrastructure/", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/virtualNetworks", "checklist": "WAF checklist", "guid": "088137f5-e6c4-4cfd-9e50-4547c2447ec6", "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures", "service": "VNet", "services": [ + "DDoS", "WAF", - "VNet", - "DDoS" + "VNet" ], "severity": "High", "text": "Use Azure DDoS Network or IP Protection plans to help protect Public IP Addresses endpoints within the virtual networks.", @@ -26337,7 +27319,6 @@ "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/virtualNetworks", "checklist": "WAF checklist", "guid": "b034c01e-110b-463a-b36e-e3346e57f225", @@ -26347,37 +27328,53 @@ "WAF" ], "severity": "High", - "text": "Assess and review network outbound traffic configuration and strategy before the upcoming breaking change. On September 30, 2025, default outbound access for new deployments will be retired and only explicit access configurations will be allowed", + "text": "Plan for how to manage your network outbound traffic configuration and strategy before the upcoming breaking change. On September 30, 2025, default outbound access for new deployments will be retired and only explicit access configurations will be allowed.", "waf": "Reliability" }, { - "ammp": true, "arm-service": "Microsoft.Network/virtualNetworks", "checklist": "WAF checklist", "guid": "b1c82a3f-2320-4dfa-8972-7ae4823c8930", "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-reference-architectures", "service": "VNet", "services": [ - "WAF", - "DDoS" + "DDoS", + "WAF" ], "severity": "High", "text": "Add diagnostic settings to save DDoS related logs for all the protected public IP addresses (DDoS IP or Network Protection).", "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/", "waf": "Security" }, + { + "arm-service": "Microsoft.Authorization/policyDefinitions", + "checklist": "WAF checklist", + "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41", + "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp", + "service": "Policy", + "services": [ + "VM", + "AzurePolicy", + "WAF" + ], + "severity": "High", + "text": "Ensure there is a policy assignment to deny Public IP addresses directly tied to Virtual Machines. Use exclusions if public IPs are needed on specific VMs.", + "waf": "Security" + }, { "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "guid": "359c373e-7dd6-4162-9a36-4a907ecae48e", - "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/hybrid-networking/hub-spoke?tabs=cli", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "Backup", + "ExpressRoute", + "VPN", + "WAF" ], "severity": "Medium", - "text": "Ensure that you have investigated the possibility to use ExpressRoute as primary connection to Azure.", + "text": "Use ExpressRoute as the primary connection to Azure. Use VPNs as a source of backup connectivity.", "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/", "waf": "Performance" }, @@ -26389,11 +27386,11 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", - "text": "When you use multiple ExpressRoute circuits, or multiple on-prem locations, make sure to optimize routing with BGP attributes, if certain paths are preferred.", + "text": "When you use multiple ExpressRoute circuits or multiple on-prem locations, use BGP attributes to optimize routing.", "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/", "waf": "Reliability" }, @@ -26402,20 +27399,19 @@ "checklist": "WAF checklist", "graph": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant", "guid": "d4cd21b0-8813-47f5-b6c4-cfd3e504547c", - "link": "https://learn.microsoft.com/azure/expressroute/expressroute-routing", + "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku", "service": "ExpressRoute", "services": [ - "WAF", "ExpressRoute", - "VPN" + "VPN", + "WAF" ], "severity": "Medium", - "text": "Ensure that you're using the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements.", + "text": "Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements.", "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/", "waf": "Performance" }, { - "ammp": true, "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant", @@ -26423,8 +27419,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/plan-manage-cost", "service": "ExpressRoute", "services": [ - "WAF", "ExpressRoute", + "WAF", "Cost" ], "severity": "High", @@ -26432,7 +27428,6 @@ "waf": "Cost" }, { - "ammp": true, "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id", @@ -26440,12 +27435,12 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local", "service": "ExpressRoute", "services": [ - "WAF", "ExpressRoute", + "WAF", "Cost" ], "severity": "High", - "text": "Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuits' peering location supports your Azure regions for the Local SKU.", + "text": "Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU.", "waf": "Cost" }, { @@ -26456,8 +27451,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", "text": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions.", @@ -26471,8 +27466,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/connectivity-to-azure", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", "text": "For scenarios that require bandwidth higher than 10 Gbps or dedicated 10/100-Gbps ports, use ExpressRoute Direct.", @@ -26486,8 +27481,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/about-fastpath", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", "text": "When low latency is required, or throughput from on-premises to Azure must be greater than 10 Gbps, enable FastPath to bypass the ExpressRoute gateway from the data path.", @@ -26502,8 +27497,8 @@ "link": "https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway", "service": "VPN", "services": [ - "WAF", - "VPN" + "VPN", + "WAF" ], "severity": "Medium", "text": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available).", @@ -26517,8 +27512,8 @@ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-highlyavailable", "service": "VPN", "services": [ - "WAF", - "VPN" + "VPN", + "WAF" ], "severity": "Medium", "text": "Use redundant VPN appliances on-premises (active/active or active/passive).", @@ -26526,19 +27521,18 @@ "waf": "Reliability" }, { - "ammp": true, "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "guid": "718cb437-b060-2589-8856-2e93a5c6633b", "link": "https://learn.microsoft.com/azure/expressroute/expressroute-erdirect-about", "service": "ExpressRoute", "services": [ - "WAF", "ExpressRoute", + "WAF", "Cost" ], "severity": "High", - "text": "If using ExpressRoute Direct, consider using ExpressRoute Local circuits to the local Azure regions to save costs", + "text": "If using ExpressRoute Direct, consider using ExpressRoute Local circuits to the local Azure regions to save costs.", "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/", "waf": "Cost" }, @@ -26549,8 +27543,8 @@ "link": "https://learn.microsoft.com/azure/architecture/framework/services/networking/expressroute/reliability", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", "text": "When traffic isolation or dedicated bandwidth is required, such as for separating production and nonproduction environments, use different ExpressRoute circuits. It will help you ensure isolated routing domains and alleviate noisy-neighbor risks.", @@ -26564,9 +27558,9 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-monitoring-metrics-alerts", "service": "ExpressRoute", "services": [ - "WAF", "ExpressRoute", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Monitor ExpressRoute availability and utilization using built-in Express Route Insights.", @@ -26580,10 +27574,10 @@ "link": "https://learn.microsoft.com/azure/expressroute/how-to-configure-connection-monitor", "service": "ExpressRoute", "services": [ - "WAF", "ACR", + "Monitor", "NetworkWatcher", - "Monitor" + "WAF" ], "severity": "Medium", "text": "Use Connection Monitor for connectivity monitoring across the network, especially between on-premises and Azure.", @@ -26595,11 +27589,11 @@ "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2)", "guid": "e0d5973c-d4cd-421b-8881-37f5e6c4cfd3", - "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#challenges-of-using-multiple-expressroute-circuits", + "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", "text": "Use ExpressRoute circuits from different peering locations for redundancy.", @@ -26613,16 +27607,15 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-coexist-resource-manager", "service": "ExpressRoute", "services": [ - "WAF", "ExpressRoute", - "VPN" + "VPN", + "WAF" ], "severity": "Medium", - "text": "Use site-to-site VPN as failover of ExpressRoute, especially if only using a single ExpressRoute circuit.", + "text": "Use site-to-site VPN as failover of ExpressRoute, if only using a single ExpressRoute circuit.", "waf": "Reliability" }, { - "ammp": true, "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation))", @@ -26639,16 +27632,15 @@ "waf": "Reliability" }, { - "ammp": true, "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "guid": "d581a947-69a2-4783-942e-9df3664324c8", "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute#active-active-connections", "service": "ExpressRoute", "services": [ - "WAF", + "ExpressRoute", "ACR", - "ExpressRoute" + "WAF" ], "severity": "High", "text": "If using ExpressRoute, your on-premises routing should be dynamic: in the event of a connection failure it should converge to the remaining connection of the circuit. Load should be shared across both connections ideally as active/active, although active/passive is supported too.", @@ -26661,8 +27653,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-high-availability-with-expressroute", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "Medium", "text": "Ensure the two physical links of your ExpressRoute circuit are connected to two distinct edge devices in your network.", @@ -26690,8 +27682,8 @@ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", "service": "ExpressRoute", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "High", "text": "Connect the ExpressRoute Gateway to two or more circuits from different peering locations for higher resiliency.", @@ -26705,10 +27697,10 @@ "link": "https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-howto-setup-alerts-virtual-network-gateway-log", "service": "ExpressRoute", "services": [ - "WAF", - "VNet", + "ExpressRoute", "Monitor", - "ExpressRoute" + "WAF", + "VNet" ], "severity": "Medium", "text": "Configure diagnostic logs and alerts for ExpressRoute virtual network gateway.", @@ -26722,28 +27714,40 @@ "link": "https://learn.microsoft.com/azure/expressroute/virtual-network-connectivity-guidance", "service": "ExpressRoute", "services": [ + "ExpressRoute", "WAF", - "VNet", - "ExpressRoute" + "VNet" ], "severity": "Medium", - "text": "Avoid using ExpressRoute circuits for VNet-to-VNet communication.", + "text": "Do not use ExpressRoute circuits for VNet-to-VNet communication.", "training": "https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/", "waf": "Performance" }, { - "ammp": true, + "checklist": "WAF checklist", + "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160", + "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about", + "service": "N/A", + "services": [ + "ACR", + "WAF" + ], + "severity": "Low", + "text": "Do not send Azure traffic to hybrid locations for inspection. Instead, follow the principle 'traffic in Azure stays in Azure' so that communication across resources in Azure occurs via the Microsoft backbone network.", + "waf": "Performance" + }, + { "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "guid": "e6c4cfd3-e504-4547-a244-7ec66138a720", - "link": "https://learn.microsoft.com/azure/app-service/networking-features", + "link": "https://learn.microsoft.com/azure/firewall/overview", "service": "Firewall", "services": [ - "WAF", - "Firewall" + "Firewall", + "WAF" ], "severity": "High", - "text": "Use Azure Firewall to govern Azure outbound traffic to the internet, non-HTTP/S inbound connections, and East/West traffic filtering (if the organization requires it)", + "text": "Use Azure Firewall to govern Azure outbound traffic to the internet, non-HTTP/S inbound connections, and East/West traffic filtering (if the organization requires it).", "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/", "waf": "Security" }, @@ -26751,14 +27755,14 @@ "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "guid": "5a4b1511-e43a-458a-ac22-99c4d7b57d0c", - "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall", + "link": "https://learn.microsoft.com/azure/firewall-manager/policy-overview", "service": "Firewall", "services": [ - "WAF", "Firewall", - "RBAC", + "ACR", "AzurePolicy", - "ACR" + "RBAC", + "WAF" ], "severity": "Medium", "text": "Create a global Azure Firewall policy to govern security posture across the global network environment and assign it to all Azure Firewall instances. Allow for granular policies to meet requirements of specific regions by delegating incremental firewall policies to local security teams via Azure role-based access control.", @@ -26772,8 +27776,8 @@ "link": "https://learn.microsoft.com/azure/firewall-manager/deploy-trusted-security-partner", "service": "Firewall", "services": [ - "WAF", - "Firewall" + "Firewall", + "WAF" ], "severity": "Low", "text": "Configure supported partner SaaS security providers within Firewall Manager if the organization wants to use such solutions to help protect outbound connections.", @@ -26781,7 +27785,6 @@ "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant", @@ -26789,16 +27792,15 @@ "link": "https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules", "service": "Firewall", "services": [ + "Firewall", "WAF", - "DNS", - "Firewall" + "DNS" ], "severity": "High", - "text": "Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over protocols not supported by application rules.", + "text": "Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant", @@ -26806,31 +27808,29 @@ "link": "https://learn.microsoft.com/azure/firewall/premium-features", "service": "Firewall", "services": [ - "WAF", - "Firewall" + "Firewall", + "WAF" ], "severity": "High", - "text": "Use Azure Firewall Premium for additional security and protection.", + "text": "Use Azure Firewall Premium to enable additional security features.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant", "guid": "e9c8f584-6d5e-473b-8dc5-acc9fbaab4e3", - "link": "https://learn.microsoft.com/azure/firewall/premium-features", + "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules", "service": "Firewall", "services": [ - "WAF", - "Firewall" + "Firewall", + "WAF" ], "severity": "High", "text": "Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant", @@ -26838,15 +27838,14 @@ "link": "https://learn.microsoft.com/azure/firewall/premium-features#idps", "service": "Firewall", "services": [ - "WAF", - "Firewall" + "Firewall", + "WAF" ], "severity": "High", "text": "Configure Azure Firewall IDPS mode to Deny for additional protection.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant", @@ -26854,27 +27853,26 @@ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview", "service": "Firewall", "services": [ - "WAF", "Firewall", "VNet", "NVA", "Storage", - "VWAN" + "VWAN", + "WAF" ], "severity": "High", - "text": "For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance", + "text": "For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "guid": "715d833d-4708-4527-90ac-1b142c7045ba", "link": "https://learn.microsoft.com/azure/firewall/firewall-structured-logs", "service": "Firewall", "services": [ - "WAF", "Firewall", + "WAF", "Storage" ], "severity": "Medium", @@ -26883,16 +27881,15 @@ "waf": "Operations" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "guid": "e960fc6b-4ab2-4db6-9609-3745135f9ffa", "link": "https://learn.microsoft.com/azure/firewall-manager/migrate-to-policy", "service": "Firewall", "services": [ - "WAF", "Firewall", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Important", "text": "Migrate from Azure Firewall Classic rules (if exist) to Firewall Policy.", @@ -26900,7 +27897,6 @@ "waf": "Operations" }, { - "ammp": true, "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant", @@ -26908,8 +27904,8 @@ "link": "https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size", "service": "Firewall", "services": [ - "WAF", "Firewall", + "WAF", "VNet" ], "severity": "High", @@ -26923,11 +27919,11 @@ "link": "https://learn.microsoft.com/azure/firewall-manager/rule-hierarchy", "service": "Firewall", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", - "text": "Arrange rules within the firewall policy into Rule Collection Groups and Rule Collections and based on their frequency of use", + "text": "Arrange rules within the firewall policy into Rule Collection Groups and Rule Collections and based on their frequency of use.", "waf": "Performance" }, { @@ -26941,7 +27937,7 @@ "Storage" ], "severity": "Medium", - "text": "Use IP Groups or IP prefixes to reduce number of IP table rules", + "text": "Use IP Groups or IP prefixes to reduce number of IP table rules.", "waf": "Performance" }, { @@ -26954,18 +27950,18 @@ "WAF" ], "severity": "Medium", - "text": "Avoid wildcards as a source IP for DNATS, such as * or any, you should specify source IPs for incoming DNATs", + "text": "Do not use wildcards as a source IP for DNATS, such as * or any, you should specify source IPs for incoming DNATs.", "waf": "Performance" }, { "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "guid": "7371dc21-251a-47a3-af14-6e01b9da4757", - "link": "https://learn.microsoft.com/azure/nat-gateway/tutorial-hub-spoke-nat-firewall", + "link": "https://learn.microsoft.com/azure/firewall/integrate-with-nat-gateway", "service": "Firewall", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Prevent SNAT Port exhaustion by monitoring SNAT port usage, evaluating NAT Gateway settings, and ensuring seamless failover. If the port count approaches the limit, it’s a sign that SNAT exhaustion might be imminent.", @@ -26978,10 +27974,11 @@ "link": "https://learn.microsoft.com/azure/firewall/premium-features#tls-inspection", "service": "Firewall", "services": [ + "Firewall", "WAF" ], "severity": "High", - "text": "Enable TLS Inspection", + "text": "If you are using Azure Firewall Premium, enable TLS Inspection.", "waf": "Performance" }, { @@ -27018,27 +28015,12 @@ "link": "https://learn.microsoft.com/azure/firewall/dns-details", "service": "Firewall", "services": [ + "Firewall", "WAF", - "DNS", - "Firewall" - ], - "severity": "Medium", - "text": "Enable Azure Firewall DNS proxy configuration ", - "waf": "Security" - }, - { - "arm-service": "Microsoft.Network/azureFirewalls", - "checklist": "WAF checklist", - "guid": "3c5a808d-c695-4c14-a63c-c7ab7a510e41", - "link": "https://github.com/Azure/Enterprise-Scale/wiki/ALZ-Policies#corp", - "service": "Firewall", - "services": [ - "WAF", - "AzurePolicy", - "VM" + "DNS" ], "severity": "Medium", - "text": "Ensure there is a policy assignment to deny Public IP addresses directly tied to Virtual Machines", + "text": "Enable Azure Firewall DNS proxy configuration.", "waf": "Security" }, { @@ -27048,11 +28030,11 @@ "link": "https://learn.microsoft.com/azure/firewall/firewall-diagnostics", "service": "Firewall", "services": [ - "WAF", "Firewall", - "Monitor" + "Monitor", + "WAF" ], - "severity": "Low", + "severity": "High", "text": "Integrate Azure Firewall with Azure Monitor and enable diagnostic logging to store and analyze firewall logs.", "waf": "Operations" }, @@ -27063,15 +28045,14 @@ "link": "https://learn.microsoft.com/azure/well-architected/service-guides/azure-firewall", "service": "Firewall", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Low", "text": "Implement backups for your firewall rules", "waf": "Operations" }, { - "ammp": true, "arm-service": "microsoft.network/applicationGateways", "checklist": "WAF checklist", "guid": "d301d6e8-72e5-42e3-911c-c58b5a4b1511", @@ -27082,7 +28063,7 @@ "VNet" ], "severity": "High", - "text": "Ensure that control-plane communication for Azure PaaS services injected into a virtual network is not broken, for example with a 0.0.0.0/0 route or an NSG rule that blocks control plane traffic.", + "text": "Do not disrupt control-plane communication for Azure PaaS services injected into a virtual networks, such as with a 0.0.0.0/0 route or an NSG rule that blocks control plane traffic.", "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn", "waf": "Security" }, @@ -27090,12 +28071,12 @@ "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "guid": "b3e4563a-4d87-4397-98b6-62d6d15f512a", - "link": "https://learn.microsoft.com/azure/app-service/networking-features", + "link": "https://learn.microsoft.com/azure/private-link/private-endpoint-overview", "service": "ExpressRoute", "services": [ - "WAF", + "PrivateLink", "ExpressRoute", - "PrivateLink" + "WAF" ], "severity": "Medium", "text": "Access Azure PaaS services from on-premises via private endpoints and ExpressRoute private peering. This method avoids transiting over the public internet.", @@ -27107,13 +28088,13 @@ "checklist": "WAF checklist", "graph": "resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc", "guid": "4704489a-8042-4d88-b79d-17b73b22a5a6", - "link": "https://learn.microsoft.com/azure/app-service/networking-features", + "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview", "service": "VNet", "services": [ "WAF", "VNet" ], - "severity": "Medium", + "severity": "High", "text": "Don't enable virtual network service endpoints by default on all subnets.", "training": "https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn", "waf": "Security" @@ -27122,14 +28103,14 @@ "arm-service": "Microsoft.Network/azureFirewalls", "checklist": "WAF checklist", "guid": "7e7a8ed4-b30e-438c-9f29-812b2363cefe", - "link": "https://learn.microsoft.com/azure/app-service/networking-features", + "link": "azure/private-link/inspect-traffic-with-azure-firewall", "service": "Firewall", "services": [ - "WAF", - "PrivateLink", "Firewall", + "PrivateLink", "NVA", - "DNS" + "DNS", + "WAF" ], "severity": "Medium", "text": "Filter egress traffic to Azure PaaS services using FQDNs instead of IP addresses in Azure Firewall or an NVA to prevent data exfiltration. If using Private Link you can block all FQDNs, otherwise allow only the required PaaS services.", @@ -27137,7 +28118,6 @@ "waf": "Security" }, { - "ammp": true, "arm-service": "microsoft.network/expressRouteCircuits", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant", @@ -27145,13 +28125,13 @@ "link": "https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway", "service": "ExpressRoute", "services": [ - "WAF", - "VNet", + "ExpressRoute", "VPN", - "ExpressRoute" + "WAF", + "VNet" ], "severity": "High", - "text": "Use at least a /27 prefix for your Gateway subnets", + "text": "Use at least a /27 prefix for your Gateway subnets.", "waf": "Security" }, { @@ -27165,7 +28145,7 @@ "WAF", "VNet" ], - "severity": "Medium", + "severity": "High", "text": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity.", "waf": "Security" }, @@ -27176,8 +28156,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-landing-zone-network-segmentation", "service": "NSG", "services": [ - "WAF", "ACR", + "WAF", "VNet" ], "severity": "Medium", @@ -27185,22 +28165,6 @@ "training": "https://learn.microsoft.com/learn/paths/implement-network-security/", "waf": "Security" }, - { - "arm-service": "Microsoft.Network/networkSecurityGroups", - "checklist": "WAF checklist", - "graph": "Resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetName=subnets.name,subnetNsg=subnets.properties.networkSecurityGroup | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend compliant = isnotnull(subnetNsg)", - "guid": "9c2299c4-d7b5-47d0-a655-562f2b3e4563", - "service": "NSG", - "services": [ - "WAF", - "VNet", - "VM" - ], - "severity": "Medium", - "text": "The application team should use application security groups at the subnet-level NSGs to help protect multi-tier VMs within the landing zone.", - "training": "https://learn.microsoft.com/learn/paths/implement-network-security/", - "waf": "Security" - }, { "arm-service": "Microsoft.Network/networkSecurityGroups", "checklist": "WAF checklist", @@ -27208,10 +28172,10 @@ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works", "service": "NSG", "services": [ + "NVA", "WAF", - "Entra", "VNet", - "NVA" + "Entra" ], "severity": "Medium", "text": "Use NSGs and application security groups to micro-segment traffic within the landing zone and avoid using a central NVA to filter traffic flows.", @@ -27222,12 +28186,12 @@ "arm-service": "Microsoft.Network/networkSecurityGroups", "checklist": "WAF checklist", "guid": "dfe237de-143b-416c-91d7-aa9b64704489", - "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works", + "link": "https://learn.microsoft.com/azure/network-watcher/vnet-flow-logs-overview", "service": "NSG", "services": [ + "NetworkWatcher", "WAF", - "VNet", - "NetworkWatcher" + "VNet" ], "severity": "Medium", "text": "Enable VNet Flow Logs and feed them into Traffic Analytics to gain insights into internal and external traffic flows.", @@ -27246,7 +28210,7 @@ "VNet" ], "severity": "Medium", - "text": "Consider the limit of NSG rules per NSG (1000).", + "text": "Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules.", "training": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works", "waf": "Reliability" }, @@ -27257,11 +28221,11 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-any-to-any", "service": "VWAN", "services": [ - "WAF", - "VWAN" + "VWAN", + "WAF" ], "severity": "Medium", - "text": "Consider Virtual WAN for simplified Azure networking management, and make sure your scenario is explicitly described in the list of Virtual WAN routing designs", + "text": "Use Virtual WAN if your scenario is explicitly described in the list of Virtual WAN routing designs.", "training": "https://learn.microsoft.com/learn/modules/introduction-azure-virtual-wan/", "waf": "Operations" }, @@ -27269,44 +28233,30 @@ "arm-service": "microsoft.network/virtualWans", "checklist": "WAF checklist", "guid": "54b69bad-33aa-4d5e-ac68-e1d76667313b", - "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/virtual-wan-network-topology#virtual-wan-network-design-recommendationst", "service": "VWAN", "services": [ - "WAF", "VWAN", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "Use a Virtual WAN hub per Azure region to connect multiple landing zones together across Azure regions via a common global Azure Virtual WAN.", "waf": "Performance" }, - { - "arm-service": "microsoft.network/virtualWans", - "checklist": "WAF checklist", - "guid": "8ac6a9e0-1e6a-483d-b5de-32c199248160", - "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about", - "service": "VWAN", - "services": [ - "WAF", - "ACR" - ], - "severity": "Low", - "text": "Follow the principle 'traffic in Azure stays in Azure' so that communication across resources in Azure occurs via the Microsoft backbone network", - "waf": "Performance" - }, { "arm-service": "microsoft.network/virtualWans", "checklist": "WAF checklist", "graph": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant", "guid": "7d5d1e4e-6146-458d-9558-fd77249b8211", - "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-about", + "link": "https://learn.microsoft.com/azure/virtual-wan/howto-firewall", "service": "VWAN", "services": [ - "WAF", - "Firewall" + "Firewall", + "WAF" ], "severity": "Medium", - "text": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs", + "text": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs.", "training": "https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/", "waf": "Security" }, @@ -27314,14 +28264,14 @@ "arm-service": "microsoft.network/virtualWans", "checklist": "WAF checklist", "guid": "6667313b-4f56-464b-9e98-4a859c773e7d", - "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits", + "link": "https://learn.microsoft.com/azure/virtual-wan/migrate-from-hub-spoke-topology", "service": "VWAN", "services": [ - "WAF", - "VWAN" + "VWAN", + "WAF" ], "severity": "Medium", - "text": "Ensure that the network architecture is within the Azure Virtual WAN limits.", + "text": "Ensure that your virtual WAN network architecture aligns to an identified architecture scenario.", "waf": "Reliability" }, { @@ -27331,9 +28281,9 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/azure-monitor-insights", "service": "VWAN", "services": [ - "WAF", "VWAN", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Use Azure Monitor Insights for Virtual WAN to monitor the end-to-end topology of the Virtual WAN, status, and key metrics.", @@ -27346,11 +28296,11 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/virtual-wan-faq#is-branch-to-branch-connectivity-allowed-in-virtual-wan", "service": "VWAN", "services": [ - "WAF", - "VWAN" + "VWAN", + "WAF" ], "severity": "Medium", - "text": "Make sure that your IaC deployments does not disable branch-to-branch traffic in Virtual WAN, unless these flows should be explicitly blocked.", + "text": "Do not disable branch-to-branch traffic in Virtual WAN, unless these flows should be explicitly blocked.", "waf": "Reliability" }, { @@ -27360,9 +28310,9 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing-preference", "service": "VWAN", "services": [ - "WAF", "ExpressRoute", - "VPN" + "VPN", + "WAF" ], "severity": "Medium", "text": "Use AS-Path as hub routing preference, since it is more flexible than ExpressRoute or VPN.", @@ -27375,15 +28325,14 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/about-virtual-hub-routing#labels", "service": "VWAN", "services": [ - "WAF", - "VWAN" + "VWAN", + "WAF" ], "severity": "Medium", - "text": "Make sure that your IaC deployments are configuring label-based propagation in Virtual WAN, otherwise connectivity between virtual hubs will be impaired.", + "text": "Configure label-based propagation in Virtual WAN, otherwise connectivity between virtual hubs will be impaired.", "waf": "Reliability" }, { - "ammp": true, "arm-service": "microsoft.network/virtualWans", "checklist": "WAF checklist", "guid": "9c75dfef-573c-461c-a698-68598595581a", @@ -27393,19 +28342,18 @@ "WAF" ], "severity": "High", - "text": "Assign enough IP space to virtual hubs, ideally a /23 prefix.", + "text": "Assign at least a /23 prefix to virtual hubs to ensure enough IP space is available.", "waf": "Reliability" }, { - "ammp": true, "arm-service": "Microsoft.Authorization/policyDefinitions", "checklist": "WAF checklist", "guid": "5c986cb2-9131-456a-8247-6e49f541acdc", "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "High", "text": "Leverage Azure Policy strategically, define controls for your environment, using Policy Initiatives to group related policies.", @@ -27418,9 +28366,9 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "WAF", "RBAC", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Map regulatory and compliance requirements to Azure Policy definitions and Azure role assignments.", @@ -27433,12 +28381,12 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "WAF", + "Subscriptions", "AzurePolicy", - "Subscriptions" + "WAF" ], "severity": "Medium", - "text": "Establish Azure Policy definitions at the intermediate root management group so that they can be assigned at inherited scopes", + "text": "Establish Azure Policy definitions at the intermediate root management group so that they can be assigned at inherited scopes.", "waf": "Security" }, { @@ -27448,10 +28396,10 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], - "severity": "Medium", + "severity": "High", "text": "Manage policy assignments at the highest appropriate level with exclusions at bottom levels, if required.", "waf": "Security" }, @@ -27462,12 +28410,12 @@ "link": "https://learn.microsoft.com/security/benchmark/azure/mcsb-asset-management#am-2-use-only-approved-services", "service": "Policy", "services": [ - "WAF", + "Subscriptions", "AzurePolicy", - "Subscriptions" + "WAF" ], "severity": "Low", - "text": "Use Azure Policy to control which services users can provision at the subscription/management group level", + "text": "Use Azure Policy to control which services users can provision at the subscription/management group level.", "waf": "Security" }, { @@ -27477,10 +28425,10 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], - "severity": "Medium", + "severity": "High", "text": "Use built-in policies where possible to minimize operational overhead.", "waf": "Security" }, @@ -27492,11 +28440,11 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview#azure-rbac-permissions-in-azure-policy", "service": "Policy", "services": [ - "WAF", "Subscriptions", - "RBAC", "AzurePolicy", - "Entra" + "Entra", + "RBAC", + "WAF" ], "severity": "Medium", "text": "Assign the built-in Resource Policy Contributor role at a particular scope to enable application-level governance.", @@ -27509,9 +28457,9 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "Policy", "services": [ - "WAF", + "Subscriptions", "AzurePolicy", - "Subscriptions" + "WAF" ], "severity": "Medium", "text": "Limit the number of Azure Policy assignments made at the root management group scope to avoid managing through exclusions at inherited scopes.", @@ -27524,11 +28472,11 @@ "link": "https://learn.microsoft.com/industry/release-plan/2023wave2/cloud-sovereignty/enable-data-sovereignty-policy-baseline", "service": "Policy", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", - "text": "If any data sovereignty requirements exist, Azure Policies can be deployed to enforce them", + "text": "If any data sovereignty requirements exist, Azure Policies should be deployed to enforce them.", "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/", "waf": "Security" }, @@ -27539,11 +28487,12 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/sovereign-landing-zone", "service": "Policy", "services": [ - "WAF", - "AzurePolicy" + "Subscriptions", + "AzurePolicy", + "WAF" ], "severity": "Medium", - "text": "For Sovereign Landing Zone, sovereignty policy baseline' policy initiative is deployed and and assigned at correct MG level.", + "text": "For Sovereign Landing Zone, deploy sovereignty policy baseline and assign at correct management group level.", "waf": "Security" }, { @@ -27553,24 +28502,25 @@ "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline", "service": "Policy", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", - "text": "For Sovereign Landing Zone, sovereign Control objectives to policy mapping' is documented.", + "text": "For Sovereign Landing Zone, document Sovereign Control objectives to policy mapping.", "waf": "Security" }, { "arm-service": "Microsoft.Authorization/policyDefinitions", "checklist": "WAF checklist", "guid": "9b461617-db7b-4399-8ac6-d4eb7153893a", + "link": "https://learn.microsoft.com/industry/sovereignty/policy-portfolio-baseline#sovereignty-baseline-policy-initiatives", "service": "Policy", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", - "text": "For Sovereign Landing Zone, process is in place for CRUD of 'Sovereign Control objectives to policy mapping'.", + "text": "For Sovereign Landing Zone, ensure process is in place for management of 'Sovereign Control objectives to policy mapping'.", "waf": "Security" }, { @@ -27580,11 +28530,11 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment", "service": "Monitor", "services": [ - "WAF", + "AzurePolicy", "Monitor", + "Entra", "RBAC", - "AzurePolicy", - "Entra" + "WAF" ], "severity": "Medium", "text": "Use a single monitor logs workspace to manage platforms centrally except where Azure role-based access control (Azure RBAC), data sovereignty requirements, or data retention policies mandate separate workspaces.", @@ -27598,12 +28548,12 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/data-retention-archive?tabs=portal-1%2Cportal-2#how-retention-and-archiving-work", "service": "Monitor", "services": [ - "WAF", "ARS", "AzurePolicy", + "WAF", "Storage" ], - "severity": "Medium", + "severity": "High", "text": "Export logs to Azure Storage if your log retention requirements exceed twelve years. Use immutable storage with a write-once, read-many policy to make data non-erasable and non-modifiable for a user-specified interval.", "training": "https://learn.microsoft.com/learn/paths/architect-infrastructure-operations/", "waf": "Operations" @@ -27615,10 +28565,10 @@ "link": "https://learn.microsoft.com/azure/governance/machine-configuration/overview", "service": "VM", "services": [ - "WAF", + "Monitor", "AzurePolicy", - "VM", - "Monitor" + "WAF", + "VM" ], "severity": "Medium", "text": "Monitor OS level virtual machine (VM) configuration drift using Azure Policy. Enabling Azure Automanage Machine Configuration audit capabilities through policy helps application team workloads to immediately consume feature capabilities with little effort.", @@ -27629,11 +28579,11 @@ "arm-service": "Microsoft.Compute/virtualMachines", "checklist": "WAF checklist", "guid": "f9887952-5d62-4688-9d70-ba6c97be9951", - "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs in Azure.", @@ -27647,8 +28597,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#update-management-considerations ", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Use Azure Update Manager as a patching mechanism for Windows and Linux VMs outside of Azure using Azure Arc.", @@ -27662,12 +28612,12 @@ "link": "https://learn.microsoft.com/azure/network-watcher/network-watcher-monitoring-overview", "service": "Network Watcher", "services": [ - "WAF", + "Monitor", "NetworkWatcher", - "Monitor" + "WAF" ], "severity": "Medium", - "text": "Use Network Watcher to proactively monitor traffic flows", + "text": "Use Network Watcher to proactively monitor traffic flows.", "training": "https://learn.microsoft.com/learn/modules/configure-network-watcher/", "waf": "Operations" }, @@ -27678,8 +28628,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor", "service": "Monitor", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Use Azure Monitor Logs for insights and reporting.", @@ -27692,8 +28642,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/alerts/alerts-overview", "service": "Monitor", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Use Azure Monitor alerts for the generation of operational alerts.", @@ -27706,8 +28656,8 @@ "link": "https://learn.microsoft.com/azure/automation/how-to/region-mappings", "service": "Monitor", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "When using Change and Inventory Tracking via Azure Automation Accounts, ensure that you have selected supported regions for linking your Log Analytics workspace and automation accounts together.", @@ -27720,11 +28670,11 @@ "link": "https://learn.microsoft.com/azure/storage/common/storage-redundancy", "service": "Backup", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], - "severity": "Medium", - "text": "When using Azure Backup, consider the different backup types (GRS, ZRS & LRS) as the default setting is GRS", + "severity": "Low", + "text": "When using Azure Backup, use the correct backup types (GRS, ZRS & LRS) for your backup, as the default setting is GRS.", "waf": "Reliability" }, { @@ -27734,26 +28684,26 @@ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/guest-configuration", "service": "VM", "services": [ - "WAF", + "VM", "AzurePolicy", - "VM" + "WAF" ], "severity": "Medium", - "text": "Use Azure policies to automatically deploy software configurations through VM extensions and enforce a compliant baseline VM configuration.", + "text": "Use Azure guest policies to automatically deploy software configurations through VM extensions and enforce a compliant baseline VM configuration.", "waf": "Security" }, { "arm-service": "Microsoft.Compute/virtualMachines", "checklist": "WAF checklist", - "description": "Azure Policy's guest configuration features can audit and remediate machine settings (e.g., OS, application, environment) to ensure resources align with expected configurations, and Update Management can enforce patch management for VMs.", + "description": "Use Azure Policy's guest configuration features to audit and remediate machine settings (e.g., OS, application, environment) to ensure resources align with expected configurations, and Update Management can enforce patch management for VMs.", "guid": "da6e55d7-d8a2-4adb-817d-6326af625ca4", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/management-operational-compliance#monitoring-for-configuration-drift", "service": "VM", "services": [ - "WAF", + "Monitor", "AzurePolicy", - "VM", - "Monitor" + "WAF", + "VM" ], "severity": "Medium", "text": "Monitor VM security configuration drift via Azure Policy.", @@ -27766,9 +28716,9 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview", "service": "VM", "services": [ - "WAF", - "ACR", "ASR", + "ACR", + "WAF", "VM" ], "severity": "Medium", @@ -27782,70 +28732,23 @@ "link": "https://learn.microsoft.com/azure/backup/backup-center-overview", "service": "Backup", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Use Azure-native backup capabilities, or an Azure-compatible, 3rd-party backup solution.", "waf": "Operations" }, { - "ammp": true, - "arm-service": "Microsoft.Compute/virtualMachines", - "checklist": "WAF checklist", - "guid": "826c5c45-bb79-4951-a812-e3bfbfd7326b", - "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview", - "service": "VM", - "services": [ - "WAF", - "VM" - ], - "severity": "High", - "text": "Leverage Availability Zones for your VMs in regions where they are supported.", - "waf": "Reliability" - }, - { - "ammp": true, - "arm-service": "Microsoft.Compute/virtualMachines", - "checklist": "WAF checklist", - "guid": "7ccb7c06-5511-42df-8177-d97f08d0337d", - "link": "https://learn.microsoft.com/azure/virtual-machines/availability", - "service": "VM", - "services": [ - "WAF", - "VM" - ], - "severity": "High", - "text": "Avoid running a production workload on a single VM.", - "waf": "Reliability" - }, - { - "arm-service": "Microsoft.Compute/virtualMachines", - "checklist": "WAF checklist", - "guid": "84101f59-1941-4195-a270-e28034290e3a", - "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview", - "service": "VM", - "services": [ - "WAF", - "ACR", - "LoadBalancer", - "AppGW" - ], - "severity": "Medium", - "text": "Azure Load Balancer and Application Gateway distribute incoming network traffic across multiple resources.", - "waf": "Reliability" - }, - { - "ammp": true, "arm-service": "microsoft.network/frontdoorwebApplicationFirewalls", "checklist": "WAF checklist", "guid": "89cc5e11-aa4d-4c3b-893d-feb99215266a", "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#add-diagnostic-settings-to-save-your-wafs-logs", "service": "WAF", "services": [ + "AppGW", "WAF", - "FrontDoor", - "AppGW" + "FrontDoor" ], "severity": "High", "text": "Add diagnostic settings to save WAF logs from application delivery services like Azure Front Door and Azure Application Gateway. Regularly review the logs to check for attacks and for false positive detections.", @@ -27858,17 +28761,16 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel", "service": "WAF", "services": [ - "WAF", - "FrontDoor", "AppGW", - "Sentinel" + "WAF", + "Sentinel", + "FrontDoor" ], "severity": "Medium", "text": "Send WAF logs from your application delivery services like Azure Front Door and Azure Application Gateway to Microsoft Sentinel. Detect attacks and integrate WAF telemetry into your overall Azure environment.", "waf": "Operations" }, { - "ammp": true, "arm-service": "Microsoft.KeyVault/vaults", "checklist": "WAF checklist", "guid": "5017f154-e3ab-4369-9829-e7e316183687", @@ -27879,7 +28781,7 @@ "AKV" ], "severity": "High", - "text": "Use Azure Key Vault to store your secrets and credentials", + "text": "Use Azure Key Vault to store your secrets and credentials.", "waf": "Security" }, { @@ -27904,9 +28806,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ + "AzurePolicy", "WAF", - "AKV", - "AzurePolicy" + "AKV" ], "severity": "Medium", "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.", @@ -27919,9 +28821,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ + "RBAC", "WAF", "AKV", - "RBAC", "Entra" ], "severity": "Medium", @@ -27961,10 +28863,10 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "WAF", - "AKV", + "PrivateLink", "VNet", - "PrivateLink" + "WAF", + "AKV" ], "severity": "Medium", "text": "Enable firewall and virtual network service endpoint or private endpoint on the vault to control access to the key vault.", @@ -27977,9 +28879,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/monitor-key-vault", "service": "Key Vault", "services": [ + "Monitor", "WAF", "AKV", - "Monitor", "Entra" ], "severity": "Medium", @@ -27993,9 +28895,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ + "AzurePolicy", "WAF", - "AKV", - "AzurePolicy" + "AKV" ], "severity": "Medium", "text": "Delegate Key Vault instantiation and privileged access and use Azure Policy to enforce a consistent compliant configuration.", @@ -28022,9 +28924,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ - "WAF", - "ACR", "ASR", + "ACR", + "WAF", "AKV" ], "severity": "Medium", @@ -28059,52 +28961,48 @@ "waf": "Security" }, { - "ammp": true, "checklist": "WAF checklist", "guid": "09945bda-4333-44f2-9911-634182ba5275", "link": "https://learn.microsoft.com/azure/defender-for-cloud/concept-cloud-security-posture-management", "service": "Defender", "services": [ - "WAF", + "Defender", "Subscriptions", - "Defender" + "WAF" ], "severity": "High", "text": "Enable Defender Cloud Security Posture Management for all subscriptions.", "waf": "Security" }, { - "ammp": true, "checklist": "WAF checklist", "guid": "36a72a48-fffe-4c40-9747-0ab5064355ba", "link": "https://learn.microsoft.com/azure/defender-for-cloud/plan-defender-for-servers-select-plan", "service": "Defender", "services": [ - "WAF", + "Defender", "Subscriptions", - "Defender" + "WAF" ], "severity": "High", "text": "Enable a Defender Cloud Workload Protection Plan for Servers on all subscriptions.", "waf": "Security" }, { - "ammp": true, "checklist": "WAF checklist", "guid": "77425f48-ecba-43a0-aeac-a3ac733ccc6a", "link": "https://learn.microsoft.com/azure/defender-for-cloud/connect-azure-subscription", "service": "Defender", "services": [ - "WAF", + "Defender", "Subscriptions", - "Defender" + "WAF" ], "severity": "High", "text": "Enable Defender Cloud Workload Protection Plans for Azure Resources on all subscriptions.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Compute/virtualMachines", "checklist": "WAF checklist", "guid": "24d96b30-61ee-4436-a1cc-d6ef08bc574b", @@ -28124,9 +29022,9 @@ "link": "https://learn.microsoft.com/azure/security-center/", "service": "VM", "services": [ - "WAF", + "Defender", "Monitor", - "Defender" + "WAF" ], "severity": "Medium", "text": "Monitor base operating system patching drift via Azure Monitor Logs and Defender for Cloud.", @@ -28139,9 +29037,9 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment", "service": "Monitor", "services": [ + "Monitor", "WAF", - "Entra", - "Monitor" + "Entra" ], "severity": "Medium", "text": "Connect default resource configurations to a centralized Azure Monitor Log Analytics workspace.", @@ -28157,7 +29055,7 @@ "Entra" ], "severity": "Medium", - "text": "For Sovereign Landing Zone, transparency logs is enabled on the Entra ID tenant.", + "text": "For Sovereign Landing Zone, enable transparancy logs on the Entra ID tenant.", "waf": "Security" }, { @@ -28170,11 +29068,10 @@ "Entra" ], "severity": "Medium", - "text": "For Sovereign Landing Zone, customer Lockbox is enabled on the Entra ID tenant.", + "text": "For Sovereign Landing Zone, enable customer Lockbox on the Entra ID tenant.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Storage/storageAccounts", "checklist": "WAF checklist", "guid": "b03ed428-4617-4067-a787-85468b9ccf3f", @@ -28185,11 +29082,10 @@ "Storage" ], "severity": "High", - "text": "Secure transfer to storage accounts should be enabled", + "text": "Enable secure transfer to storage accounts.", "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.Storage/storageAccounts", "checklist": "WAF checklist", "guid": "159aac9f-863f-4f48-82cf-00c28fa97a0e", @@ -28204,16 +29100,15 @@ "waf": "Security" }, { - "ammp": true, "arm-service": "Microsoft.KeyVault/vaults", "checklist": "WAF checklist", "guid": "108d5099-a11d-4445-bd8b-e12a5e95412e", "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/considerations/development-strategy-development-lifecycle#automated-builds", "service": "Key Vault", "services": [ + "VM", "WAF", - "AKV", - "VM" + "AKV" ], "severity": "High", "text": "Use Key Vault secrets to avoid hard-coding sensitive information such as credentials (virtual machines user passwords), certificates or keys.", @@ -28226,8 +29121,8 @@ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-zone-redundancy", "service": "Redis", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "High", "text": "Enable zone redundancy for Azure Cache for Redis. Azure Cache for Redis supports zone redundant configurations in the Premium and Enterprise tiers. A zone redundant cache can place its nodes across different Azure Availability Zones in the same region. It eliminates data center or AZ outage as a single point of failure and increases the overall availability of your cache.", @@ -28268,8 +29163,8 @@ "link": "https://learn.microsoft.com/azure/azure-cache-for-redis/cache-how-to-geo-replication", "service": "Redis", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "Medium", "text": "Configure passive geo-replication for Premium Azure Cache for Redis instances. Geo-replication is a mechanism for linking two or more Azure Cache for Redis instances, typically spanning two Azure regions. Geo-replication is designed mainly for cross-region disaster recovery. Two Premium tier cache instances are connected through geo-replication in a way that provides reads and writes to your primary cache, and that data is replicated to the secondary cache.", @@ -28360,8 +29255,8 @@ "link": "https://learn.microsoft.com/en-us/azure/app-service/overview-hosting-plans", "service": "App Services", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Use Premium and Standard tiers. These tiers support staging slots and automated backups.", @@ -28400,8 +29295,8 @@ "link": "https://learn.microsoft.com/en-us/azure/app-service/manage-backup", "service": "App Services", "services": [ - "WAF", "Backup", + "WAF", "AppSvc" ], "severity": "High", @@ -28471,9 +29366,9 @@ "link": "https://learn.microsoft.com/en-us/azure/app-service/monitor-instances-health-check", "service": "App Services", "services": [ + "Monitor", "WAF", - "AppSvc", - "Monitor" + "AppSvc" ], "severity": "Medium", "text": "Monitor App Service instances using Health checks", @@ -28486,8 +29381,8 @@ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-overview", "service": "App Services", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Monitor availability and responsiveness of web app or website using Application Insights availability tests", @@ -28500,8 +29395,8 @@ "link": "https://learn.microsoft.com/en-us/azure/azure-monitor/app/availability-standard-tests", "service": "App Services", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Low", "text": "Use Application Insights Standard test to monitor availability and responsiveness of web app or website", @@ -28531,9 +29426,9 @@ "link": "https://learn.microsoft.com/azure/app-service/app-service-key-vault-references", "service": "App Services", "services": [ + "AppSvc", "WAF", "AKV", - "AppSvc", "Entra" ], "severity": "High", @@ -28564,9 +29459,9 @@ "link": "https://learn.microsoft.com/azure/app-service/overview-hosting-plans", "service": "App Services", "services": [ + "Subscriptions", "WAF", - "AppSvc", - "Subscriptions" + "AppSvc" ], "severity": "Medium", "text": "Isolate systems that process sensitive information", @@ -28580,8 +29475,8 @@ "link": "https://learn.microsoft.com/azure/app-service/operating-system-functionality#file-access", "service": "App Services", "services": [ - "WAF", "TrafficManager", + "WAF", "AppSvc" ], "severity": "Medium", @@ -28596,9 +29491,9 @@ "link": "https://learn.microsoft.com/azure/app-service/overview-authentication-authorization", "service": "App Services", "services": [ + "AppSvc", "WAF", - "Entra", - "AppSvc" + "Entra" ], "severity": "Medium", "text": "Use an established Identity Provider for authentication", @@ -28643,8 +29538,8 @@ "service": "App Services", "services": [ "WAF", - "Entra", - "AKV" + "AKV", + "Entra" ], "severity": "High", "text": "Use Managed Identity to connect to resources", @@ -28658,9 +29553,9 @@ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-managed-identity-to-pull-image-from-azure-container-registry", "service": "App Services", "services": [ + "ACR", "WAF", - "Entra", - "ACR" + "Entra" ], "severity": "High", "text": "Pull containers using a Managed Identity", @@ -28674,10 +29569,10 @@ "link": "https://learn.microsoft.com/azure/app-service/troubleshoot-diagnostic-logs", "service": "App Services", "services": [ - "WAF", "Entra", - "AppSvc", - "Monitor" + "Monitor", + "WAF", + "AppSvc" ], "severity": "Medium", "text": "Send App Service runtime logs to Log Analytics", @@ -28691,10 +29586,10 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/essentials/activity-log", "service": "App Services", "services": [ - "WAF", "Entra", - "AppSvc", - "Monitor" + "Monitor", + "WAF", + "AppSvc" ], "severity": "Medium", "text": "Send App Service activity logs to Log Analytics", @@ -28708,11 +29603,11 @@ "link": "https://learn.microsoft.com/azure/app-service/overview-vnet-integration", "service": "App Services", "services": [ - "WAF", "Firewall", - "Monitor", "VNet", - "NVA" + "NVA", + "Monitor", + "WAF" ], "severity": "Medium", "text": "Outbound network access should be controlled", @@ -28726,12 +29621,12 @@ "link": "https://learn.microsoft.com/azure/app-service/networking/nat-gateway-integration", "service": "App Services", "services": [ - "WAF", "Firewall", - "PrivateLink", "VNet", + "PrivateLink", "NVA", - "Storage" + "Storage", + "WAF" ], "severity": "Low", "text": "Ensure a stable IP for outbound communications towards internet addresses", @@ -28745,9 +29640,9 @@ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions", "service": "App Services", "services": [ + "PrivateLink", "WAF", - "AppSvc", - "PrivateLink" + "AppSvc" ], "severity": "High", "text": "Inbound network access should be controlled", @@ -28761,10 +29656,10 @@ "link": "https://learn.microsoft.com/azure/app-service/networking/app-gateway-with-service-endpoints", "service": "App Services", "services": [ - "WAF", + "AppSvc", "Monitor", "AppGW", - "AppSvc", + "WAF", "FrontDoor" ], "severity": "High", @@ -28779,8 +29674,8 @@ "link": "https://learn.microsoft.com/azure/app-service/networking-features#access-restrictions", "service": "App Services", "services": [ - "WAF", - "PrivateLink" + "PrivateLink", + "WAF" ], "severity": "High", "text": "Avoid for WAF to be bypassed", @@ -28795,8 +29690,8 @@ "link": "https://learn.microsoft.com/azure/app-service/configure-ssl-bindings#enforce-tls-versions", "service": "App Services", "services": [ - "WAF", "AzurePolicy", + "WAF", "AppSvc" ], "severity": "Medium", @@ -28857,9 +29752,9 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-app-service-introduction", "service": "App Services", "services": [ + "Defender", "WAF", - "AppSvc", - "Defender" + "AppSvc" ], "severity": "Medium", "text": "Enable Defender for Cloud - Defender for App Service", @@ -28873,12 +29768,12 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "service": "App Services", "services": [ - "WAF", + "DDoS", + "VNet", + "NVA", "EventHubs", "AppGW", - "VNet", - "DDoS", - "NVA" + "WAF" ], "severity": "Medium", "text": "Enable DDOS Protection Standard on the WAF VNet", @@ -28892,10 +29787,10 @@ "link": "https://learn.microsoft.com/azure/app-service/configure-custom-container#use-an-image-from-a-network-protected-registry", "service": "App Services", "services": [ - "WAF", + "PrivateLink", "ACR", - "VNet", - "PrivateLink" + "WAF", + "VNet" ], "severity": "Medium", "text": "Pull containers over a Virtual Network", @@ -28949,9 +29844,9 @@ "guid": "32e42e36-11c8-418b-8a0b-c510e43a18a9", "service": "AVS", "services": [ + "Subscriptions", "WAF", - "Entra", - "Subscriptions" + "Entra" ], "severity": "High", "text": "Ensure ADDS domain controller(s) are deployed in the identity subscription in native Azure", @@ -28963,8 +29858,8 @@ "guid": "75089c20-990d-4927-b105-885576f76fc2", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Ensure ADDS sites and services is configured to keep authentication requests from Azure-based resources (including Azure VMware Solution) local to Azure", @@ -29025,9 +29920,9 @@ "guid": "ae0e37ce-e297-411b-b352-caaab79b198d", "service": "AVS", "services": [ - "WAF", "RBAC", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Has an RBAC model been created for use within VMware vSphere", @@ -29039,8 +29934,8 @@ "guid": "ab81932c-9fc9-4d1b-a780-36f5e6bfbb9e", "service": "AVS", "services": [ - "WAF", - "RBAC" + "RBAC", + "WAF" ], "severity": "Medium", "text": "RBAC permissions should be granted on ADDS groups and not on specific users", @@ -29052,9 +29947,9 @@ "guid": "d503547c-c447-4e82-9128-a71f0f1cac6d", "service": "AVS", "services": [ - "WAF", "RBAC", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "RBAC permissions on the Azure VMware Solution resource in Azure are 'locked down' to a limited set of owners only", @@ -29066,8 +29961,8 @@ "guid": "fd9f0df4-68dc-4976-b9a9-e6a79f7682c5", "service": "AVS", "services": [ - "WAF", - "RBAC" + "RBAC", + "WAF" ], "severity": "High", "text": "Ensure all custom roles are scoped with CloudAdmin permitted authorizations", @@ -29080,8 +29975,8 @@ "link": "https://github.com/Azure/AzureCAT-AVS/tree/main/networking", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "Is the correct Azure VMware Solution connectivity model selected for the customer use case at hand", @@ -29093,11 +29988,11 @@ "guid": "eb710a37-cbc1-4055-8dd5-a936a8bb7cf5", "service": "AVS", "services": [ - "WAF", - "Monitor", "NetworkWatcher", + "VPN", + "Monitor", "ExpressRoute", - "VPN" + "WAF" ], "severity": "High", "text": "Ensure ExpressRoute or VPN connections from on-premises to Azure are monitored using 'connection monitor'", @@ -29109,12 +30004,12 @@ "guid": "976e24f2-a7f8-426c-9253-2a92a2a7ed99", "service": "AVS", "services": [ - "WAF", - "Monitor", - "NetworkWatcher", "ExpressRoute", + "Monitor", "VM", - "AVS" + "NetworkWatcher", + "AVS", + "WAF" ], "severity": "Medium", "text": "Ensure a connection monitor is created from an Azure native resource to an Azure VMware Solution virtual machine to monitor the Azure VMware Solution back-end ExpressRoute connection", @@ -29126,11 +30021,11 @@ "guid": "f41ce6a0-64f3-4805-bc65-3ab50df01265", "service": "AVS", "services": [ - "WAF", "Monitor", - "NetworkWatcher", "VM", - "AVS" + "NetworkWatcher", + "AVS", + "WAF" ], "severity": "Medium", "text": "Ensure a connection monitor is created from an on-premises resource to an Azure VMware Solution virtual machine to monitor end-2-end connectivity", @@ -29142,8 +30037,8 @@ "guid": "563b4dc7-4a74-48b6-933a-d1a0916a6649", "service": "AVS", "services": [ - "WAF", - "ARS" + "ARS", + "WAF" ], "severity": "High", "text": "When route server is used, ensure no more then 1000 routes are propagated from route server to ExR gateway to on-premises (ARS limit).", @@ -29155,10 +30050,10 @@ "guid": "6128a71f-0f1c-4ac6-b9ef-1d5e832e42e3", "service": "AVS", "services": [ - "WAF", - "Entra", "RBAC", - "AVS" + "AVS", + "WAF", + "Entra" ], "severity": "High", "text": "Is Privileged Identity Management implemented for roles managing the Azure VMware Solution resource in the Azure Portal (no standing permissions allowed)", @@ -29170,10 +30065,10 @@ "guid": "c4e2436b-b336-4d71-9f17-960eee0b9b5c", "service": "AVS", "services": [ - "WAF", - "Entra", "RBAC", - "AVS" + "AVS", + "WAF", + "Entra" ], "severity": "High", "text": "Privileged Identity Management audit reporting should be implemented for the Azure VMware Solution PIM roles", @@ -29185,9 +30080,9 @@ "guid": "78c447a8-26b2-4863-af0f-1cac599ef1d5", "service": "AVS", "services": [ + "AVS", "WAF", - "Entra", - "AVS" + "Entra" ], "severity": "Medium", "text": "If using Privileged Identity Management is being used, ensure that a valid Entra ID enabled account is created with a valid SMTP record for Azure VMware Solution Automatic Host replacement notifications. (standing permissions required)", @@ -29211,8 +30106,8 @@ "guid": "d329f798-bc17-48bd-a5a0-6ca7144351d1", "service": "AVS", "services": [ - "WAF", - "RBAC" + "RBAC", + "WAF" ], "severity": "Medium", "text": "Create custom RBAC roles in vCenter to implement a least-privilege model inside vCenter", @@ -29236,10 +30131,10 @@ "guid": "586cb291-ec16-4a1d-876e-f9f141acdce5", "service": "AVS", "services": [ - "WAF", - "Entra", "VM", - "AVS" + "AVS", + "WAF", + "Entra" ], "severity": "High", "text": "Use a centralized identity provider to be used for workloads (VM's) running on Azure VMware Solution", @@ -29263,10 +30158,10 @@ "guid": "a2adb1c3-d232-46af-825c-a44e1695fddd", "service": "AVS", "services": [ - "WAF", - "Firewall", "AppGW", - "AVS" + "Firewall", + "AVS", + "WAF" ], "severity": "High", "text": "Workloads on Azure VMware Solution are not directly exposed to the internet. Traffic is filtered and inspected by Azure Application Gateway, Azure Firewall or 3rd party solutions", @@ -29278,8 +30173,8 @@ "guid": "eace4cb1-deb4-4c65-8c3f-c14eeab36938", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "Auditing and logging is implemented for inbound internet requests to Azure VMware Solution and Azure VMware Solution based workloads", @@ -29291,9 +30186,9 @@ "guid": "29e3eec2-1836-487a-8077-a2b5945bda43", "service": "AVS", "services": [ - "WAF", "Monitor", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Session monitoring is implemented for outbound internet connections from Azure VMware Solution or Azure VMware Solution based workloads to identify suspicious/malicious activity", @@ -29305,11 +30200,11 @@ "guid": "334fdf91-c234-4182-a652-75269440b4be", "service": "AVS", "services": [ - "WAF", - "VNet", + "VPN", "DDoS", + "VNet", "ExpressRoute", - "VPN" + "WAF" ], "severity": "Medium", "text": "Is DDoS standard protection enabled on ExR/VPN Gateway subnet in Azure", @@ -29321,8 +30216,8 @@ "guid": "3d3e0843-276d-44bd-a015-bcf219e4a1eb", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Use a dedicated privileged access workstation (PAW) to manage Azure VMware Solution, vCenter, NSX manager and HCX manager", @@ -29334,9 +30229,9 @@ "guid": "9ccbd869-266a-4cca-874f-aa19bf39d95d", "service": "AVS", "services": [ - "WAF", "Defender", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Enable Advanced Threat Detection (Microsoft Defender for Cloud aka ASC) for workloads running on Azure VMware Solution", @@ -29348,9 +30243,9 @@ "guid": "44c7c891-9ca1-4f6d-9315-ae524ba34d45", "service": "AVS", "services": [ - "WAF", "Arc", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Use Azure ARC for Servers to properly govern workloads running on Azure VMware Solution using Azure native technologies (Azure ARC for Azure VMware Solution is not yet available)", @@ -29362,9 +30257,9 @@ "guid": "85e12139-bd7b-4b01-8f7b-95ef6e043e2a", "service": "AVS", "services": [ - "WAF", "SQL", - "AVS" + "AVS", + "WAF" ], "severity": "Low", "text": "Ensure workloads on Azure VMware Solution use sufficient data encryption during run-time (like in-guest disk encryption and SQL TDE). (vSAN encryption at rest is default)", @@ -29389,8 +30284,8 @@ "guid": "5ac94222-3e13-4810-9230-81a941741583", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Consider using extended security update support for workloads running on Azure VMware Solution (Azure VMware Solution is eligible for ESU)", @@ -29414,8 +30309,8 @@ "guid": "d88408f3-7273-44c8-96ba-280214590146", "service": "AVS", "services": [ - "WAF", "AzurePolicy", + "WAF", "Storage" ], "severity": "High", @@ -29428,8 +30323,8 @@ "guid": "d89f2e87-7784-424d-9167-85c6fa95b96a", "service": "AVS", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "High", "text": "Ensure that you have requested enough quota, ensuring you have considered growth and Disaster Recovery requirement", @@ -29453,8 +30348,8 @@ "guid": "bf39d95d-44c7-4c89-89ca-1f6d5315ae52", "service": "AVS", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Ensure that you have a policy around ESXi host density and efficiency, keeping in mind the lead time for requesting new nodes", @@ -29466,9 +30361,9 @@ "guid": "4ba34d45-85e1-4213-abd7-bb012f7b95ef", "service": "AVS", "services": [ + "AVS", "WAF", - "Cost", - "AVS" + "Cost" ], "severity": "Medium", "text": "Ensure a good cost management process is in place for Azure VMware Solution - Azure Cost Management can be used", @@ -29480,9 +30375,9 @@ "guid": "6e043e2a-a359-4271-ae6e-205172676ae4", "service": "AVS", "services": [ + "AVS", "WAF", - "Cost", - "AVS" + "Cost" ], "severity": "Low", "text": "Are Azure reserved instances used to optimize cost for using Azure VMware Solution", @@ -29518,10 +30413,10 @@ "guid": "48b262d6-cc5f-4512-a253-98e6db9d37da", "service": "AVS", "services": [ - "WAF", - "VM", "Defender", - "AVS" + "VM", + "AVS", + "WAF" ], "severity": "Medium", "text": "Enable Microsoft Defender for Cloud for Azure VMware Solution guest VM workloads", @@ -29533,10 +30428,10 @@ "guid": "41741583-3ef7-4ad7-a6d3-733165c7acbe", "service": "AVS", "services": [ - "WAF", - "VM", "Arc", - "AVS" + "VM", + "AVS", + "WAF" ], "severity": "Medium", "text": "Use Azure Arc enabled servers to manage your Azure VMware Solution guest VM workloads", @@ -29548,8 +30443,8 @@ "guid": "88f03a4d-2cd4-463c-abbc-868295abc91a", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "Enable Diagnostic and metric logging on Azure VMware Solution", @@ -29561,10 +30456,10 @@ "guid": "4ed90dae-2cc8-44c4-9b6b-781cbafe6c46", "service": "AVS", "services": [ - "WAF", - "VM", "Monitor", - "AVS" + "AVS", + "WAF", + "VM" ], "severity": "Medium", "text": "Deploy the Log Analytics Agents to Azure VMware Solution guest VM workloads", @@ -29576,11 +30471,11 @@ "guid": "589d457a-927c-4397-9d11-02cad6aae11e", "service": "AVS", "services": [ - "WAF", "Backup", "AzurePolicy", "VM", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Ensure you have a documented and implemented backup policy and solution for Azure VMware Solution VM workloads", @@ -29592,10 +30487,10 @@ "guid": "ee29711b-d352-4caa-ab79-b198dab81932", "service": "AVS", "services": [ - "WAF", - "AVS", + "Defender", "Monitor", - "Defender" + "AVS", + "WAF" ], "severity": "Medium", "text": "Use Microsoft Defender for Cloud for compliance monitoring of workloads running on Azure VMware Solution", @@ -29607,8 +30502,8 @@ "guid": "c9fc9d1b-b780-436f-9e6b-fbb9ed503547", "service": "AVS", "services": [ - "WAF", - "Defender" + "Defender", + "WAF" ], "severity": "Medium", "text": "Are the applicable compliance baselines added to Microsoft Defender for Cloud", @@ -29620,8 +30515,8 @@ "guid": "cc447e82-6128-4a71-b0f1-cac6d9ef1d5e", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "Was data residency evaluated when selecting Azure regions to use for Azure VMware Solution deployment", @@ -29657,9 +30552,9 @@ "guid": "e43a18a9-cd28-49ce-b6b1-7db8255461e2", "service": "AVS", "services": [ - "WAF", "Monitor", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "Create dashboards to enable core Azure VMware Solution monitoring insights", @@ -29671,9 +30566,9 @@ "guid": "6b84ee5d-f47d-42d9-8881-b1cd5d1e54a2", "service": "AVS", "services": [ - "WAF", "Monitor", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "Create warning alerts for critical thresholds for automatic alerting on Azure VMware Solution performance (CPU >80%, Avg Memory >80%, vSAN >70%)", @@ -29685,9 +30580,9 @@ "guid": "9659e396-80e7-4828-ac93-5657d02bff45", "service": "AVS", "services": [ - "WAF", "Monitor", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "Ensure critical alert is created to monitor if vSAN consumption is below 75% as this is a support threshold from VMware", @@ -29699,8 +30594,8 @@ "guid": "64b0d934-a348-4726-be79-d6b5c3a36495", "service": "AVS", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "High", "text": "Ensure alerts are configured for Azure Service Health alerts and notifications", @@ -29712,9 +30607,9 @@ "guid": "b6abad38-aad5-43cc-99e1-d86667357c54", "service": "AVS", "services": [ + "AVS", "WAF", - "Storage", - "AVS" + "Storage" ], "severity": "Medium", "text": "Configure Azure VMware Solution logging to be send to an Azure Storage account or Azure EventHub for processing", @@ -29726,8 +30621,8 @@ "guid": "9674c5ed-85b8-459c-9733-be2b1a27b775", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Low", "text": "If deep insight in VMware vSphere is required: Is vRealize Operations and/or vRealize Network Insights used in the solution?", @@ -29739,9 +30634,9 @@ "guid": "a91be1f3-88f0-43a4-b2cd-463cbbbc8682", "service": "AVS", "services": [ - "WAF", - "AzurePolicy", "VM", + "AzurePolicy", + "WAF", "Storage" ], "severity": "High", @@ -29766,8 +30661,8 @@ "guid": "0e43a18a-9cd2-489b-bd6b-17db8255461e", "service": "AVS", "services": [ - "WAF", "Backup", + "WAF", "Storage" ], "severity": "Medium", @@ -29780,9 +30675,9 @@ "guid": "2aee3453-aec8-4339-848b-262d6cc5f512", "service": "AVS", "services": [ - "WAF", "Arc", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Ensure workloads running on Azure VMware Solution are hybrid managed using Azure Arc for Servers (Arc for Azure VMware Solution is in preview)", @@ -29794,9 +30689,9 @@ "guid": "925398e6-da9d-437d-ac43-bc6cd1d79a9b", "service": "AVS", "services": [ - "WAF", "Monitor", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Ensure workloads running on Azure VMware Solution are monitored using Azure Log Analytics and Azure Monitor", @@ -29808,8 +30703,8 @@ "guid": "24604489-a8f4-42d7-ae78-cb6a33bd2a09", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Include workloads running on Azure VMware Solution in existing update management tooling or in Azure Update Management", @@ -29821,10 +30716,10 @@ "guid": "17e7a8d9-0ae0-4e27-aee2-9711bd352caa", "service": "AVS", "services": [ - "WAF", - "AzurePolicy", "Monitor", - "AVS" + "AVS", + "WAF", + "AzurePolicy" ], "severity": "Medium", "text": "Use Azure Policy to onboard Azure VMware Solution workloads in the Azure Management, Monitoring and Security solutions", @@ -29836,9 +30731,9 @@ "guid": "aee3553a-fc83-4392-98b2-62d6cc5f5129", "service": "AVS", "services": [ - "WAF", "Defender", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Ensure workloads running on Azure VMware Solution are onboarded to Microsoft Defender for Cloud", @@ -29850,8 +30745,8 @@ "guid": "25398e6d-b9d3-47da-a43b-c6cd1d79a9b2", "service": "AVS", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Ensure backups are not stored on vSAN as vSAN is a finite resource", @@ -29875,8 +30770,8 @@ "guid": "f0f1cac6-d9ef-41d5-b832-d42e3611c818", "service": "AVS", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "Medium", "text": "Use Azure Site Recovery when the Disaster Recovery technology is native Azure IaaS", @@ -29900,8 +30795,8 @@ "guid": "8255461e-2aee-4345-9aec-8339248b262d", "service": "AVS", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "Medium", "text": "Use the geopolitical region pair as the secondary disaster recovery environment", @@ -29925,10 +30820,10 @@ "guid": "d1d79a9b-2460-4448-aa8f-42d78e78cb6a", "service": "AVS", "services": [ - "WAF", "ExpressRoute", "NVA", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Will ExpressRoute Global Reach be used for connectivity between the primary and secondary Azure VMware Solution Private Clouds or is routing done through network virtual appliances?", @@ -29940,8 +30835,8 @@ "guid": "33bd2a09-17e7-4a8d-a0ae-0e27cee29711", "service": "AVS", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Have all Backup solutions been considered and a solution that is best for your business been decided upon? [ MABS/CommVault/Metallic.io/Veeam/�. ]", @@ -29953,9 +30848,9 @@ "guid": "bd352caa-ab79-4b18-adab-81932c9fc9d1", "service": "AVS", "services": [ - "WAF", "Backup", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "Deploy your backup solution in the same region as your Azure VMware Solution private cloud", @@ -29967,8 +30862,8 @@ "guid": "bb77036f-5e6b-4fbb-aed5-03547cc447e8", "service": "AVS", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Deploy your backup solution outside of vSan, on Azure native components", @@ -29980,8 +30875,8 @@ "guid": "26028a71-f0f1-4cac-9d9e-f1d5e832d42e", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Low", "text": "Is a process in place to request a restore of the VMware components managed by the Azure Platform?", @@ -30005,8 +30900,8 @@ "guid": "7e7a8d90-ae0e-437c-be29-711bd352caaa", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Low", "text": "For manual deployments, consider implementing resource locks to prevent accidental actions on your Azure VMware Solution Private Cloud", @@ -30042,8 +30937,8 @@ "guid": "0f1cac6d-9ef1-4d5e-a32e-42e3611c818b", "service": "AVS", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Low", "text": "For automated deployment, ensure that relevant resource locks are created through the automation or through Azure Policy for proper governance", @@ -30068,10 +30963,10 @@ "guid": "255461e2-aee3-4553-afc8-339248b262d6", "service": "AVS", "services": [ - "WAF", - "AKV", "ExpressRoute", - "AVS" + "AVS", + "WAF", + "AKV" ], "severity": "Low", "text": "Use Key vault to store secrets and authorization keys when separate Service Principles are used for deploying Azure VMware Solution and ExpressRoute", @@ -30083,8 +30978,8 @@ "guid": "cc5f5129-2539-48e6-bb9d-37dac43bc6cd", "service": "AVS", "services": [ - "WAF", - "AVS" + "AVS", + "WAF" ], "severity": "Low", "text": "Define resource dependencies for serializing actions in IaC when many resources need to be deployed in/on Azure VMware Solution as Azure VMware Solution only supports a limited number of parallel operations.", @@ -30108,9 +31003,9 @@ "guid": "3bd2a0a1-7e7a-48d9-8ae0-e37cee29711b", "service": "AVS", "services": [ - "WAF", "Subscriptions", - "AVS" + "AVS", + "WAF" ], "severity": "Medium", "text": "When intending to use automated scale-out, be sure to apply for sufficient Azure VMware Solution quota for the subscriptions running Azure VMware Solution", @@ -30122,8 +31017,8 @@ "guid": "d352caaa-b79b-4198-bab8-1932c9fc9d1b", "service": "AVS", "services": [ - "WAF", "AzurePolicy", + "WAF", "Storage" ], "severity": "Medium", @@ -30172,8 +31067,8 @@ "guid": "1dc15a1c-075e-4e9f-841a-cccd579376bc", "service": "AVS", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Implement monitoring rules to monitor automated scaling operations and monitor success and failure to enable appropriate (automated) responses", @@ -30186,8 +31081,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works", "service": "AVS", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "High", "text": "When using MON, be aware of the limits of simulataneously configured VMs (MON Limit for HCX [400 - standard, 1000 - Larger appliance])", @@ -30214,8 +31109,8 @@ "guid": "bc91a43d-90da-4e2c-a881-4706f7c1cbaf", "service": "AVS", "services": [ - "WAF", - "VPN" + "VPN", + "WAF" ], "severity": "Medium", "text": "If using a VPN connection for migrations, adjust your MTU size accordingly.", @@ -30252,10 +31147,10 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings", "service": "AVS", "services": [ - "WAF", "VM", - "Storage", - "AVS" + "AVS", + "WAF", + "Storage" ], "severity": "Medium", "text": "When Azure Netapp Files is used to extend storage for Azure VMware Solution,consider using this as a VMware datastore instead of attaching directly to a VM.", @@ -30268,8 +31163,8 @@ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door", "service": "AVS", "services": [ - "WAF", "ExpressRoute", + "WAF", "Storage" ], "severity": "Medium", @@ -30283,8 +31178,8 @@ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-the-same-domain-name-on-front-door-and-your-origin", "service": "AVS", "services": [ - "WAF", "ExpressRoute", + "WAF", "Storage" ], "severity": "Medium", @@ -30298,8 +31193,8 @@ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group", "service": "AVS", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "High", "text": "If using stretched cluster, ensure that your selected Disaster Recovery solution is supported by the vendor", @@ -30325,8 +31220,8 @@ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes", "service": "AVS", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "High", "text": "If using stretched cluster, ensure that both ExpressRoute circuits are connected to your connectivity hub.", @@ -30339,8 +31234,8 @@ "link": "https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity", "service": "AVS", "services": [ - "WAF", - "ExpressRoute" + "ExpressRoute", + "WAF" ], "severity": "High", "text": "If using stretched cluster, ensure that both ExpressRoute circuits have GlobalReach enabled.", @@ -30405,8 +31300,8 @@ "link": "https://learn.microsoft.com/azure/search/search-reliability#multiple-services-in-separate-geographic-regions", "service": "Cognitive Search", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "For regional redudancy, Manually create services in 2 or more regions for Search as it doesn't provide an automated method of replicating search indexes across geographic regions", @@ -30419,8 +31314,8 @@ "link": "https://learn.microsoft.com/azure/search/search-reliability#synchronize-data-across-multiple-services", "service": "Cognitive Search", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "To synchronize data across multiple services either Use indexers for updating content on multiple services or Use REST APIs for pushing content updates on multiple services", @@ -30433,8 +31328,8 @@ "link": "https://learn.microsoft.com/azure/search/search-reliability#use-azure-traffic-manager-to-coordinate-requests", "service": "Cognitive Search", "services": [ - "WAF", - "TrafficManager" + "TrafficManager", + "WAF" ], "severity": "Medium", "text": "Use Azure Traffic Manager to coordinate requests", @@ -30447,8 +31342,8 @@ "link": "https://learn.microsoft.com/azure/search/search-reliability#back-up-and-restore-alternatives", "service": "Cognitive Search", "services": [ - "WAF", "Backup", + "WAF", "Storage" ], "severity": "High", @@ -30488,8 +31383,8 @@ "link": "https://learn.microsoft.com/azure/data-factory/source-control", "service": "Azure Data Factory", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Use DevOps to Backup the ARM templates with Github/Azure DevOps integration ", @@ -30502,8 +31397,8 @@ "link": "https://learn.microsoft.com/azure/architecture/example-scenario/analytics/pipelines-disaster-recovery", "service": "Azure Data Factory", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Make sure you replicate the Self-Hosted Integration Runtime VMs in another region ", @@ -30547,8 +31442,8 @@ "service": "Azure Data Explorer", "services": [ "WAF", - "Cost", - "Storage" + "Storage", + "Cost" ], "text": "Leverage External Tables and Continuous data export overview to reduce costs", "waf": "Reliability" @@ -30575,8 +31470,8 @@ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#create-multiple-independent-clusters", "service": "Azure Data Explorer", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "text": "To protect against regional failure, create Multiple independent clusters, preferably in two Azure Paired regions", "waf": "Reliability" @@ -30588,8 +31483,8 @@ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-create-solution#replicate-management-activities", "service": "Azure Data Explorer", "services": [ - "WAF", "RBAC", + "WAF", "Storage" ], "text": "Replicate all management activities such as creating new tables or managing user roles on each cluster.", @@ -30615,8 +31510,8 @@ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-active-configuration", "service": "Azure Data Explorer", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "text": "For critical application with no tolerance for outages, create Active-Active-Active (always-on) configuration", "waf": "Reliability" @@ -30629,8 +31524,8 @@ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#active-active-configuration", "service": "Azure Data Explorer", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "text": "For critical applications, create Active-Active configuration in two paired regions", "waf": "Reliability" @@ -30656,11 +31551,11 @@ "link": "https://learn.microsoft.com/azure/data-explorer/business-continuity-overview#on-demand-data-recovery-configuration", "service": "Azure Data Explorer", "services": [ - "WAF", - "Cost", + "AzurePolicy", "Storage", "ASR", - "AzurePolicy" + "WAF", + "Cost" ], "text": "For applications, where cost is a concern and can withstand some downtime during failure, create on-demand data recovery cluster configuration", "waf": "Reliability" @@ -30673,8 +31568,8 @@ "link": "https://learn.microsoft.com/azure/data-explorer/devops", "service": "Azure Data Explorer", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "text": "Wrap DevOps and source control around all your code", "training": "https://learn.microsoft.com/learn/paths/secure-your-cloud-data/", @@ -30713,9 +31608,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", "service": "Key Vault", "services": [ + "Backup", "WAF", - "AKV", - "Backup" + "AKV" ], "severity": "High", "text": "Familiarize yourself with the Key Vault's best practices such as isolation recommendations, access control, data protection, backup, and logging.", @@ -30728,8 +31623,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance", "service": "Key Vault", "services": [ - "WAF", "ACR", + "WAF", "AKV" ], "severity": "Medium", @@ -30757,9 +31652,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance#failover-across-regions", "service": "Key Vault", "services": [ + "AzurePolicy", "WAF", - "AKV", - "AzurePolicy" + "AKV" ], "severity": "Medium", "text": "During failover, access policy or firewall configurations and settings can't be changed. The key vault will be in read-only mode during failover. Familiarize yourself with the Key Vault's failover guidance.", @@ -30772,11 +31667,11 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#design-considerations", "service": "Key Vault", "services": [ - "WAF", - "AKV", "Subscriptions", + "Backup", + "AKV", "Storage", - "Backup" + "WAF" ], "severity": "Medium", "text": "When you back up a key vault object, such as a secret, key, or certificate, the backup operation will download the object as an encrypted blob. This blob can't be decrypted outside of Azure. To get usable data from this blob, you must restore the blob into a key vault within the same Azure subscription and Azure geography. Familiarize yourself with the Key Vault's backup and restore guidance.", @@ -30817,9 +31712,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations", "service": "Key Vault", "services": [ + "Backup", "WAF", - "AKV", - "Backup" + "AKV" ], "severity": "Low", "text": "Understand Key Vault's backup limitations. Key Vault does not support the ability to backup more than 500 past versions of a key, secret, or certificate object. Attempting to backup a key, secret, or certificate object may result in an error. It is not possible to delete previous versions of a key, secret, or certificate.", @@ -30832,9 +31727,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/backup?tabs=azure-cli#limitations", "service": "Key Vault", "services": [ + "Backup", "WAF", - "AKV", - "Backup" + "AKV" ], "severity": "Low", "text": "Key Vault doesn't currently provide a way to back up an entire key vault in a single operation and keys, secrets and certitificates must be backup indvidually. Familiarize yourself with the Key Vault's backup and restore guidance.", @@ -30847,9 +31742,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview#purge-protection", "service": "Key Vault", "services": [ + "EventHubs", "WAF", - "AKV", - "EventHubs" + "AKV" ], "severity": "Medium", "text": "Purge protection is recommended when using keys for encryption to prevent data loss. Purge protection is an optional Key Vault behavior and is not enabled by default. Purge protection can only be enabled once soft-delete is enabled. It can be turned on via CLI, PowerShell or Portal.", @@ -30917,8 +31812,8 @@ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Ensure you are using Application Gateway v2 SKU", @@ -30962,9 +31857,9 @@ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet", "service": "App Gateway", "services": [ + "AppGW", "WAF", - "VNet", - "AppGW" + "VNet" ], "severity": "Medium", "text": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24", @@ -30979,12 +31874,12 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "App Gateway", "services": [ - "WAF", - "AppGW", "VNet", - "NVA", "Subscriptions", - "Entra" + "NVA", + "AppGW", + "Entra", + "WAF" ], "severity": "Medium", "text": "Deploy Azure Application Gateway v2 or partner NVAs used for proxying inbound HTTP(S) connections within the landing-zone virtual network and with the apps that they're securing.", @@ -30998,8 +31893,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "App Gateway", "services": [ - "WAF", - "DDoS" + "DDoS", + "WAF" ], "severity": "Medium", "text": "Use a DDoS Network or IP protection plans for all Public IP addresses in application landing zones.", @@ -31029,9 +31924,9 @@ "link": "https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2", "service": "App Gateway", "services": [ - "WAF", "ACR", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Deploy Application Gateway across Availability Zones", @@ -31045,8 +31940,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "Front Door", "services": [ - "WAF", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -31061,10 +31956,10 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "service": "Front Door", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "FrontDoor", - "AppGW" + "WAF", + "FrontDoor" ], "severity": "Medium", "text": "When using Front Door and Application Gateway to help protect HTTP/S apps, use WAF policies in Front Door. Lock down Application Gateway to receive traffic only from Front Door.", @@ -31079,8 +31974,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "Traffic Manager", "services": [ - "WAF", - "TrafficManager" + "TrafficManager", + "WAF" ], "severity": "High", "text": "Use Traffic Manager to deliver global apps that span protocols other than HTTP/S.", @@ -31093,9 +31988,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy#how-application-proxy-works", "service": "Entra", "services": [ + "AVD", "WAF", - "Entra", - "AVD" + "Entra" ], "severity": "Low", "text": "If users only need access to internal applications, has Microsoft Entra ID Application Proxy been considered as an alternative to Azure Virtual Desktop (AVD)?", @@ -31125,8 +32020,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings", "service": "Front Door", "services": [ - "WAF", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "High", @@ -31141,8 +32036,8 @@ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#avoid-combining-traffic-manager-and-front-door", "service": "Front Door", "services": [ - "WAF", "TrafficManager", + "WAF", "FrontDoor" ], "severity": "High", @@ -31233,10 +32128,10 @@ "link": "https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates", "service": "Front Door", "services": [ + "FrontDoor", "WAF", "AKV", - "Cost", - "FrontDoor" + "Cost" ], "severity": "High", "text": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals.", @@ -31323,8 +32218,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection", "service": "Front Door", "services": [ - "WAF", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "High", @@ -31439,8 +32334,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "High", "text": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots.", @@ -31454,9 +32349,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/application-gateway-waf-request-size-limits#request-body-inspection", "service": "App Gateway", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "AppGW" + "WAF" ], "severity": "High", "text": "Enable request body inspection feature enabled in Azure Application Gateway WAF policy.", @@ -31470,8 +32365,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#tune-your-waf", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "High", "text": "Tune the Azure Application Gateway WAF for your workload. Reduce false positive detections.", @@ -31486,9 +32381,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings", "service": "App Gateway", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "AppGW" + "WAF" ], "severity": "High", "text": "Deploy your WAF policy for Application Gateway in 'Prevention' mode.", @@ -31501,8 +32396,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Add rate limiting to the Azure Application Gateway WAF. Rate limiting blocks clients accidentally or intentionally sending large amounts of traffic in a short period of time.", @@ -31515,8 +32410,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/rate-limiting-overview#rate-limiting-details", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Use a high threshold for Azure Application Gateway WAF rate limits. High rate limit thresholds avoid blocking legitimate traffic, while still providing protection against extremely high numbers of requests that might overwhelm your infrastructure. ", @@ -31542,8 +32437,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/geomatch-custom-rules", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Specify the unknown (ZZ) location when geo-filtering traffic with the Azure Application Gateway WAF. Avoid accidentally blocking legitimate requests when IP addresses can't be geo-matched.", @@ -31556,8 +32451,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#use-the-latest-ruleset-versions", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Use the latest Azure Application Gateway WAF rule set version. Rule set updates are regularly updated to take account of the current threat landscape.", @@ -31570,8 +32465,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#add-diagnostic-settings-to-save-your-wafs-logs", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Add diagnostic settings to save your Azure Application Gateway WAF logs.", @@ -31598,8 +32493,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#send-logs-to-microsoft-sentinel", "service": "App Gateway", "services": [ - "WAF", "AppGW", + "WAF", "Sentinel" ], "severity": "Medium", @@ -31614,8 +32509,8 @@ "service": "Front Door", "services": [ "WAF", - "FrontDoor", - "Sentinel" + "Sentinel", + "FrontDoor" ], "severity": "Medium", "text": "Send Azure Front Door WAF logs to Microsoft Sentinel.", @@ -31628,8 +32523,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/best-practices#define-your-waf-configuration-as-code", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "Define your Azure Application Gateway WAF configuration as code. By using code, you can more easily adopt new rule set version and gain additional protection.", @@ -31642,8 +32537,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/policy-overview", "service": "App Gateway", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Use WAF Policies instead of the legacy WAF configuration.", @@ -31656,11 +32551,11 @@ "link": "https://learn.microsoft.com/azure/virtual-wan/scenario-secured-hub-app-gateway", "service": "App Gateway", "services": [ - "WAF", - "AppGW", + "VPN", "VNet", + "AppGW", "ExpressRoute", - "VPN" + "WAF" ], "severity": "Medium", "text": "Filter inbound traffic in the backends so that they only accept connections from the Application Gateway subnet, for example with NSGs.", @@ -31832,8 +32727,8 @@ "link": "https://learn.microsoft.com/azure/application-gateway/application-gateway-websocket", "service": "App Gateway", "services": [ - "WAF", - "AppGW" + "AppGW", + "WAF" ], "severity": "Low", "text": "Use Application Gateway for native support for WebSocket and HTTP/2 protocols", @@ -31894,8 +32789,8 @@ "link": "https://azure.microsoft.com/blog/setting-up-active-directory-for-a-disaster-recovery-environment-2/", "service": "Windows AD", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Follow VM rules for high availability on the VM level (premium disks, two or more in a region, in different availability zones)", @@ -31990,12 +32885,12 @@ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-sas#shared-access-authorization-policies", "service": "Service Bus", "services": [ - "WAF", + "TrafficManager", "ServiceBus", - "RBAC", "AzurePolicy", "Entra", - "TrafficManager" + "RBAC", + "WAF" ], "severity": "Medium", "text": "Avoid using root account when it is not necessary", @@ -32010,13 +32905,13 @@ "link": "https://learn.microsoft.com/azure/service-bus-messaging/service-bus-managed-service-identity", "service": "Service Bus", "services": [ - "WAF", "ServiceBus", - "AKV", - "Storage", - "VM", + "Entra", "AppSvc", - "Entra" + "VM", + "Storage", + "AKV", + "WAF" ], "severity": "Medium", "text": "When possible, your application should be using a managed identity to authenticate to Azure Service Bus. If not, consider having the storage credential (SAS, service principal credential) in Azure Key Vault or an equivalent service", @@ -32031,11 +32926,11 @@ "link": "https://learn.microsoft.com/azure/service-bus-messaging/authenticate-application#azure-built-in-roles-for-azure-service-bus", "service": "Service Bus", "services": [ - "WAF", "ServiceBus", "Subscriptions", "Storage", - "RBAC" + "RBAC", + "WAF" ], "severity": "High", "text": "Use least privilege data plane RBAC", @@ -32050,10 +32945,10 @@ "link": "https://learn.microsoft.com/azure/service-bus-messaging/monitor-service-bus-reference", "service": "Service Bus", "services": [ + "Monitor", "WAF", - "ServiceBus", "VNet", - "Monitor" + "ServiceBus" ], "severity": "Medium", "text": "Enable logging for security investigation. Use Azure Monitor to trace resource logs and runtime audit logs (currently available only in the premium tier)", @@ -32068,10 +32963,10 @@ "link": "https://learn.microsoft.com/azure/service-bus-messaging/private-link-service", "service": "Service Bus", "services": [ + "PrivateLink", "WAF", - "ServiceBus", "VNet", - "PrivateLink" + "ServiceBus" ], "severity": "Medium", "text": "Consider using private endpoints to access Azure Service Bus and disable public network access when applicable.", @@ -32168,8 +33063,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machine-scale-sets/virtual-machine-scale-sets-automatic-instance-repairs", "service": "VMSS", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Low", "text": "Enable automatic instance repairs for enhanced VM Scale Sets resiliency", @@ -32183,9 +33078,9 @@ "link": "https://learn.microsoft.com/azure/backup/backup-azure-vms-introduction", "service": "VM", "services": [ - "WAF", "Backup", - "VM" + "VM", + "WAF" ], "severity": "High", "text": "Consider Azure Backup to meet your resiliency requirements for Azure VMs", @@ -32199,8 +33094,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/disks-types", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "High", "text": "Use Premium or Ultra disks for production VMs", @@ -32214,8 +33109,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "High", "text": "Ensure Managed Disks are used for all VMs", @@ -32229,10 +33124,10 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/managed-disks-overview#temporary-disk", "service": "VM", "services": [ - "WAF", + "SQL", "VM", - "Storage", - "SQL" + "WAF", + "Storage" ], "severity": "Medium", "text": "Do not use the Temp disk for anything that is not acceptable to be lost", @@ -32246,9 +33141,9 @@ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview", "service": "VM", "services": [ - "WAF", "ACR", "VM", + "WAF", "Storage" ], "severity": "Medium", @@ -32263,8 +33158,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "For regions that do not support Availability Zones deploy VMs into Availability Sets", @@ -32278,9 +33173,9 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability", "service": "VM", "services": [ - "WAF", "ASR", - "VM" + "VM", + "WAF" ], "severity": "High", "text": "Avoid running a production workload on a single VM", @@ -32294,10 +33189,10 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview", "service": "VM", "services": [ - "WAF", "ASR", "VM", - "AVS" + "AVS", + "WAF" ], "severity": "High", "text": "For Azure and on-premises VMs (Hyper-V/Phyiscal/VMware) with low RTO requirements use Azure Site Recovery", @@ -32325,9 +33220,9 @@ "link": "https://learn.microsoft.com/azure/quotas/per-vm-quota-requests", "service": "VM", "services": [ - "WAF", "ASR", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Increase quotas in DR region before testing failover with ASR", @@ -32341,8 +33236,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/windows/scheduled-events", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Low", "text": "Utilize Scheduled Events to prepare for VM maintenance", @@ -32416,8 +33311,8 @@ "link": "https://learn.microsoft.com/azure/backup/backup-azure-enhanced-soft-delete-about", "service": "Azure Backup", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Enable Azure Backup enhanced soft delete for improved data protection and recovery", @@ -32431,8 +33326,8 @@ "link": "https://learn.microsoft.com/azure/backup/multi-user-authorization-concept", "service": "Azure Backup", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Low", "text": "Implement multi-user authorization for Azure Backup to ensure secure and controlled access to backup resources", @@ -32446,8 +33341,8 @@ "link": "https://learn.microsoft.com/azure/backup/backup-azure-immutable-vault-concept?source=recommendations&tabs=recovery-services-vault", "service": "Azure Backup", "services": [ - "WAF", "Backup", + "WAF", "Storage" ], "severity": "Low", @@ -32462,10 +33357,10 @@ "link": "https://learn.microsoft.com/azure/dns/tutorial-dns-private-resolver-failover", "service": "DNS", "services": [ - "WAF", - "DNS", "ASR", - "ACR" + "DNS", + "ACR", + "WAF" ], "severity": "Low", "text": "Implement DNS Failover using Azure DNS Private Resolvers", @@ -32479,8 +33374,8 @@ "link": "https://learn.microsoft.com/data-integration/gateway/service-gateway-high-availability-clusters", "service": "Data Gateways", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "Use on-premises data gateway clusters to ensure high availability for business-critical data", @@ -32494,8 +33389,8 @@ "link": "https://learn.microsoft.com/azure/architecture/reference-architectures/dmz/nva-ha", "service": "NVA", "services": [ - "WAF", - "NVA" + "NVA", + "WAF" ], "severity": "High", "text": "Deploy Network Virtual Appliances (NVAs) in a vendor supported configuration for High Availability", @@ -32548,8 +33443,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#multiple-write-regions", "service": "CosmosDB", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "Leverage Multi-Region Writes", @@ -32563,8 +33458,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/high-availability#slas", "service": "CosmosDB", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "Distribute your data globally", @@ -32592,8 +33487,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/how-to-manage-database-account#automatic-failover", "service": "CosmosDB", "services": [ - "WAF", - "CosmosDB" + "CosmosDB", + "WAF" ], "severity": "Medium", "text": "Enable Service managed failover", @@ -32607,9 +33502,9 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/online-backup-and-restore", "service": "CosmosDB", "services": [ - "WAF", "Backup", "CosmosDB", + "WAF", "Storage" ], "severity": "Medium", @@ -32625,8 +33520,8 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/periodic-backup-restore-introduction", "service": "CosmosDB", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Perform Periodic Backups", @@ -32641,9 +33536,9 @@ "link": "https://learn.microsoft.com/azure/cosmos-db/continuous-backup-restore-introduction", "service": "CosmosDB", "services": [ - "WAF", "Backup", - "CosmosDB" + "CosmosDB", + "WAF" ], "severity": "Medium", "text": "Continous Backup with point-in-time restore in Azure Cosmos DB", @@ -32670,8 +33565,8 @@ "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", "service": "Cognitive Services", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Backup Your Prompts", @@ -32684,8 +33579,8 @@ "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", "service": "Cognitive Services", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "High", "text": "Business Continuity and Disaster Recovery (BCDR) considerations with Azure OpenAI Service", @@ -32698,8 +33593,8 @@ "link": "https://github.com/abacaj/chatgpt-backup#backup-your-chatgpt-conversations", "service": "Cognitive Services", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Backup Your ChatGPT conversations", @@ -32778,8 +33673,8 @@ "link": "https://learn.microsoft.com/purview/disaster-recovery", "service": "Purview", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "High", "text": "Plan a backup strategy and take regular backups", @@ -32792,8 +33687,8 @@ "link": "https://learn.microsoft.com/purview/manage-kafka-dotnet", "service": "Purview", "services": [ - "WAF", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "Low", "text": "Use Microsoft Purview's Event Hubs to subscribe and create entities to another account", @@ -32858,8 +33753,8 @@ "link": "https://learn.microsoft.com/purview/disaster-recovery", "service": "Purview", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Follow Backup and Migration Best practices", @@ -33055,8 +33950,8 @@ "link": "https://learn.microsoft.com/purview/concept-policies-data-owner#microsoft-purview-policy-concepts", "service": "Purview", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Low", "text": "Follow Microsoft Purview Data Owner access policies", @@ -33069,8 +33964,8 @@ "link": "https://learn.microsoft.com/purview/concept-self-service-data-access-policy", "service": "Purview", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Low", "text": "Follow Self-service access policies", @@ -33083,8 +33978,8 @@ "link": "https://learn.microsoft.com/purview/concept-policies-devops", "service": "Purview", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Low", "text": "Follow DevOps policies", @@ -33176,8 +34071,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/data-loss-prevention", "service": "ACR", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "High", "text": "Disable Azure Container Registry image export", @@ -33191,9 +34086,9 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-azure-policy", "service": "ACR", "services": [ - "WAF", "ACR", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "High", "text": "Enable Azure Policies for Azure Container Registry", @@ -33207,8 +34102,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-tutorial-sign-build-push", "service": "ACR", "services": [ - "WAF", "ACR", + "WAF", "AKV" ], "severity": "High", @@ -33223,8 +34118,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/tutorial-customer-managed-keys", "service": "ACR", "services": [ - "WAF", "ACR", + "WAF", "AKV" ], "severity": "Medium", @@ -33239,10 +34134,10 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity", "service": "ACR", "services": [ - "WAF", - "Entra", "RBAC", - "ACR" + "ACR", + "WAF", + "Entra" ], "severity": "High", "text": "Use Managed Identities to connect instead of Service Principals", @@ -33256,8 +34151,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-authentication-managed-identity", "service": "ACR", "services": [ - "WAF", - "RBAC" + "RBAC", + "WAF" ], "severity": "High", "text": "Disable local authentication for management plane access", @@ -33271,9 +34166,9 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-roles?tabs=azure-cli", "service": "ACR", "services": [ - "WAF", - "ACR", "RBAC", + "ACR", + "WAF", "Entra" ], "severity": "High", @@ -33316,10 +34211,10 @@ "guid": "b3bec3d4-f343-47c1-936d-b55f27a71eee", "service": "ACR", "services": [ - "WAF", + "PrivateLink", "ACR", "EventHubs", - "PrivateLink" + "WAF" ], "severity": "High", "text": "Deploy images from a trusted environment", @@ -33333,9 +34228,9 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-enable-conditional-access-policy", "service": "ACR", "services": [ - "WAF", "ACR", "AzurePolicy", + "WAF", "Entra" ], "severity": "Medium", @@ -33350,9 +34245,9 @@ "link": "https://learn.microsoft.com/azure/container-registry/monitor-service", "service": "ACR", "services": [ - "WAF", "ACR", "Monitor", + "WAF", "Entra" ], "severity": "Medium", @@ -33367,10 +34262,10 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-private-link", "service": "ACR", "services": [ - "WAF", + "PrivateLink", "Firewall", - "VNet", - "PrivateLink" + "WAF", + "VNet" ], "severity": "Medium", "text": "Control inbound network access with Private Link", @@ -33384,8 +34279,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-access-selected-networks#disable-public-network-access", "service": "ACR", "services": [ - "WAF", - "PrivateLink" + "PrivateLink", + "WAF" ], "severity": "Medium", "text": "Disable Public Network access", @@ -33399,9 +34294,9 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-skus", "service": "ACR", "services": [ - "WAF", + "PrivateLink", "ACR", - "PrivateLink" + "WAF" ], "severity": "Medium", "text": "Use an Azure Container Registry SKU that supports Private Link (Premium SKU)", @@ -33415,9 +34310,9 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-introduction", "service": "ACR", "services": [ - "WAF", + "Defender", "ACR", - "Defender" + "WAF" ], "severity": "Low", "text": "Enable Defender for Containers to scan Azure Container Registry for vulnerabilities", @@ -33457,8 +34352,8 @@ "link": "https://learn.microsoft.com/azure/event-hubs/configure-customer-managed-key", "service": "Event Hubs", "services": [ - "WAF", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "Low", "text": "Use customer-managed key option in data at rest encryption when required", @@ -33473,8 +34368,8 @@ "link": "https://learn.microsoft.com/azure/event-hubs/transport-layer-security-configure-minimum-version", "service": "Event Hubs", "services": [ - "WAF", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "Medium", "text": "Enforce a minimum required version of Transport Layer Security (TLS) for requests ", @@ -33489,12 +34384,12 @@ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-shared-access-signature#shared-access-authorization-policies", "service": "Event Hubs", "services": [ - "WAF", + "TrafficManager", "EventHubs", "AzurePolicy", - "RBAC", "Entra", - "TrafficManager" + "RBAC", + "WAF" ], "severity": "Medium", "text": "Avoid using root account when it is not necessary", @@ -33509,12 +34404,12 @@ "link": "https://learn.microsoft.com/azure/event-hubs/authenticate-managed-identity?tabs=latest", "service": "Event Hubs", "services": [ - "WAF", "EventHubs", + "VM", "AKV", + "Entra", "Storage", - "VM", - "Entra" + "WAF" ], "severity": "Medium", "text": "When possible, your application should be using a managed identity to authenticate to Azure Event Hub. If not, consider having the storage credential (SAS, service principal credential) in Azure Key Vault or an equivalent service", @@ -33529,9 +34424,9 @@ "link": "https://learn.microsoft.com/azure/event-hubs/authorize-access-azure-active-directory#azure-built-in-roles-for-azure-event-hubs", "service": "Event Hubs", "services": [ - "WAF", "RBAC", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "High", "text": "Use least privilege data plane RBAC", @@ -33546,10 +34441,10 @@ "link": "https://learn.microsoft.com/azure/event-hubs/monitor-event-hubs-reference", "service": "Event Hubs", "services": [ - "WAF", - "VNet", "EventHubs", - "Monitor" + "Monitor", + "WAF", + "VNet" ], "severity": "Medium", "text": "Enable logging for security investigation. Use Azure Monitor to captured metrics and logs such as resource logs, runtime audit logs and Kafka logs", @@ -33564,10 +34459,10 @@ "link": "https://learn.microsoft.com/azure/event-hubs/private-link-service", "service": "Event Hubs", "services": [ - "WAF", - "VNet", + "PrivateLink", "EventHubs", - "PrivateLink" + "WAF", + "VNet" ], "severity": "Medium", "text": "Consider using private endpoints to access Azure Event Hub and disable public network access when applicable.", @@ -33582,8 +34477,8 @@ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-ip-filtering", "service": "Event Hubs", "services": [ - "WAF", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "Medium", "text": "Consider only allowing access to Azure Event Hub namespace from specific IP addresses or ranges", @@ -33611,9 +34506,9 @@ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-premium-overview#high-availability-with-availability-zones", "service": "Event Hubs", "services": [ - "WAF", "ACR", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "High", "text": "Leverage Availability Zones if regionally applicable", @@ -33640,9 +34535,9 @@ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-geo-dr?tabs=portal", "service": "Event Hubs", "services": [ - "WAF", "ASR", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "High", "text": "Plan for Geo Disaster Recovery using Active Passive configuration", @@ -33656,9 +34551,9 @@ "link": "https://learn.microsoft.com/azure/event-hubs/event-hubs-federation-overview", "service": "Event Hubs", "services": [ - "WAF", + "ASR", "EventHubs", - "ASR" + "WAF" ], "severity": "Medium", "text": "For Business Critical Applications, use Active Active configuration", @@ -33671,8 +34566,8 @@ "link": "https://learn.microsoft.com/azure/architecture/serverless/event-hubs-functions/resilient-design", "service": "Event Hubs", "services": [ - "WAF", - "EventHubs" + "EventHubs", + "WAF" ], "severity": "Medium", "text": "Design Resilient Event Hubs", @@ -33685,8 +34580,8 @@ "link": "https://learn.microsoft.com/azure/architecture/guide/multitenant/considerations/tenancy-models", "service": "Azure Monitor", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Data collection rules in Azure Monitor -https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-rule-overview", @@ -33700,8 +34595,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/multi-tenant/automation", "service": "Azure Backup", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "check backup instances with the underlying datasource not found", @@ -33727,9 +34622,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-microsoft-customer-agreement#design-recommendations", "service": "Azure Backup", "services": [ - "WAF", - "Backup", "ASR", + "Backup", + "WAF", "Storage" ], "severity": "Medium", @@ -33743,8 +34638,8 @@ "link": "https://learn.microsoft.com/azure/cost-management-billing/manage/direct-ea-administration#manage-notification-contacts", "service": "Azure Monitor", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Check spending and savings opportunities among the 40 different log analytics workspaces- use different retention and data collection for nonprod workspaces-create daily cap for awareness and tier sizing - If you do set a daily cap, in addition to creating an alert when the cap is reached,ensure that you also create an alert rule to be notified when some percentage has been reached (90% for example). - consider workspace transformation if possible - https://learn.microsoft.com/azure/azure-monitor/essentials/data-collection-transformations#workspace-transformation-dcr ", @@ -33758,8 +34653,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations", "service": "Azure Monitor", "services": [ - "WAF", "AzurePolicy", + "WAF", "Storage" ], "severity": "Medium", @@ -33774,8 +34669,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations", "service": "VM", "services": [ - "WAF", "Backup", + "WAF", "Storage" ], "severity": "Medium", @@ -33790,8 +34685,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/azure-billing-enterprise-agreement#design-considerations", "service": "Storage", "services": [ - "WAF", "AzurePolicy", + "WAF", "Storage" ], "severity": "Medium", @@ -33806,8 +34701,8 @@ "link": "https://learn.microsoft.com/azure/governance/policy/overview", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Make sure advisor is configured for VM right sizing ", @@ -33821,9 +34716,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/manage/centralize-operations", "service": "VM", "services": [ - "WAF", - "AzurePolicy", "VM", + "AzurePolicy", + "WAF", "Cost" ], "severity": "Medium", @@ -33851,8 +34746,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Consolidate reserved VM families with flexibility option (no more than 4-5 families)", @@ -33866,10 +34761,10 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/identity-access#prerequisites-for-a-landing-zone---design-recommendations", "service": "VM", "services": [ - "WAF", "ARS", - "Cost", - "VM" + "VM", + "WAF", + "Cost" ], "severity": "Medium", "text": "Utilize Azure Reserved Instances: This feature allows you to reserve VMs for a period of 1 or 3 years, providing significant cost savings compared to PAYG prices.", @@ -33908,10 +34803,10 @@ "link": "https://learn.microsoft.com/azure/active-directory/app-proxy/application-proxy", "service": "Azure SQL", "services": [ - "WAF", + "SQL", "AzurePolicy", - "Cost", - "SQL" + "WAF", + "Cost" ], "severity": "Medium", "text": "Check if applicable and enforce policy/change https://learn.microsoft.com/azure/azure-sql/azure-hybrid-benefit?view=azuresql&tabs=azure-portalhttps://learn.microsoft.com/azure/cost-management-billing/scope-level/create-sql-license-assignments?source=recommendations", @@ -33924,8 +34819,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/roles/best-practices", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "The VM + license part discount (ahub + 3YRI) is around 70% discount", @@ -33938,8 +34833,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-best-practices#send-logs-to-microsoft-sentinel", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Consider using a VMSS to match demand rather than flat sizing", @@ -33980,9 +34875,9 @@ "link": "https://learn.microsoft.com/azure/databricks/clusters/cluster-config-best-practices#automatic-termination", "service": "Databricks", "services": [ + "VM", "WAF", - "LoadBalancer", - "VM" + "LoadBalancer" ], "severity": "Medium", "text": "Consider using Spot VMs with fallback where possible. Consider autotermination of clusters.", @@ -34091,8 +34986,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment", "service": "Front Door", "services": [ - "WAF", "EventHubs", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -34106,8 +35001,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-setup-guide/monitoring-reporting?tabs=AzureMonitor", "service": "Front Door", "services": [ - "WAF", "AppSvc", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -34174,8 +35069,8 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-overview", "service": "Site Recovery", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "Medium", "text": "For ASR, consider using Standard SSD disks if the RPO/RTO and replication throughput allow it", @@ -34215,9 +35110,9 @@ "link": "https://learn.microsoft.com/azure/reliability/availability-zones-overview", "service": "Synapse", "services": [ - "WAF", - "Monitor", "EventHubs", + "Monitor", + "WAF", "Cost" ], "severity": "Medium", @@ -34232,8 +35127,8 @@ "service": "Synapse", "services": [ "WAF", - "Cost", - "Storage" + "Storage", + "Cost" ], "severity": "Medium", "text": "Export cost data to a storage account for additional data analysis.", @@ -34246,9 +35141,9 @@ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview", "service": "Synapse", "services": [ + "SQL", "WAF", - "Cost", - "SQL" + "Cost" ], "severity": "Medium", "text": "Control costs for a dedicated SQL pool by pausing the resource when it is not in use.", @@ -34302,9 +35197,9 @@ "link": "https://learn.microsoft.com/azure/application-gateway/overview-v2", "service": "VM", "services": [ + "VM", "WAF", - "Cost", - "VM" + "Cost" ], "severity": "Medium", "text": "Use Spot VMs for interruptible jobs: These are VMs that can be bid on and purchased at a discounted price, providing a cost-effective solution for non-critical workloads.", @@ -34318,8 +35213,8 @@ "link": "https://learn.microsoft.com/azure/load-balancer/load-balancer-overview", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Right-sizing all VMs", @@ -34332,8 +35227,8 @@ "link": "https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Swap VM sized with normalized and most recent sizes", @@ -34347,9 +35242,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "VM", "services": [ + "Monitor", "WAF", - "VM", - "Monitor" + "VM" ], "severity": "Medium", "text": "right-sizing VMs - start with monitoring usage below 5% and then work up to 40%", @@ -34363,8 +35258,8 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "VM", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Containerizing an application can improve VM density and save money on scaling it", @@ -34378,8 +35273,8 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-error-handling-policies", "service": "APIM", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Implement an error handling policy at the global level", @@ -34392,8 +35287,8 @@ "link": "https://learn.microsoft.com/azure/api-management/set-edit-policies?tabs=form#use-base-element-to-set-policy-evaluation-order", "service": "APIM", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Ensure all APIs policies include a element.", @@ -34406,9 +35301,9 @@ "link": "https://learn.microsoft.com/azure/api-management/policy-fragments", "service": "APIM", "services": [ - "WAF", "ACR", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Use Policy Fragments to avoid repeating same policies definitions across multiple APIs", @@ -34434,8 +35329,8 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor#resource-logs", "service": "APIM", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "High", "text": "Enable Diagnostics Settings to export logs to Azure Monitor", @@ -34461,8 +35356,8 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-use-azure-monitor", "service": "APIM", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "High", "text": "Configure alerts on the most critical metrics", @@ -34543,8 +35438,8 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-properties?tabs=azure-portal", "service": "APIM", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Use Named Values to store common values that can be used in policies", @@ -34557,8 +35452,8 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region", "service": "APIM", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "For DR, leverage the premium tier with deployments scaled across two or more regions for 99.99% SLA", @@ -34584,8 +35479,8 @@ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/api-management-security-baseline?toc=%2Fazure%2Fapi-management%2F&bc=%2Fazure%2Fapi-management%2Fbreadcrumb%2Ftoc.json#service-native-backup-capability", "service": "APIM", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "High", "text": "Ensure there is an automated backup routine", @@ -34598,8 +35493,8 @@ "link": "https://learn.microsoft.com/azure/api-management/retry-policy", "service": "APIM", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Use Policies to add a fail-over backend URL and caching to reduce failing calls.", @@ -34612,9 +35507,9 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-log-event-hubs", "service": "APIM", "services": [ - "WAF", "EventHubs", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Low", "text": "If you need to log at high performance levels, consider Event Hubs policy", @@ -34627,8 +35522,8 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-sample-flexible-throttling", "service": "APIM", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Apply throttling policies to control the number of requests per second", @@ -34681,8 +35576,8 @@ "link": "https://learn.microsoft.com/azure/api-management/api-management-howto-deploy-multi-region#-route-api-calls-to-regional-backend-services", "service": "APIM", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "In multi-region model, use Policies to route the requests to regional backends based on availability or latency.", @@ -34695,9 +35590,9 @@ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits#api-management-limits", "service": "APIM", "services": [ + "APIM", "WAF", - "Entra", - "APIM" + "Entra" ], "severity": "High", "text": "Be aware of APIM's limits", @@ -34723,10 +35618,10 @@ "link": "https://learn.microsoft.com/azure/api-management/front-door-api-management", "service": "APIM", "services": [ - "WAF", - "Entra", "APIM", - "FrontDoor" + "FrontDoor", + "WAF", + "Entra" ], "severity": "Medium", "text": "Use Azure Front Door in front of APIM for multi-region deployment", @@ -34753,11 +35648,11 @@ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/api-management-security-baseline?toc=%2Fazure%2Fapi-management%2F&bc=%2Fazure%2Fapi-management%2Fbreadcrumb%2Ftoc.json#network-security-group-support", "service": "APIM", "services": [ - "WAF", - "Monitor", "VNet", "APIM", - "Entra" + "Monitor", + "Entra", + "WAF" ], "severity": "Medium", "text": "Deploy network security groups (NSG) to your subnets to restrict or monitor traffic to/from APIM.", @@ -34770,11 +35665,11 @@ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/api-management-security-baseline?toc=%2Fazure%2Fapi-management%2F&bc=%2Fazure%2Fapi-management%2Fbreadcrumb%2Ftoc.json#azure-private-link", "service": "APIM", "services": [ - "WAF", - "PrivateLink", "VNet", + "PrivateLink", "APIM", - "Entra" + "Entra", + "WAF" ], "severity": "Medium", "text": "Deploy Private Endpoints to filter incoming traffic when APIM is not deployed to a VNet.", @@ -34813,9 +35708,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/app-platform/api-management/platform-automation-and-devops#design-recommendations", "service": "APIM", "services": [ + "APIM", "WAF", - "Entra", - "APIM" + "Entra" ], "severity": "Medium", "text": "Configure APIM via Infrastructure-as-code. Review DevOps best practices from the Cloud Adaption Framework APIM Landing Zone Accelerator", @@ -34828,9 +35723,9 @@ "link": "https://learn.microsoft.com/azure/api-management/visual-studio-code-tutorial", "service": "APIM", "services": [ + "APIM", "WAF", - "Entra", - "APIM" + "Entra" ], "severity": "Medium", "text": "Promote usage of Visual Studio Code APIM extension for faster API development", @@ -34949,10 +35844,10 @@ "link": "https://learn.microsoft.com/security/benchmark/azure/baselines/api-management-security-baseline?toc=%2Fazure%2Fapi-management%2F&bc=%2Fazure%2Fapi-management%2Fbreadcrumb%2Ftoc.json#ns-6-deploy-web-application-firewall", "service": "APIM", "services": [ - "WAF", - "Entra", "APIM", - "AppGW" + "AppGW", + "WAF", + "Entra" ], "severity": "High", "text": "Use web application firewall (WAF) by deploying Application Gateway in front of APIM", @@ -34981,8 +35876,8 @@ "link": "https://learn.microsoft.com/azure/storage/common/storage-private-endpoints", "service": "Azure Storage", "services": [ - "WAF", "PrivateLink", + "WAF", "Storage" ], "severity": "High", @@ -34997,9 +35892,9 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/migration-classic-resource-manager-overview#migration-of-storage-accounts", "service": "Azure Storage", "services": [ - "WAF", "RBAC", "Subscriptions", + "WAF", "Storage" ], "severity": "Medium", @@ -35014,8 +35909,8 @@ "link": "https://learn.microsoft.com/azure/storage/common/azure-defender-storage-configure", "service": "Azure Storage", "services": [ - "WAF", "Defender", + "WAF", "Storage" ], "severity": "High", @@ -35104,9 +35999,9 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/immutable-storage-overview", "service": "Azure Storage", "services": [ - "WAF", - "AzurePolicy", "Subscriptions", + "AzurePolicy", + "WAF", "Storage" ], "severity": "High", @@ -35167,8 +36062,8 @@ "service": "Azure Storage", "services": [ "WAF", - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "High", "text": "Use Azure Active Directory (Azure AD) tokens for blob access", @@ -35181,8 +36076,8 @@ "guid": "a4b1410d-4395-48a8-a228-9b3d6b57cfc6", "service": "Azure Storage", "services": [ - "WAF", - "RBAC" + "RBAC", + "WAF" ], "severity": "Medium", "text": "Least privilege in IaM permissions", @@ -35197,8 +36092,8 @@ "service": "Azure Storage", "services": [ "WAF", - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "High", "text": "When using SAS, prefer 'user delegation SAS' over storage-account-key based SAS.", @@ -35212,11 +36107,11 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/authorize-with-shared-key", "service": "Azure Storage", "services": [ - "WAF", "Monitor", "AKV", + "Entra", "Storage", - "Entra" + "WAF" ], "severity": "High", "text": "Consider disabling storage account keys, so that only AAD access (and user delegation SAS) is supported.", @@ -35230,11 +36125,11 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/blob-storage-monitoring-scenarios#audit-account-activity", "service": "Azure Storage", "services": [ - "WAF", + "AzurePolicy", "Monitor", - "AKV", "Storage", - "AzurePolicy" + "AKV", + "WAF" ], "severity": "High", "text": "Consider using Azure Monitor to audit control plane operations on the storage account", @@ -35248,9 +36143,9 @@ "link": "https://learn.microsoft.com/azure/storage/common/storage-account-keys-manage?tabs=azure-portal#create-a-key-expiration-policy", "service": "Azure Storage", "services": [ + "AzurePolicy", "WAF", "AKV", - "AzurePolicy", "Storage" ], "severity": "Medium", @@ -35265,8 +36160,8 @@ "link": "https://learn.microsoft.com/azure/storage/common/sas-expiration-policy", "service": "Azure Storage", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Consider configuring an SAS expiration policy", @@ -35280,9 +36175,9 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/define-stored-access-policy", "service": "Azure Storage", "services": [ + "AzurePolicy", "WAF", "AKV", - "AzurePolicy", "Storage" ], "severity": "Medium", @@ -35313,8 +36208,8 @@ "service": "Azure Storage", "services": [ "WAF", - "Entra", - "Storage" + "Storage", + "Entra" ], "severity": "High", "text": "Consider storing connection strings in Azure KeyVault (in scenarios where managed identities are not possible)", @@ -35328,8 +36223,8 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/delegate-access-with-shared-access-signature", "service": "Azure Storage", "services": [ - "WAF", "AzurePolicy", + "WAF", "Storage" ], "severity": "High", @@ -35386,10 +36281,10 @@ "link": "https://learn.microsoft.com/azure/storage/blobs/secure-file-transfer-protocol-support#sftp-permission-model", "service": "Azure Storage", "services": [ - "WAF", - "Entra", "RBAC", - "Storage" + "WAF", + "Storage", + "Entra" ], "severity": "High", "text": "SFTP: Limit the amount of 'local users' for SFTP access, and audit whether access is needed over time.", @@ -35416,8 +36311,8 @@ "link": "https://learn.microsoft.com/rest/api/storageservices/cross-origin-resource-sharing--cors--support-for-the-azure-storage-services", "service": "Azure Storage", "services": [ - "WAF", "AzurePolicy", + "WAF", "Storage" ], "severity": "High", @@ -35623,8 +36518,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/container-registry-geo-replication", "service": "ACR", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "High", "text": "If using a private registry, configure region replication to store images in multiple regions", @@ -35692,9 +36587,9 @@ "link": "https://learn.microsoft.com/azure/governance/policy/concepts/policy-for-kubernetes", "service": "AKS", "services": [ + "AzurePolicy", "WAF", - "AKS", - "AzurePolicy" + "AKS" ], "severity": "Medium", "text": "Use Azure Policy for Kubernetes to ensure cluster compliance", @@ -35734,8 +36629,8 @@ "link": "https://learn.microsoft.com/azure/container-registry/", "service": "AKS", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "Use a private registry for your images, such as ACR", @@ -35828,8 +36723,8 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-containers-enable", "service": "AKS", "services": [ - "WAF", - "Defender" + "Defender", + "WAF" ], "severity": "Medium", "text": "Consider using Defender for Containers", @@ -35885,9 +36780,9 @@ "link": "https://learn.microsoft.com/azure/aks/manage-azure-rbac", "service": "AKS", "services": [ + "RBAC", "WAF", - "Entra", - "RBAC" + "Entra" ], "severity": "Medium", "text": "Integrate authorization with AAD RBAC", @@ -35900,9 +36795,9 @@ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-identity", "service": "AKS", "services": [ + "RBAC", "WAF", - "AKS", - "RBAC" + "AKS" ], "severity": "High", "text": "Use namespaces for restricting RBAC privilege in Kubernetes", @@ -36014,9 +36909,9 @@ "link": "https://azure.github.io/application-gateway-kubernetes-ingress/setup/install-existing/", "service": "AKS", "services": [ - "WAF", "ACR", - "AppGW" + "AppGW", + "WAF" ], "severity": "Medium", "text": "If using AGIC, do not share an AppGW across clusters", @@ -36086,9 +36981,9 @@ "link": "https://learn.microsoft.com/azure/private-link/private-link-overview", "service": "AKS", "services": [ + "PrivateLink", "WAF", - "VNet", - "PrivateLink" + "VNet" ], "severity": "Medium", "text": "Use Private Endpoints (preferred) or Virtual Network Service Endpoints to access PaaS services from the cluster", @@ -36143,8 +37038,8 @@ "link": "https://learn.microsoft.com/azure/aks/internal-lb", "service": "AKS", "services": [ - "WAF", "AKS", + "WAF", "VNet" ], "severity": "Low", @@ -36238,8 +37133,8 @@ "link": "https://learn.microsoft.com/azure/aks/limit-egress-traffic", "service": "AKS", "services": [ - "WAF", - "NVA" + "NVA", + "WAF" ], "severity": "High", "text": "Filter egress traffic with AzFW/NVA if your security requirements mandate it", @@ -36281,9 +37176,9 @@ "link": "https://learn.microsoft.com/azure/aks/use-network-policies", "service": "AKS", "services": [ + "AzurePolicy", "WAF", - "AKS", - "AzurePolicy" + "AKS" ], "severity": "Medium", "text": "For Windows 2019 and 2022 AKS nodes Calico Network Policies can be used ", @@ -36297,9 +37192,9 @@ "link": "https://learn.microsoft.com/azure/aks/use-network-policies", "service": "AKS", "services": [ + "AzurePolicy", "WAF", - "AKS", - "AzurePolicy" + "AKS" ], "severity": "High", "text": "Enable a Kubernetes Network Policy option (Calico/Azure)", @@ -36312,9 +37207,9 @@ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-network", "service": "AKS", "services": [ + "AzurePolicy", "WAF", - "AKS", - "AzurePolicy" + "AKS" ], "severity": "High", "text": "Use Kubernetes network policies to increase intra-cluster security", @@ -36341,10 +37236,10 @@ "link": "https://learn.microsoft.com/azure/virtual-network/ddos-protection-overview", "service": "AKS", "services": [ - "WAF", + "DDoS", "AKS", - "VNet", - "DDoS" + "WAF", + "VNet" ], "severity": "Medium", "text": "Use DDoS Standard in the AKS Virtual Network", @@ -36384,8 +37279,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-metric-alerts", "service": "AKS", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "High", "text": "Configure alerts on the most critical metrics (see Container Insights for recommendations)", @@ -36574,8 +37469,8 @@ "link": "https://learn.microsoft.com/azure/aks/monitor-aks", "service": "AKS", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Low", "text": "Send master logs (aka API logs) to Azure Monitor or your preferred log management solution", @@ -36629,8 +37524,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/insights/container-insights-overview", "service": "AKS", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "High", "text": "Monitor your cluster metrics with Container Insights (or other tools like Prometheus)", @@ -36657,8 +37552,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/containers/container-insights-analyze", "service": "AKS", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Monitor CPU and memory utilization of the nodes", @@ -36671,8 +37566,8 @@ "link": "https://learn.microsoft.com/azure/aks/configure-azure-cni", "service": "AKS", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "If using Azure CNI, monitor % of pod IPs consumed per node", @@ -36686,11 +37581,11 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/premium-storage-performance", "service": "AKS", "services": [ - "WAF", "ServiceBus", "EventHubs", "Monitor", - "Storage" + "Storage", + "WAF" ], "severity": "Medium", "text": "Monitor OS disk queue depth in nodes", @@ -36703,10 +37598,10 @@ "link": "https://learn.microsoft.com/azure/aks/load-balancer-standard", "service": "AKS", "services": [ - "WAF", - "LoadBalancer", "NVA", - "Monitor" + "Monitor", + "WAF", + "LoadBalancer" ], "severity": "Medium", "text": "If not using egress filtering with AzFW/NVA, monitor standard ALB allocated SNAT ports", @@ -36759,8 +37654,8 @@ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits", "service": "AKS", "services": [ - "WAF", - "Subscriptions" + "Subscriptions", + "WAF" ], "severity": "High", "text": "Ensure your subscription has enough quota to scale out your nodepools", @@ -36941,9 +37836,9 @@ "link": "https://learn.microsoft.com/azure/aks/operator-best-practices-multi-region", "service": "AKS", "services": [ + "SQL", "WAF", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "text": "Avoid keeping state in the cluster, and store data outside (AzStorage, AzSQL, Cosmos, etc)", @@ -36997,8 +37892,8 @@ "link": "https://learn.microsoft.com/azure/architecture/web-apps/spring-apps/architectures/spring-apps-multi-region", "service": "Spring Apps", "services": [ - "WAF", "TrafficManager", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -37012,8 +37907,8 @@ "link": "https://learn.microsoft.com/azure/reliability/reliability-spring-apps", "service": "Spring Apps", "services": [ - "WAF", - "ACR" + "ACR", + "WAF" ], "severity": "Medium", "text": "In supported region, Azure Spring Apps can be deployed as zone redundant, which means that instances are automatically distributed across availability zones. This feature is only available in Standard and Enterprise tiers.", @@ -37039,8 +37934,8 @@ "link": "https://learn.microsoft.com/azure/spring-apps/diagnostic-services", "service": "Spring Apps", "services": [ - "WAF", - "Monitor" + "Monitor", + "WAF" ], "severity": "Medium", "text": "Monitor Azure Spring Apps with logs, metrics and tracing. Integrate ASA with application insights and track failures and create workbooks.", @@ -37291,8 +38186,8 @@ "link": "https://learn.microsoft.com/azure/reliability/reliability-azure-container-apps?tabs=azure-cli#cross-region-disaster-recovery-and-business-continuity", "service": "Container Apps", "services": [ - "WAF", "TrafficManager", + "WAF", "FrontDoor" ], "severity": "High", @@ -37305,8 +38200,8 @@ "link": "https://learn.microsoft.com/azure/sap/center-sap-solutions/overview", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Azure Center for SAP solutions (ACSS) is an Azure offering that makes SAP a top-level workload on Azure. ACSS is an end-to-end solution that enables you to create and run SAP systems as a unified workload on Azure and provides a more seamless foundation for innovation. You can take advantage of the management capabilities for both new and existing Azure-based SAP systems.", @@ -37319,8 +38214,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-platform-automation-and-devops", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Azure supports automating SAP deployments in Linux and Windows. SAP Deployment Automation Framework is an open-source orchestration tool that can deploy, install, and maintain SAP environments.", @@ -37333,8 +38228,8 @@ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/data-platform", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Perform a point-in-time recovery for your production databases at any point and in a time frame that meets your RTO; point-in-time recovery typically includes operator errors deleting data either on the DBMS layer or through SAP, incidentally", @@ -37345,8 +38240,8 @@ "guid": "c4b8e117-930b-4dbd-ae50-7bc5faf6f91a", "service": "SAP", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "Medium", "text": "Test the backup and recovery times to verify that they meet your RTO requirements for restoring all systems simultaneously after a disaster.", @@ -37358,12 +38253,12 @@ "link": "https://learn.microsoft.com/azure/reliability/cross-region-replication-azure", "service": "SAP", "services": [ - "WAF", - "Storage", "SQL", - "SAP", "Backup", - "ASR" + "Storage", + "ASR", + "SAP", + "WAF" ], "severity": "High", "text": "You can replicate standard storage between paired regions, but you can't use standard storage to store your databases or virtual hard disks. You can replicate backups only between paired regions that you use. For all your other data, run your replication by using native DBMS features like SQL Server Always On or SAP HANA System Replication. Use a combination of Site Recovery, rsync or robocopy, and other third-party software for the SAP application layer.", @@ -37376,8 +38271,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "When using Azure Availability Zones to achieve high availability, you must consider latency between SAP application servers and database servers. For zones with high latencies, operational procedures need to be in place to ensure that SAP application servers and database servers are running in the same zone at all times.", @@ -37390,10 +38285,10 @@ "link": "https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering", "service": "SAP", "services": [ - "WAF", - "ExpressRoute", "ASR", - "VPN" + "ExpressRoute", + "VPN", + "WAF" ], "severity": "High", "text": "Set up ExpressRoute connections from on-premises to the primary and secondary Azure disaster recovery regions. Also, as an alternative to using ExpressRoute, consider setting up VPN connections from on-premises to the primary and secondary Azure disaster recovery regions.", @@ -37406,8 +38301,8 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/disaster-recovery-guidance", "service": "SAP", "services": [ - "WAF", "ACR", + "WAF", "AKV" ], "severity": "Low", @@ -37420,10 +38315,10 @@ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-s4hana", "service": "SAP", "services": [ - "WAF", - "VNet", "ASR", - "SAP" + "SAP", + "WAF", + "VNet" ], "severity": "Medium", "text": "Peer the primary and disaster recovery virtual networks. For example, for HANA System Replication, an SAP HANA DB virtual network needs to be peered to the disaster recovery site's SAP HANA DB virtual network.", @@ -37435,9 +38330,9 @@ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azure-netapp-files-service-levels", "service": "SAP", "services": [ + "SAP", "WAF", - "Storage", - "SAP" + "Storage" ], "severity": "Low", "text": "If you use Azure NetApp Files storage for your SAP deployments, at a minimum, create two Azure NetApp Files accounts in the Premium tier, in two regions.", @@ -37476,10 +38371,10 @@ "guid": "0258ed30-fe42-434f-87b9-58f91f908e0a", "service": "SAP", "services": [ - "WAF", - "Entra", "ASR", - "VM" + "VM", + "WAF", + "Entra" ], "severity": "High", "text": "Use Site Recovery to replicate an application server to a DR site. Site Recovery can also help with replicating central-services cluster VMs to the DR site. When you invoke DR, you'll need to reconfigure the Linux Pacemaker cluster on the DR site (for example, replace the VIP or SBD, run corosync.conf, and more).", @@ -37492,8 +38387,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "High", "text": "Consider the availability of SAP software against single points of failure. This includes single points of failure within applications such as DBMSs utilized in SAP NetWeaver and SAP S/4HANA architectures, SAP ABAP and ASCS + SCS. Also, other tools such as SAP Web Dispatcher.", @@ -37506,8 +38401,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-supported-configurations", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "High", "text": "For SAP and SAP databases, consider implementing automatic failover clusters. In Windows, Windows Server Failover Clustering supports failover. In Linux, Linux Pacemaker or third-party tools like SIOS Protection Suite and Veritas InfoScale support failover.", @@ -37520,8 +38415,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-sap-guide?tabs=windows", "service": "SAP", "services": [ - "WAF", "VM", + "WAF", "Storage" ], "severity": "High", @@ -37535,9 +38430,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/dbms-guide-general", "service": "SAP", "services": [ + "SAP", "WAF", - "Storage", - "SAP" + "Storage" ], "severity": "High", "text": "The DBMS data and transaction/redo log files are stored in Azure supported block storage or Azure NetApp Files. Azure Files or Azure Premium Files isn't supported as storage for DBMS data and/or redo log files with SAP workload.", @@ -37550,8 +38445,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/sap-high-availability-guide-wsfc-shared-disk", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "High", "text": "You can use Azure shared disks in Windows for ASCS + SCS components and specific high-availability scenarios. Set up your failover clusters separately for SAP application layer components and the DBMS layer. Azure doesn't currently support high-availability architectures that combine SAP application layer components and the DBMS layer into one failover cluster.", @@ -37564,9 +38459,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-standard-load-balancer-outbound-connections", "service": "SAP", "services": [ + "SAP", "WAF", - "LoadBalancer", - "SAP" + "LoadBalancer" ], "severity": "High", "text": "Most failover clusters for SAP application layer components (ASCS) and the DBMS layer require a virtual IP address for a failover cluster. Azure Load Balancer should handle the virtual IP address for all other cases. One design principle is to use one load balancer per cluster configuration. We recommend that you use the standard version of the load balancer (Standard Load Balancer SKU).", @@ -37606,10 +38501,10 @@ "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", "service": "SAP", "services": [ - "WAF", - "Entra", + "SAP", "VM", - "SAP" + "WAF", + "Entra" ], "severity": "High", "text": "If you want to meet the infrastructure SLAs for your applications for SAP components (central services, application servers, and databases), you must choose the same high availability options (VMs, availability sets, availability zones) for all components.", @@ -37621,10 +38516,10 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview", "service": "SAP", "services": [ - "WAF", - "Entra", "RBAC", - "VM" + "VM", + "WAF", + "Entra" ], "severity": "High", "text": "Do not mix servers of different roles in the same availability set. Keep central services VMs, database VMs, application VMs in their own availability sets", @@ -37650,8 +38545,8 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/availability-set-overview", "service": "SAP", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "High", "text": "When you create availability sets, use the maximum number of fault domains and update domains available. For example, if you deploy more than two VMs in one availability set, use the maximum number of fault domains (three) and enough update domains to limit the effect of potential physical hardware failures, network outages, or power interruptions, in addition to Azure planned maintenance. The default number of fault domains is two, and you can't change it online later.", @@ -37664,9 +38559,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "High", "text": "When you use Azure proximity placement groups in an availability set deployment, all three SAP components (central services, application server, and database) should be in the same proximity placement group.", @@ -37678,9 +38573,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios", "service": "SAP", "services": [ - "WAF", + "SAP", "ACR", - "SAP" + "WAF" ], "severity": "High", "text": "Use one proximity placement group per SAP SID. Groups don't span across Availability Zones or Azure regions", @@ -37692,9 +38587,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "High", "text": "Use one of the following services to run SAP central services clusters, depending on the operating system.", @@ -37707,9 +38602,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-suse-multi-sid", "service": "SAP", "services": [ + "VM", "WAF", - "Entra", - "VM" + "Entra" ], "severity": "Medium", "text": "Azure doesn't currently support combining ASCS and DB HA in the same Linux Pacemaker cluster; separate them into individual clusters. However, you can combine up to five multiple central-services clusters into a pair of VMs.", @@ -37722,8 +38617,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-business-continuity-and-disaster-recovery", "service": "SAP", "services": [ - "WAF", "VM", + "WAF", "Storage" ], "severity": "Medium", @@ -37736,8 +38631,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-guide-rhel-with-hana-ascs-ers-dialog-instance", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Azure supports installing and configuring SAP HANA and ASCS/SCS and ERS instances on the same high availability cluster running on Red Hat Enterprise Linux (RHEL).", @@ -37764,9 +38659,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-operations-storage", "service": "SAP", "services": [ + "SAP", "WAF", - "Storage", - "SAP" + "Storage" ], "severity": "High", "text": "You should run SAP HANA on Azure only on the types of storage that are certified by SAP. Note that certain volumes must be run on certain disk configurations, where applicable. These configurations include enabling Write Accelerator and using Premium storage. You also need to ensure that the file system that runs on storage is compatible with the DBMS that runs on the machine.", @@ -37779,10 +38674,10 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/disaster-recovery-overview-guide#storage", "service": "SAP", "services": [ - "WAF", "ASR", - "Storage", - "SAP" + "SAP", + "WAF", + "Storage" ], "severity": "High", "text": "Consider configuring high availability depending on the type of storage you use for your SAP workloads. Some storage services available in Azure are not supported by Azure Site Recovery, so your high availability configuration may differ.", @@ -37795,9 +38690,9 @@ "link": "https://azure.microsoft.com/ja-jp/explore/global-infrastructure/products-by-region/", "service": "SAP", "services": [ + "SAP", "WAF", - "Storage", - "SAP" + "Storage" ], "severity": "High", "text": "Different native Azure storage services (like Azure Files, Azure NetApp Files, Azure Shared Disk) may not be available in all regions. So to have similar SAP setup on the DR region after failover, ensure the respective storage service is offered in DR site.", @@ -37809,9 +38704,9 @@ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/optimize-your-azure-costs-by-automating-sap-system-start-stop/ba-p/2120675", "service": "SAP", "services": [ + "SAP", "WAF", - "Cost", - "SAP" + "Cost" ], "severity": "Medium", "text": "Automate SAP System Start-Stop to manage costs.", @@ -37823,11 +38718,11 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1", "service": "SAP", "services": [ - "WAF", - "Cost", + "VM", "Storage", "SAP", - "VM" + "WAF", + "Cost" ], "severity": "Low", "text": "In the case of using Azure Premium Storage with SAP HANA, Azure Standard SSD storage can be used to select a cost-conscious storage solution. However, please note that choosing Standard SSD or Standard HDD Azure storage will affect the SLA of the individual VMs. Also, for systems with lower I/O throughput and low latency, such as non-production environments, lower series VMs can be used.", @@ -37839,11 +38734,11 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/hana-vm-premium-ssd-v1", "service": "SAP", "services": [ - "WAF", - "Cost", + "VM", "Storage", "SAP", - "VM" + "WAF", + "Cost" ], "severity": "Low", "text": "As a lower-cost alternative configuration (multipurpose), you can choose a low-performance SKU for your non-production HANA database server VMs. However, it is important to note that some VM types, such as E-series, are not HANA certified (SAP HANA Hardware Directory) or cannot achieve storage latency of less than 1ms.", @@ -37855,9 +38750,9 @@ "link": "https://learn.microsoft.com/azure/well-architected/sap/design-areas/security", "service": "SAP", "services": [ - "WAF", "RBAC", - "Subscriptions" + "Subscriptions", + "WAF" ], "severity": "High", "text": "Enforce a RBAC model for management groups, subscriptions, resource groups and resources", @@ -37870,9 +38765,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "Medium", "text": "Enforce Principal propagation for forwarding the identity from SAP cloud application to SAP on-premises (Including IaaS) through cloud connector", @@ -37885,9 +38780,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/fundamentals/scenario-azure-first-sap-identity-integration", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "Medium", "text": "Implement SSO to SAP SaaS applications like SAP Analytics Cloud, SAP Cloud Platform, Business by design, SAP Qualtrics and SAP C4C with Azure AD using SAML.", @@ -37899,8 +38794,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.", @@ -37912,8 +38807,8 @@ "guid": "9eb54dad-7861-4e1c-973a-f3bb003fc9c1", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Implement SSO to SAP NetWeaver-based web applications like SAP Fiori and SAP Web GUI by using SAML.", @@ -37926,8 +38821,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "You can implement SSO to SAP GUI by using SAP NetWeaver SSO or a partner solution.", @@ -37939,9 +38834,9 @@ "guid": "23181aa4-1742-4694-9ff8-ae7d7d474317", "service": "SAP", "services": [ + "SAP", "WAF", - "AKV", - "SAP" + "AKV" ], "severity": "Medium", "text": "For SSO for SAP GUI and web browser access, implement SNC / Kerberos/SPNEGO (simple and protected GSSAPI negotiation mechanism) due to its ease of configuration and maintenance. For SSO with X.509 client certificates, consider the SAP Secure Login Server, which is a component of the SAP SSO solution.", @@ -37954,9 +38849,9 @@ "link": "https://blogs.sap.com/2017/07/12/sap-single-sign-on-protect-your-sap-landscape-with-x.509-certificates/", "service": "SAP", "services": [ + "SAP", "WAF", - "AKV", - "SAP" + "AKV" ], "severity": "Medium", "text": "For SSO for SAP GUI and web browser access, implement SNC / Kerberos/SPNEGO (simple and protected GSSAPI negotiation mechanism) due to its ease of configuration and maintenance. For SSO with X.509 client certificates, consider the SAP Secure Login Server, which is a component of the SAP SSO solution.", @@ -37968,8 +38863,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-netweaver-tutorial#configure-sap-netweaver-for-oauth", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Implement SSO by using OAuth for SAP NetWeaver to allow third-party or custom applications to access SAP NetWeaver OData services.", @@ -37981,8 +38876,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/saphana-tutorial", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Implement SSO to SAP HANA", @@ -37994,9 +38889,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration#connectivity-with-sap-rise", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "Medium", "text": "Consider Azure AD an identity provider for SAP systems hosted on RISE. For more information, see Integrating the Service with Azure AD.", @@ -38008,8 +38903,8 @@ "link": "https://github.com/azuredevcollege/SAP/blob/master/sap-oauth-saml-flow/README.md", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "For applications that access SAP, you might want to use principal propagation to establish SSO.", @@ -38021,9 +38916,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-identity-authentication-tutorial", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "Medium", "text": "If you're using SAP BTP services or SaaS solutions that require SAP Identity Authentication Service (IAS), consider implementing SSO between SAP Cloud Identity Authentication Services and Azure AD to access those SAP services. This integration lets SAP IAS act as a proxy identity provider and forwards authentication requests to Azure AD as the central user store and identity provider.", @@ -38035,8 +38930,8 @@ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-hana-cloud-platform-tutorial", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Implement SSO to SAP BTP", @@ -38048,9 +38943,9 @@ "link": "https://learn.microsoft.com/azure/active-directory/saas-apps/sap-successfactors-inbound-provisioning-cloud-only-tutorial", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "Medium", "text": "If you're using SAP SuccessFactors, consider using the Azure AD automated user provisioning. With this integration, as you add new employees to SAP SuccessFactors, you can automatically create their user accounts in Azure AD. Optionally, you can create user accounts in Microsoft 365 or other SaaS applications that are supported by Azure AD. Use write-back of the email address to SAP SuccessFactors.", @@ -38062,10 +38957,10 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/landing-zone/design-area/resource-org-management-groups", "service": "SAP", "services": [ - "WAF", - "AzurePolicy", + "SAP", "Subscriptions", - "SAP" + "WAF", + "AzurePolicy" ], "severity": "Medium", "text": "enforce existing Management Group policies to SAP Subscriptions", @@ -38078,9 +38973,9 @@ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape", "service": "SAP", "services": [ - "WAF", + "SAP", "Subscriptions", - "SAP" + "WAF" ], "severity": "High", "text": "Integrate tightly coupled applications into the same SAP subscription to avoid additional routing and management complexity", @@ -38093,8 +38988,8 @@ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape", "service": "SAP", "services": [ - "WAF", - "Subscriptions" + "Subscriptions", + "WAF" ], "severity": "High", "text": "Leverage Subscription as scale unit and scaling our resources, consider deploying subscription per environment eg. Sandbox, non-prod, prod ", @@ -38107,9 +39002,9 @@ "link": "https://learn.microsoft.com/azure/quotas/quotas-overview", "service": "SAP", "services": [ - "WAF", + "Subscriptions", "VM", - "Subscriptions" + "WAF" ], "severity": "High", "text": "Ensure quota increase as a part of subscription provisioning (e.g. total available VM cores within a subscription)", @@ -38134,9 +39029,9 @@ "link": "https://learn.microsoft.com/azure/quotas/quickstart-increase-quota-portal", "service": "SAP", "services": [ - "WAF", + "Subscriptions", "VM", - "Subscriptions" + "WAF" ], "severity": "High", "text": "If deploying to an availability zone, ensure that the VM's zone deployment is available once the quota has been approved. Submit a support request with the subscription, VM series, number of CPUs and availability zone required.", @@ -38161,8 +39056,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-resource-organization", "service": "SAP", "services": [ - "WAF", "TrafficManager", + "WAF", "Cost" ], "severity": "Medium", @@ -38176,8 +39071,8 @@ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about", "service": "SAP", "services": [ - "WAF", - "Backup" + "Backup", + "WAF" ], "severity": "High", "text": "Help protect your HANA database by using the Azure Backup service.", @@ -38190,10 +39085,10 @@ "link": "https://learn.microsoft.com/azure/azure-netapp-files/azacsnap-introduction", "service": "SAP", "services": [ - "WAF", - "Entra", "VM", - "Storage" + "WAF", + "Storage", + "Entra" ], "severity": "Medium", "text": "If you deploy Azure NetApp Files for your HANA, Oracle, or DB2 database, use the Azure Application Consistent Snapshot tool (AzAcSnap) to take application-consistent snapshots. AzAcSnap also supports Oracle databases. Consider using AzAcSnap on a central VM rather than on individual VMs.", @@ -38205,8 +39100,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "High", "text": "Ensure time-zone matches between the operating system and the SAP system.", @@ -38245,9 +39140,9 @@ "link": "https://learn.microsoft.com/azure/lighthouse/overview", "service": "SAP", "services": [ + "SAP", "WAF", - "Entra", - "SAP" + "Entra" ], "severity": "Medium", "text": "If you partner with customers by managing their SAP estates, consider Azure Lighthouse. Azure Lighthouse allows managed service providers to use Azure native identity services to authenticate to the customers' environment. It puts the control in the hands of customers, because they can revoke access at any time and audit service providers' actions.", @@ -38259,8 +39154,8 @@ "link": "https://learn.microsoft.com/azure/update-manager/scheduled-patching?tabs=schedule-updates-single-machine%2Cschedule-updates-scale-overview", "service": "SAP", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Use Azure Update Manager to check the status of available updates for a single VM or multiple VMs and consider scheduling regular patching.", @@ -38273,8 +39168,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/lama-installation", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Low", "text": "Optimize and manage SAP Basis operations by using SAP Landscape Management (LaMa). Use the SAP LaMa connector for Azure to relocate, copy, clone, and refresh SAP systems.", @@ -38287,10 +39182,10 @@ "link": "https://learn.microsoft.com/azure/sap/monitor/about-azure-monitor-sap-solutions", "service": "SAP", "services": [ - "WAF", "SQL", + "SAP", "Monitor", - "SAP" + "WAF" ], "severity": "Medium", "text": "Use Azure Monitor for SAP solutions to monitor your SAP workloads(SAP HANA, high-availability SUSE clusters, and SQL systems) on Azure. Consider supplementing Azure Monitor for SAP solutions with SAP Solution Manager.", @@ -38303,11 +39198,11 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/vm-extension-for-sap", "service": "SAP", "services": [ - "WAF", "Monitor", - "SAP", "VM", - "Entra" + "Entra", + "SAP", + "WAF" ], "severity": "High", "text": "Run a VM Extension for SAP check. VM Extension for SAP uses the assigned managed identity of a virtual machine (VM) to access VM monitoring and configuration data. The check ensures that all performance metrics in your SAP application come from the underlying Azure Extension for SAP.", @@ -38320,8 +39215,8 @@ "link": "https://learn.microsoft.com/azure/azure-monitor/logs/design-logs-deployment", "service": "SAP", "services": [ - "WAF", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "Medium", "text": "Use Azure Policy for access control and compliance reporting. Azure Policy provides the ability to enforce organization-wide settings to ensure consistent policy adherence and fast violation detection. ", @@ -38334,10 +39229,10 @@ "link": "https://learn.microsoft.com/azure/network-watcher/connection-monitor-overview", "service": "SAP", "services": [ - "WAF", + "SAP", "NetworkWatcher", - "Monitor", - "SAP" + "WAF", + "Monitor" ], "severity": "Medium", "text": "Use Connection Monitor in Azure Network Watcher to monitor latency metrics for SAP databases and application servers. Or collect and display network latency measurements by using Azure Monitor.", @@ -38350,9 +39245,9 @@ "link": "https://github.com/Azure/SAP-on-Azure-Scripts-and-Utilities/tree/main/QualityCheck", "service": "SAP", "services": [ - "WAF", + "SAP", "VM", - "SAP" + "WAF" ], "severity": "Medium", "text": "Perform a quality check for SAP HANA on the provisioned Azure infrastructure to verify that provisioned VMs comply with SAP HANA on Azure best practices.", @@ -38364,9 +39259,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/high-availability-zones", "service": "SAP", "services": [ - "WAF", + "SAP", "Subscriptions", - "SAP" + "WAF" ], "severity": "High", "text": "For each Azure subscription, run a latency test on Azure availability zones before zonal deployment to choose low-latency zones for deployment of SAP on Azure.", @@ -38379,8 +39274,8 @@ "link": "https://learn.microsoft.com/azure/advisor/advisor-how-to-improve-reliability", "service": "SAP", "services": [ - "WAF", "ASR", + "WAF", "Storage" ], "severity": "Medium", @@ -38394,10 +39289,10 @@ "link": "https://learn.microsoft.com/azure/sentinel/sap/deployment-overview", "service": "SAP", "services": [ - "WAF", - "Sentinel", + "SAP", "Monitor", - "SAP" + "WAF", + "Sentinel" ], "severity": "Medium", "text": "Implement threat protection by using the Microsoft Sentinel solution for SAP. Use this solution to monitor your SAP systems and detect sophisticated threats throughout the business logic and application layers.", @@ -38424,9 +39319,9 @@ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-test-latency?tabs=windows", "service": "SAP", "services": [ + "Monitor", "WAF", - "VM", - "Monitor" + "VM" ], "severity": "Low", "text": "Use inter-VM latency monitoring for latency-sensitive applications.", @@ -38438,10 +39333,10 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide-storage", "service": "SAP", "services": [ - "WAF", "ASR", + "SAP", "Monitor", - "SAP" + "WAF" ], "severity": "Medium", "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.", @@ -38454,9 +39349,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-management-and-monitoring", "service": "SAP", "services": [ + "SAP", "WAF", - "Storage", - "SAP" + "Storage" ], "severity": "Medium", "text": "Exclude all the database file systems and executable programs from antivirus scans. Including them could lead to performance problems. Check with the database vendors for prescriptive details on the exclusion list. For example, Oracle recommends excluding /oracle//sapdata from antivirus scans.", @@ -38468,8 +39363,8 @@ "link": "https://sapit-forme-prod.authentication.eu11.hana.ondemand.com/login", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Low", "text": "Consider collecting full database statistics for non-HANA databases after migration. For example, implement SAP note 1020260 - Delivery of Oracle statistics.", @@ -38481,9 +39376,9 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/configure-oracle-asm", "service": "SAP", "services": [ + "SAP", "WAF", - "Storage", - "SAP" + "Storage" ], "severity": "Medium", "text": "Consider using Oracle Automatic Storage Management (ASM) for all Oracle deployments that use SAP on Azure.", @@ -38496,9 +39391,9 @@ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/announcement-sap-on-azure-oracle-performance-efficiency-scripts/ba-p/3725178", "service": "SAP", "services": [ - "WAF", "SQL", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "For SAP on Azure running Oracle, a collection of SQL scripts can help you diagnose performance problems. Automatic Workload Repository (AWR) reports contain valuable information for diagnosing problems in the Oracle system. We recommend that you run an AWR report during several sessions and choose peak times for it, to ensure broad coverage for the analysis.", @@ -38511,10 +39406,10 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot", "service": "SAP", "services": [ - "WAF", "ASR", + "SAP", "Monitor", - "SAP" + "WAF" ], "severity": "High", "text": "Use Azure Site Recovery monitoring to maintain the health of the disaster recovery service for SAP application servers.", @@ -38527,9 +39422,9 @@ "link": "https://learn.microsoft.com/azure/ddos-protection/ddos-protection-overview", "service": "SAP", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "AppGW" + "WAF" ], "severity": "Medium", "text": "For secure delivery of HTTP/S apps, use Application Gateway v2 and ensure that WAF protection and policies are enabled.", @@ -38542,10 +39437,10 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity", "service": "SAP", "services": [ - "WAF", "DNS", + "SAP", "VM", - "SAP" + "WAF" ], "severity": "Medium", "text": "If the virtual machine's DNS or virtual name is not changed during migration to Azure, Background DNS and virtual names connect many system interfaces in the SAP landscape, and customers are only sometimes aware of the interfaces that developers define over time. Connection challenges arise between various systems when virtual or DNS names change after migrations, and it's recommended to retain DNS aliases to prevent these types of difficulties.", @@ -38558,10 +39453,10 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-network-topology-and-connectivity", "service": "SAP", "services": [ - "WAF", "DNS", - "VNet", - "SAP" + "SAP", + "WAF", + "VNet" ], "severity": "Medium", "text": "Use different DNS zones to distinguish each environment (sandbox, development, preproduction, and production) from each other. The exception is for SAP deployments with their own VNet; here, private DNS zones might not be necessary.", @@ -38574,10 +39469,10 @@ "link": "https://learn.microsoft.com/azure/virtual-network/virtual-network-peering-overview", "service": "SAP", "services": [ - "WAF", + "SAP", "ACR", - "VNet", - "SAP" + "WAF", + "VNet" ], "severity": "Medium", "text": "Local and global VNet peering provide connectivity and are the preferred approaches to ensure connectivity between landing zones for SAP deployments across multiple Azure regions", @@ -38590,9 +39485,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/planning-guide", "service": "SAP", "services": [ - "WAF", + "SAP", "NVA", - "SAP" + "WAF" ], "severity": "High", "text": "It is not supported to deploy any NVA between SAP application and SAP Database server", @@ -38605,10 +39500,10 @@ "link": "https://learn.microsoft.com/training/modules/introduction-azure-virtual-wan/?source=recommendations", "service": "SAP", "services": [ - "WAF", + "SAP", "ACR", - "VWAN", - "SAP" + "WAF", + "VWAN" ], "severity": "Medium", "text": "Use Virtual WAN for Azure deployments in new, large, or global networks where you need global transit connectivity across Azure regions and on-premises locations. With this approach, you won't need to manually set up transitive routing for Azure networking, and you can follow a standard for SAP on Azure deployments.", @@ -38621,9 +39516,9 @@ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/network-virtual-appliances/reliability", "service": "SAP", "services": [ + "NVA", "WAF", - "VNet", - "NVA" + "VNet" ], "severity": "Medium", "text": "Consider deploying network virtual appliances (NVAs) between regions only if partner NVAs are used. NVAs between regions or VNets aren't required if native NVAs are present. When you're deploying partner networking technologies and NVAs, follow the vendor's guidance to verify conflicting configurations with Azure networking.", @@ -38636,10 +39531,10 @@ "link": "https://learn.microsoft.com/azure/architecture/networking/hub-spoke-vwan-architecture", "service": "SAP", "services": [ - "WAF", "VNet", "NVA", "SAP", + "WAF", "VWAN" ], "severity": "Medium", @@ -38653,9 +39548,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing", "service": "SAP", "services": [ - "WAF", + "SAP", "VM", - "SAP" + "WAF" ], "severity": "High", "text": "Public IP assignment to VM running SAP Workload is not recommended.", @@ -38668,8 +39563,8 @@ "link": "https://learn.microsoft.com/training/modules/protect-on-premises-infrastructure-with-azure-site-recovery/?source=recommendations", "service": "SAP", "services": [ - "WAF", - "ASR" + "ASR", + "WAF" ], "severity": "High", "text": "Consider reserving IP address on DR side when configuring ASR", @@ -38710,8 +39605,8 @@ "link": "https://learn.microsoft.com/azure/well-architected/services/networking/azure-firewall?toc=%2Fazure%2Ffirewall%2Ftoc.json&bc=%2Fazure%2Ffirewall%2Fbreadcrumb%2Ftoc.json", "service": "SAP", "services": [ - "WAF", - "Firewall" + "Firewall", + "WAF" ], "severity": "Medium", "text": "Use Azure Firewall to govern Azure outbound traffic to the internet, non-HTTP/S inbound connections, and East/West traffic filtering (if the organization requires it)", @@ -38724,9 +39619,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/expose-sap-process-orchestration-on-azure", "service": "SAP", "services": [ - "WAF", + "SAP", "AppGW", - "SAP" + "WAF" ], "severity": "Medium", "text": "Application Gateway and Web Application Firewall have limitations when Application Gateway serves as a reverse proxy for SAP web apps, as shown in the comparison between Application Gateway, SAP Web Dispatcher, and other third-party services.", @@ -38739,9 +39634,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "SAP", "services": [ - "WAF", "ACR", "AzurePolicy", + "WAF", "FrontDoor" ], "severity": "Medium", @@ -38755,10 +39650,10 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/afds/afds-overview", "service": "SAP", "services": [ - "WAF", + "AppGW", "AzurePolicy", - "FrontDoor", - "AppGW" + "WAF", + "FrontDoor" ], "severity": "Medium", "text": "Take advantage of Web Application Firewall policies in Azure Front Door when you're using Azure Front Door and Application Gateway to protect HTTP/S applications. Lock down Application Gateway to receive traffic only from Azure Front Door.", @@ -38771,9 +39666,9 @@ "link": "https://learn.microsoft.com/azure/web-application-firewall/ag/ag-overview", "service": "SAP", "services": [ + "AppGW", "WAF", - "LoadBalancer", - "AppGW" + "LoadBalancer" ], "severity": "Medium", "text": "Use a web application firewall to scan your traffic when it's exposed to the internet. Another option is to use it with your load balancer or with resources that have built-in firewall capabilities like Application Gateway or third-party solutions.", @@ -38786,10 +39681,10 @@ "link": "https://learn.microsoft.com/azure/frontdoor/front-door-overview", "service": "SAP", "services": [ - "WAF", + "SAP", "ACR", - "VWAN", - "SAP" + "WAF", + "VWAN" ], "severity": "Medium", "text": "Use Virtual WAN for Azure deployments in new, large, or global networks where you need global transit connectivity across Azure regions and on-premises locations. With this approach, you won't need to manually set up transitive routing for Azure networking, and you can follow a standard for SAP on Azure deployments.", @@ -38802,12 +39697,12 @@ "link": "https://learn.microsoft.com/azure/virtual-network/vnet-integration-for-azure-services", "service": "SAP", "services": [ - "WAF", - "PrivateLink", "VNet", - "Storage", + "PrivateLink", "Backup", - "ACR" + "ACR", + "Storage", + "WAF" ], "severity": "Medium", "text": "To prevent data leakage, use Azure Private Link to securely access platform as a service resources like Azure Blob Storage, Azure Files, Azure Data Lake Storage Gen2, Azure Data Factory, and more. Azure Private Endpoint can also help to secure traffic between VNets and services like Azure Storage, Azure Backup, and more. Traffic between your VNet and the Private Endpoint enabled service travels across the Microsoft global network, which prevents its exposure to the public internet.", @@ -38820,9 +39715,9 @@ "link": "https://learn.microsoft.com/azure/virtual-network/accelerated-networking-overview?tabs=redhat", "service": "SAP", "services": [ - "WAF", + "SAP", "VM", - "SAP" + "WAF" ], "severity": "High", "text": "Make sure that Azure accelerated networking is enabled on the VMs used in the SAP application and DBMS layers.", @@ -38849,10 +39744,10 @@ "link": "https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works", "service": "SAP", "services": [ - "WAF", - "VNet", + "SAP", "VM", - "SAP" + "WAF", + "VNet" ], "severity": "Medium", "text": "You can use application security group (ASG) and NSG rules to define network security access-control lists between the SAP application and DBMS layers. ASGs group virtual machines to help manage their security.", @@ -38865,9 +39760,9 @@ "link": "https://me.sap.com/notes/2015553", "service": "SAP", "services": [ + "SAP", "WAF", - "VNet", - "SAP" + "VNet" ], "severity": "High", "text": "Placing of the SAP application layer and SAP DBMS in different Azure VNets that aren't peered isn't supported.", @@ -38880,8 +39775,8 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/proximity-placement-scenarios", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "For optimal network latency with SAP applications, consider using Azure proximity placement groups.", @@ -38894,8 +39789,8 @@ "link": "https://me.sap.com/notes/2015553", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "High", "text": "It is NOT supported at all to run an SAP Application Server layer and DBMS layer split between on-premise and Azure. Both layers need to completely reside either on-premise or in Azure.", @@ -38908,10 +39803,10 @@ "link": "https://me.sap.com/notes/2015553", "service": "SAP", "services": [ + "SAP", "WAF", "VNet", - "Cost", - "SAP" + "Cost" ], "severity": "High", "text": "It isn't recommended to host the database management system (DBMS) and application layers of SAP systems in different VNets and connect them with VNet peering because of the substantial costs that excessive network traffic between the layers can produce. Recommend using subnets within the Azure virtual network to separate the SAP application layer and DBMS layer.", @@ -38938,9 +39833,9 @@ "link": "https://learn.microsoft.com/azure/sap/workloads/rise-integration", "service": "SAP", "services": [ + "SAP", "WAF", - "VNet", - "SAP" + "VNet" ], "severity": "Medium", "text": "For SAP RISE/ECS deployments, virtual peering is the preferred way to establish connectivity with customer's existing Azure environment. Both the SAP vnet and customer vnet(s) are protected with network security groups (NSG), enabling communication on SAP and database ports through the vnet peering", @@ -38952,10 +39847,10 @@ "link": "https://learn.microsoft.com/azure/backup/sap-hana-database-about", "service": "SAP", "services": [ - "WAF", - "Backup", + "SAP", "VM", - "SAP" + "Backup", + "WAF" ], "severity": "High", "text": "Review SAP HANA database backups for Azure VMs.", @@ -38967,10 +39862,10 @@ "link": "https://learn.microsoft.com/azure/site-recovery/site-recovery-monitor-and-troubleshoot", "service": "SAP", "services": [ - "WAF", "ASR", + "SAP", "Monitor", - "SAP" + "WAF" ], "severity": "Medium", "text": "Review Site Recovery built-in monitoring, where used for SAP.", @@ -38982,9 +39877,9 @@ "link": "https://help.sap.com/docs/SAP_HANA_PLATFORM/c4d7c773af4a4e5dbebb6548d6e2d4f4/e3111d2ebb5710149510cc120646bf3f.html?locale=en-US", "service": "SAP", "services": [ - "WAF", + "SAP", "Monitor", - "SAP" + "WAF" ], "severity": "High", "text": "Review the Monitoring the SAP HANA System Landscape guidance.", @@ -38996,9 +39891,9 @@ "link": "https://learn.microsoft.com/azure/virtual-machines/workloads/oracle/oracle-database-backup-strategies", "service": "SAP", "services": [ - "WAF", "Backup", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Review Oracle Database in Azure Linux VM backup strategies.", @@ -39010,9 +39905,9 @@ "link": "https://learn.microsoft.com/sql/relational-databases/tutorial-use-azure-blob-storage-service-with-sql-server-2016?view=sql-server-ver16", "service": "SAP", "services": [ + "SQL", "WAF", - "Storage", - "SQL" + "Storage" ], "severity": "Medium", "text": "Review the use of Azure Blob Storage with SQL Server 2016.", @@ -39024,9 +39919,9 @@ "link": "https://learn.microsoft.com/azure/azure-sql/virtual-machines/windows/automated-backup?view=azuresql", "service": "SAP", "services": [ - "WAF", "Backup", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "Review the use of Automated Backup v2 for Azure VMs.", @@ -39061,8 +39956,8 @@ "link": "https://support.sap.com/en/offerings-programs/support-services/earlywatch-alert.html", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Activate SAP EarlyWatch Alert for all SAP components.", @@ -39075,8 +39970,8 @@ "link": "https://techcommunity.microsoft.com/t5/running-sap-applications-on-the/sap-on-azure-general-update-march-2019/ba-p/377456", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Review SAP application server to database server latency using SAP ABAPMeter report /SSA/CAT.", @@ -39088,9 +39983,9 @@ "guid": "62fbf0f8-51db-49e1-a961-bb5df7a35f80", "service": "SAP", "services": [ - "WAF", + "SQL", "Monitor", - "SQL" + "WAF" ], "severity": "Medium", "text": "Review SQL Server performance monitoring using CCMS.", @@ -39102,9 +39997,9 @@ "link": "https://me.sap.com/notes/500235", "service": "SAP", "services": [ - "WAF", + "SAP", "VM", - "SAP" + "WAF" ], "severity": "Medium", "text": "Test network latency between SAP application layer VMs and DBMS VMs (NIPING).", @@ -39117,9 +40012,9 @@ "link": "https://learn.microsoft.com/en-us/azure/sap/large-instances/hana-monitor-troubleshoot", "service": "SAP", "services": [ - "WAF", + "SAP", "Monitor", - "SAP" + "WAF" ], "severity": "Medium", "text": "Review SAP HANA studio alerts.", @@ -39131,8 +40026,8 @@ "link": "https://me.sap.com/notes/1969700", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Perform SAP HANA health checks using HANA_Configuration_Minichecks.", @@ -39144,8 +40039,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations", "service": "SAP", "services": [ - "WAF", - "VM" + "VM", + "WAF" ], "severity": "Medium", "text": "If you run Windows and Linux VMs in Azure, on-premises, or in other cloud environments, you can use the Update management center in Azure Automation to manage operating system updates, including security patches.", @@ -39158,8 +40053,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-security-operations", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Medium", "text": "Routinely review the SAP security OSS notes because SAP releases highly critical security patches, or hot fixes, that require immediate action to protect your SAP systems.", @@ -39172,9 +40067,9 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security", "service": "SAP", "services": [ - "WAF", "SQL", - "SAP" + "SAP", + "WAF" ], "severity": "Low", "text": "For SAP on SQL Server, you can disable the SQL Server system administrator account because the SAP systems on SQL Server don't use the account. Ensure that another user with system administrator rights can access the server before disabling the original system administrator account.", @@ -39186,8 +40081,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/sap-lza-database-security", "service": "SAP", "services": [ - "WAF", - "SQL" + "SQL", + "WAF" ], "severity": "High", "text": "Disable xp_cmdshell. The SQL Server feature xp_cmdshell enables a SQL Server internal operating system command shell. It's a potential risk in security audits.", @@ -39200,11 +40095,11 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance", "service": "SAP", "services": [ - "WAF", - "Storage", "SQL", + "Backup", + "Storage", "SAP", - "Backup" + "WAF" ], "severity": "High", "text": "Encrypting SAP HANA database servers on Azure uses SAP HANA native encryption technology. Additionally, if you are using SQL Server on Azure, use Transparent Data Encryption (TDE) to protect your data and log files and ensure that your backups are also encrypted.", @@ -39245,10 +40140,10 @@ "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/lock-resources?tabs=json", "service": "SAP", "services": [ - "WAF", "RBAC", + "Subscriptions", "AzurePolicy", - "Subscriptions" + "WAF" ], "severity": "Medium", "text": "It is recommended to LOCK the Azure Resources post successful deployment to safeguard against unauthorized changes. You can also enforce LOCK constraints and rules on your per-subscription basis using customized Azure policies(Custome role).", @@ -39261,9 +40156,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/general/soft-delete-overview", "service": "SAP", "services": [ + "AzurePolicy", "WAF", - "AKV", - "AzurePolicy" + "AKV" ], "severity": "Medium", "text": "Provision Azure Key Vault with the soft delete and purge policies enabled to allow retention protection for deleted objects.", @@ -39276,9 +40171,9 @@ "link": "https://learn.microsoft.com/azure/role-based-access-control/security-controls-policy", "service": "SAP", "services": [ - "WAF", "RBAC", - "AzurePolicy" + "AzurePolicy", + "WAF" ], "severity": "High", "text": "Based on existing requirements, regulatory and compliance controls (internal/external) - Determine what Azure Policies and Azure RBAC role are needed", @@ -39291,10 +40186,10 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance", "service": "SAP", "services": [ - "WAF", + "SAP", "Defender", - "Storage", - "SAP" + "WAF", + "Storage" ], "severity": "High", "text": "When enabling Microsoft Defender for Endpoint on SAP environment, recommend excluding data and log files on DBMS servers instead of targeting all servers. Follow your DBMS vendor's recommendations when excluding target files.", @@ -39307,10 +40202,10 @@ "link": "https://learn.microsoft.com/azure/defender-for-cloud/just-in-time-access-overview?tabs=defender-for-container-arch-aks", "service": "SAP", "services": [ - "WAF", "RBAC", + "SAP", "Defender", - "SAP" + "WAF" ], "severity": "High", "text": "Delegate an SAP admin custom role with just-in-time access of Microsoft Defender for Cloud.", @@ -39323,8 +40218,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Low", "text": "encrypt data in transit by integrating the third-party security product with secure network communications (SNC) for DIAG (SAP GUI), RFC, and SPNEGO for HTTPS", @@ -39365,9 +40260,9 @@ "link": "https://learn.microsoft.com/azure/key-vault/certificates/certificate-scenarios", "service": "SAP", "services": [ + "SAP", "WAF", - "AKV", - "SAP" + "AKV" ], "severity": "High", "text": "To control and manage disk encryption keys and secrets for non-HANA Windows and non-Windows operating systems, use Azure Key Vault. SAP HANA isn't supported with Azure Key Vault, so you must use alternate methods like SAP ABAP or SSH keys.", @@ -39380,10 +40275,10 @@ "link": "https://learn.microsoft.com/azure/role-based-access-control/built-in-roles", "service": "SAP", "services": [ - "WAF", "RBAC", + "SAP", "Subscriptions", - "SAP" + "WAF" ], "severity": "High", "text": "Customize role-based access control (RBAC) roles for SAP on Azure spoke subscriptions to avoid accidental network-related changes", @@ -39396,10 +40291,10 @@ "link": "https://blogs.sap.com/2019/07/21/sap-security-operations-on-azure/", "service": "SAP", "services": [ - "WAF", - "NVA", "PrivateLink", - "SAP" + "SAP", + "NVA", + "WAF" ], "severity": "High", "text": "Isolate DMZs and NVAs from the rest of the SAP estate, configure Azure Private Link, and securely manage and control the SAP on Azure resources", @@ -39412,8 +40307,8 @@ "link": "https://learn.microsoft.com/en-us/training/modules/secure-vms-with-azure-security-center/?source=recommendations", "service": "SAP", "services": [ - "WAF", "VM", + "WAF", "Storage" ], "severity": "Low", @@ -39427,8 +40322,8 @@ "link": "https://learn.microsoft.com/microsoft-365/security/defender-endpoint/microsoft-defender-endpoint?view=o365-worldwide", "service": "SAP", "services": [ - "WAF", - "Defender" + "Defender", + "WAF" ], "severity": "Low", "text": "For even more powerful protection, consider using Microsoft Defender for Endpoint.", @@ -39441,9 +40336,9 @@ "link": "https://learn.microsoft.com/azure/architecture/guide/sap/sap-whole-landscape", "service": "SAP", "services": [ + "SAP", "WAF", - "VNet", - "SAP" + "VNet" ], "severity": "High", "text": "Isolate the SAP application and database servers from the internet or from the on-premises network by passing all traffic through the hub virtual network, which is connected to the spoke network by virtual network peering. The peered virtual networks guarantee that the SAP on Azure solution is isolated from the public internet.", @@ -39456,8 +40351,8 @@ "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/scenarios/sap/eslz-security-governance-and-compliance", "service": "SAP", "services": [ - "WAF", - "SAP" + "SAP", + "WAF" ], "severity": "Low", "text": "For internet-facing applications like SAP Fiori, make sure to distribute load per application requirements while maintaining security levels. For Layer 7 security, you can use a third-party Web Application Firewall (WAF) available in the Azure Marketplace.", @@ -39470,10 +40365,10 @@ "link": "https://learn.microsoft.com/azure/sap/monitor/enable-tls-azure-monitor-sap-solutions", "service": "SAP", "services": [ - "WAF", - "AKV", + "SAP", "Monitor", - "SAP" + "WAF", + "AKV" ], "severity": "Medium", "text": "To enable secure communication in Azure Monitor for SAP solutions, you can choose to use either a root certificate or a server certificate. We highly recommend that you use root certificates.", @@ -39483,7 +40378,7 @@ ], "metadata": { "name": "Master checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/checklists/waf_checklist.en.json b/checklists/waf_checklist.en.json index 98a9ef059..710850261 100644 --- a/checklists/waf_checklist.en.json +++ b/checklists/waf_checklist.en.json @@ -4831,6 +4831,756 @@ "training": "https://learn.microsoft.com/learn/modules/create-custom-azure-roles-with-rbac/", "waf": "Reliability" }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "High", + "text": "Follow Metaprompting guardrails for resonsible AI", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "High", + "text": "Consider Gateway patterns with APIM or solutions like AI central for better rate limiting, load balancing, authentication and logging", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "High", + "text": "Enable monitoring for your AOAI instances", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "High", + "text": "Create alerts to notify teams of events such as an entry in the activity log created by an action performed on the resource, such as regenerating its subscription keys or a metric threshold such as the number of errors exceeding 10 in an hour", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "High", + "text": "Monitor token usage to prevent service disruptions due to capacity", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "observe metrics like processed inference tokens, generated completion tokens monitor for rate limit", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "Low", + "text": "If the diagnostics are not sufficient for you, consider using a gateway such as Azure API Managements in front of Azure OpenAI to log both incoming prompts and outgoing responses, where permitted", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "High", + "text": "Use Infrastructure as code to deploy the Azure OpenAI Service, model deployments, and all related resources", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "High", + "text": "Use Microsoft Entra Authentication with Managed Identity instead of API Key", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "High", + "text": "Evaluate the performance/accuracy of the system with a known golden dataset which has the inputs and the correct answers. Leverage capabilities in PromptFlow for Evaluation.", + "waf": "Operational Execellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "High", + "text": "Evaluate usage of Provisioned throughput model ", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "High", + "text": "Review and implement Azure AI content safety", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "High", + "text": "Define and evaluate the throughput of the system based on tokens & response per minute and align with requirements", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Improve latency of the system by limiting token sizes, streaming options", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Estimate elasticity demands to determine synchronous and batch request segregation based on priority. For high priority, use synchronous approach and for low priority, asynchronous batch processing with queue is preferred", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "High", + "text": "Benchmark token consumption requirements based on estimated demands from consumers. Consider using the Azure OpenAI benchmarking tool to help you validate the throughput if you are using Provisioned Throughput Unit deployments", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "If you are using Provisioned Throughput Units (PTUs), consider deploying a token-per-minute (TPM) deployment for overflow requests. Use a gateway to route requests to the TPM deployment when the PTU limits are reached.", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "High", + "text": "Choose the right model for the right task. Pick models with right tradeoff between speed, quality of response and output complexity", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Have a baseline for performance without fine-tuning for knowing whether or not fine-tuning has improved model performance", + "waf": "Performance" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Low", + "text": "Deploy multiple OAI instances across regions", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "High", + "text": "Implement retry & healthchecks with Gateway pattern like APIM", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Ensure having adequate quotas of TPM & RPM for the workload", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Review the considerations in HAI toolkit guidance and apply those interaction practices for the slution", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Deploy separate fine tuned models across regions if finetuning is employed", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Regularly backup and replicate critical data to ensure data availability and recoverability in case of data loss or system failures. Leverage Azure's backup and disaster recovery services to protect your data.", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "High", + "text": "Azure AI search service tiers should be choosen to have a SLA ", + "waf": "Reliability" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "Low", + "text": "Classify data and sensitivity, labeling with Microsoft Purview before generating the embeddings and make sure to treat the embeddings generated with same sensitivity and classification", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "High", + "text": "Encrypt data used for RAG with SSE/Disk encryption with optional BYOK", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "High", + "text": "Ensure TLS is enforced for data in transit across data sources, AI search used for Retrieval-Augmented Generation (RAG) and LLM communication", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "High", + "text": "Use RBAC to manage access to Azure OpenAI services. Assign appropriate permissions to users and restrict access based on their roles and responsibilities", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Implement data encryption, masking or redaction techniques to hide sensitive data or replace it with obfuscated values in non-production environments or when sharing data for testing or troubleshooting purposes", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "High", + "text": "Utilize Azure Defender to detect and respond to security threats and set up monitoring and alerting mechanisms to identify suspicious activities or breaches. Leverage Azure Sentinel for advanced threat detection and response", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Establish data retention and disposal policies to adhere to compliance regulations. Implement secure deletion methods for data that is no longer required and maintain an audit trail of data retention and disposal activities", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "High", + "text": "Implement Prompt shields and groundedness detection using Content Safety ", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "High", + "text": "Ensure compliance with relevant data protection regulations, such as GDPR or HIPAA, by implementing privacy controls and obtaining necessary consents or permissions for data processing activities.", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Educate your employees about data security best practices, the importance of handling data securely, and potential risks associated with data breaches. Encourage them to follow data security protocols diligently.", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "Azure OpenAI", + "severity": "High", + "text": "Keep production data separate from development and testing data. Only use real sensitive data in production and utilize anonymized or synthetic data in development and test environments.", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "If you have varying levels of data sensitivity, consider creating separate indexes for each level. For instance, you could have one index for general data and another for sensitive data, each governed by different access protocols", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Take segregation a step further by placing sensitive datasets in different instances of the service. Each instance can be controlled with its own specific set of RBAC policies", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "Azure OpenAI", + "severity": "High", + "text": "Recognize that embeddings and vectors generated from sensitive information are themselves sensitive. This data should be afforded the same protective measures as the source material", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "High", + "text": "Apply RBAC to th data stores having embeddings and vectors and scope access based on role's access requirements", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "High", + "text": "Configure private endpoint for AI services to restrict service access within your network", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "Azure OpenAI", + "severity": "High", + "text": "Enforce strict inbound and outbound traffic control with Azure Firewall and UDRs and limit the external integration points", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "Azure OpenAI", + "severity": "High", + "text": "Implement network segmentation and access controls to restrict access to the LLM application only to authorized users and systems and prevent lateral movement", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Use prompt compression tools like LLMLingua or gprtrim", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "High", + "text": "Ensure that APIs and endpoints used by the LLM application are properly secured with authentication and authorization mechanisms, such as Managed identities, API keys or OAuth, to prevent unauthorized access.", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Enforce strong end user authentication mechanisms, such as multi-factor authentication, to prevent unauthorized access to the LLM application and associated network resources", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Implement network monitoring tools to detect and analyze network traffic for any suspicious or malicious activities. Enable logging to capture network events and facilitate forensic analysis in case of security incidents", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Conduct security audits and penetration testing to identify and address any network security weaknesses or vulnerabilities in the LLM application's network infrastructure", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "Low", + "text": "Azure AI Services are properly tagged for better management", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "Low", + "text": "Azure AI Service accounts follows organizational naming conventions", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "High", + "text": "Diagnostic logs in Azure AI services resources should be enabled", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "High", + "text": "Key access (local authentication) is recommended to be disabled for security. After disabling key based access, Microsoft Entra ID becomes the only access method, which allows maintaining minimum privilege principle and granular control. ", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "High", + "text": "Store and manage keys securely using Azure Key Vault. Avoid hard-coding or embedding sensitive keys within your LLM application's code and retrieve them securely from Azure Key Vault using managed identities", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "High", + "text": "Regularly rotate and expire keys stored in Azure Key Vault to minimize the risk of unauthorized access.", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "High", + "text": "Use tiktoken to understand token sizes for token optimizations in conversational mode", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "High", + "text": "Follow secure coding practices to prevent common vulnerabilities such as injection attacks, cross-site scripting (XSS), or security misconfigurations", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "High", + "text": "Setup a process to regularly update and patch the LLM libraries and other system components", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "High", + "text": "Adhere to Azure OpenAI or other LLMs terms of use, policies and guidance and allowed use cases", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Understand difference in cost of base models and fine tuned models and token step sizes", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "High", + "text": "Batch requests, where possible, to minimize the per-call overhead which can reduce overall costs. Ensure you optimize batch size", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Set up a cost tracking system that monitors model usage and use that information to help inform model choices and prompt sizes", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Set a maximum limit on the number of tokens per model response. Optimize the size to ensure it is large enough for a valid response", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Review the guidance provided on setting up AI search for Reliability", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Plan and manage AI Search Vector storage", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Apply LLMOps practices to automate the lifecycle management of your GenAI applications", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "High", + "text": "Evaluate usage of billing models - PAYG vs PTU", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Evaluate the quality of prompts and applications when switching between model versions", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Evaluate, monitor and refine your GenAI apps for features like groundedness, relevance, accuracy, coherence, fluency, �", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Evaluate your Azure AI Search results based on different search parameters", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Look at fine tuning models as way of increasing accuracy only when you have tried other basic approaches like prompt engineering and RAG with your data", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Use prompt engineering techniques to improve the accuracy of LLM responses", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Red team your GenAI applications", + "waf": "Security" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Provide end users with scoring options for LLM responses and track these scores. ", + "waf": "Operational Excellence" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "High", + "text": "Consider Quota management practices", + "waf": "Cost Optimization" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "Medium", + "text": "Use Load balancer solutions like APIM based gateway for balancing load and capacity across services and regions", + "waf": "Operational Excellence" + }, { "arm-service": "Microsoft.CognitiveServices/accounts", "checklist": "Cognitive Services Review Checklist", @@ -9651,7 +10401,7 @@ ], "metadata": { "name": "WAF checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/checklists/waf_checklist.es.json b/checklists/waf_checklist.es.json index 484573554..73763c25f 100644 --- a/checklists/waf_checklist.es.json +++ b/checklists/waf_checklist.es.json @@ -4719,6 +4719,756 @@ "text": "Aproveche la replicación de entrada de datos para escenarios de recuperación ante desastres entre regiones", "waf": "Fiabilidad" }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Siga las barreras de seguridad de Metaprompting para una IA responsable", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Considere la posibilidad de crear patrones de puerta de enlace con APIM o soluciones como AI Central para mejorar la limitación de velocidad, el equilibrio de carga, la autenticación y el registro", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Habilitación de la supervisión para las instancias de AOAI", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Cree alertas para notificar a los equipos de eventos, como una entrada en el registro de actividad creada por una acción realizada en el recurso, como la regeneración de sus claves de suscripción, o un umbral de métrica, como el número de errores que superan los 10 en una hora", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Supervise el uso de tokens para evitar interrupciones del servicio debido a la capacidad", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Observe métricas como tokens de inferencia procesados, tokens de finalización generados, monitoree el límite de velocidad", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "Bajo", + "text": "Si los diagnósticos no son suficientes para usted, considere la posibilidad de usar una puerta de enlace como Azure API Managements frente a Azure OpenAI para registrar tanto los mensajes entrantes como las respuestas salientes, cuando esté permitido", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Use la infraestructura como código para implementar el servicio Azure OpenAI, las implementaciones de modelos y todos los recursos relacionados", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Uso de la autenticación de Microsoft Entra con identidad administrada en lugar de clave de API", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Evalúe el rendimiento/precisión del sistema con un conjunto de datos dorado conocido que tenga las entradas y las respuestas correctas. Aproveche las capacidades de PromptFlow para la evaluación.", + "waf": "Excelencia Operativa" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Evaluación del uso del modelo de rendimiento aprovisionado ", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Revisión e implementación de la seguridad del contenido de Azure AI", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Defina y evalúe el rendimiento del sistema en función de los tokens y la respuesta por minuto y alinee con los requisitos", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Mejore la latencia del sistema limitando el tamaño de los tokens, las opciones de transmisión", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Calcule las demandas de elasticidad para determinar la segregación de solicitudes sincrónicas y por lotes en función de la prioridad. Para la prioridad alta, utilice el enfoque sincrónico y para la prioridad baja, se prefiere el procesamiento por lotes asincrónico con cola", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Compare los requisitos de consumo de tokens en función de las demandas estimadas de los consumidores. Considere la posibilidad de usar la herramienta de pruebas comparativas de Azure OpenAI para ayudarle a validar el rendimiento si usa implementaciones de unidades de rendimiento aprovisionadas", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Si usa unidades de rendimiento aprovisionadas (PTU), considere la posibilidad de implementar una implementación de token por minuto (TPM) para las solicitudes de desbordamiento. Use una puerta de enlace para enrutar las solicitudes a la implementación de TPM cuando se alcancen los límites de PTU.", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Elija el modelo adecuado para la tarea correcta. Elija modelos con el equilibrio adecuado entre velocidad, calidad de respuesta y complejidad de salida", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Tener una línea de base para el rendimiento sin ajuste fino para saber si el ajuste fino ha mejorado o no el rendimiento del modelo", + "waf": "Rendimiento" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Bajo", + "text": "Implementación de varias instancias de OAI en todas las regiones", + "waf": "Fiabilidad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Implemente reintentos y comprobaciones de estado con el patrón de puerta de enlace como APIM", + "waf": "Fiabilidad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Asegúrese de tener cuotas adecuadas de TPM y RPM para la carga de trabajo", + "waf": "Fiabilidad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Revise las consideraciones de la guía del kit de herramientas de HAI y aplique esas prácticas de interacción para el slution", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Implemente modelos de ajuste de precisión independientes en todas las regiones si se emplea el ajuste de precisión", + "waf": "Fiabilidad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Realice copias de seguridad y replique regularmente los datos críticos para garantizar la disponibilidad y la capacidad de recuperación de los datos en caso de pérdida de datos o fallos del sistema. Aproveche los servicios de copia de seguridad y recuperación ante desastres de Azure para proteger sus datos.", + "waf": "Fiabilidad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Los niveles de servicio de búsqueda de Azure AI deben elegirse para tener un Acuerdo de Nivel de Servicio ", + "waf": "Fiabilidad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "Bajo", + "text": "Clasifique los datos y la confidencialidad, etiquetando con Microsoft Purview antes de generar las incrustaciones y asegúrese de tratar las incrustaciones generadas con la misma confidencialidad y clasificación", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Cifre los datos utilizados para RAG con cifrado SSE/Disk con BYOK opcional", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Asegúrese de que TLS se aplica a los datos en tránsito a través de fuentes de datos, la búsqueda de IA utilizada para la generación aumentada de recuperación (RAG) y la comunicación de LLM", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Use RBAC para administrar el acceso a los servicios de Azure OpenAI. Asigne los permisos adecuados a los usuarios y restrinja el acceso en función de sus funciones y responsabilidades", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Implemente técnicas de cifrado, enmascaramiento o redacción de datos para ocultar datos confidenciales o reemplazarlos con valores ofuscados en entornos que no sean de producción o al compartir datos con fines de prueba o solución de problemas", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Use Azure Defender para detectar y responder a las amenazas de seguridad y configurar mecanismos de supervisión y alerta para identificar actividades sospechosas o infracciones. Aproveche Azure Sentinel para la detección y respuesta a amenazas avanzadas", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Establezca políticas de retención y eliminación de datos para cumplir con las regulaciones de cumplimiento. Implemente métodos de eliminación seguros para los datos que ya no son necesarios y mantenga un registro de auditoría de las actividades de retención y eliminación de datos", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Implemente los escudos de aviso y la detección de conexión a tierra mediante Content Safety ", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Garantice el cumplimiento de las normativas de protección de datos pertinentes, como el RGPD o la HIPAA, mediante la implementación de controles de privacidad y la obtención de los consentimientos o permisos necesarios para las actividades de tratamiento de datos.", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Eduque a sus empleados sobre las mejores prácticas de seguridad de datos, la importancia de manejar los datos de forma segura y los riesgos potenciales asociados con las violaciones de datos. Anímelos a seguir diligentemente los protocolos de seguridad de datos.", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Mantenga los datos de producción separados de los datos de desarrollo y pruebas. Utilice únicamente datos confidenciales reales en producción y utilice datos anónimos o sintéticos en entornos de desarrollo y prueba.", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Si tiene distintos niveles de confidencialidad de datos, considere la posibilidad de crear índices independientes para cada nivel. Por ejemplo, podría tener un índice para los datos generales y otro para los datos confidenciales, cada uno gobernado por diferentes protocolos de acceso", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Lleve la segregación un paso más allá colocando conjuntos de datos confidenciales en diferentes instancias del servicio. Cada instancia se puede controlar con su propio conjunto específico de políticas RBAC", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Reconozca que las incrustaciones y los vectores generados a partir de información confidencial son en sí mismos confidenciales. Estos datos deben recibir las mismas medidas de protección que el material de origen", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Aplique RBAC a los almacenes de datos que tienen incrustaciones y vectores y alcance el acceso en función de los requisitos de acceso del rol", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Configure un punto de conexión privado para que los servicios de IA restrinjan el acceso al servicio dentro de su red", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Aplique un estricto control del tráfico entrante y saliente con Azure Firewall y UDR, y limite los puntos de integración externos", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Implemente la segmentación de la red y los controles de acceso para restringir el acceso a la aplicación LLM solo a los usuarios y sistemas autorizados y evitar el movimiento lateral", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Utilice herramientas de compresión rápida como LLMLingua o gprtrim", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Asegúrese de que las API y los puntos finales utilizados por la aplicación LLM estén correctamente protegidos con mecanismos de autenticación y autorización, como identidades administradas, claves de API u OAuth, para evitar el acceso no autorizado.", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Aplique mecanismos sólidos de autenticación de usuario final, como la autenticación multifactor, para evitar el acceso no autorizado a la aplicación LLM y a los recursos de red asociados", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Implemente herramientas de monitoreo de red para detectar y analizar el tráfico de red en busca de actividades sospechosas o maliciosas. Habilite el registro para capturar eventos de red y facilitar el análisis forense en caso de incidentes de seguridad", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Realizar auditorías de seguridad y pruebas de penetración para identificar y abordar cualquier debilidad o vulnerabilidad de seguridad de red en la infraestructura de red de la aplicación LLM", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "Bajo", + "text": "Los servicios de Azure AI están etiquetados correctamente para una mejor administración", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "Bajo", + "text": "Las cuentas de Azure AI Service siguen las convenciones de nomenclatura de la organización", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Los registros de diagnóstico en los recursos de servicios de Azure AI deben estar habilitados", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Se recomienda deshabilitar el acceso a claves (autenticación local) por seguridad. Después de deshabilitar el acceso basado en claves, el identificador de Microsoft Entra se convierte en el único método de acceso, lo que permite mantener el principio de privilegio mínimo y el control granular. ", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Almacene y administre claves de forma segura con Azure Key Vault. Evite codificar de forma rígida o incrustar claves confidenciales en el código de la aplicación de LLM y recupérelas de forma segura de Azure Key Vault mediante identidades administradas", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Rotar y expirar periódicamente las claves almacenadas en Azure Key Vault para minimizar el riesgo de acceso no autorizado.", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Use tiktoken para comprender los tamaños de los tokens para las optimizaciones de tokens en el modo conversacional", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Siga prácticas de codificación seguras para evitar vulnerabilidades comunes, como ataques de inyección, secuencias de comandos entre sitios (XSS) o errores de configuración de seguridad.", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Configurar un proceso para actualizar y parchear regularmente las bibliotecas de LLM y otros componentes del sistema", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Cumplir con los términos de uso, las directivas y las directrices de Azure OpenAI u otros LLM, así como con los casos de uso permitidos.", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Comprenda la diferencia en el costo de los modelos base y los modelos ajustados y los tamaños de paso de token", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Solicitudes por lotes, siempre que sea posible, para minimizar la sobrecarga por llamada, lo que puede reducir los costos generales. Asegúrese de optimizar el tamaño del lote", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Configure un sistema de seguimiento de costos que supervise el uso del modelo y use esa información para ayudar a informar las opciones de modelos y los tamaños indicados", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Establezca un límite máximo en el número de tokens por respuesta de modelo. Optimice el tamaño para asegurarse de que sea lo suficientemente grande para una respuesta válida", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Revise las instrucciones proporcionadas sobre la configuración de la búsqueda de IA para la confiabilidad", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Planifique y administre el almacenamiento de vectores de búsqueda de IA", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Aplique prácticas de LLMOps para automatizar la gestión del ciclo de vida de sus aplicaciones GenAI", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Evalúe el uso de los modelos de facturación: PAYG frente a PTU", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Evalúe la calidad de los mensajes y las aplicaciones al cambiar entre versiones de modelo", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Evalúe, supervise y perfeccione sus aplicaciones GenAI para características como la fundamentación, la relevancia, la precisión, la coherencia, la fluidez,", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Evalúe los resultados de búsqueda de Azure AI en función de diferentes parámetros de búsqueda", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Considere los modelos de ajuste fino como una forma de aumentar la precisión solo cuando haya probado otros enfoques básicos como la ingeniería de avisos y RAG con sus datos", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Utilice técnicas de ingeniería rápida para mejorar la precisión de las respuestas de LLM", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Equipo rojo con sus aplicaciones GenAI", + "waf": "Seguridad" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Proporcione a los usuarios finales opciones de puntuación para las respuestas de LLM y realice un seguimiento de estas puntuaciones. ", + "waf": "Excelencia Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Considere las prácticas de administración de cuotas", + "waf": "Optimización de costes" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "Medio", + "text": "Utilice soluciones de equilibrador de carga, como la puerta de enlace basada en APIM, para equilibrar la carga y la capacidad entre servicios y regiones", + "waf": "Excelencia Operacional" + }, { "arm-service": "Microsoft.Web/sites", "checklist": "Azure Function Review", @@ -8240,7 +8990,7 @@ ], "metadata": { "name": "WAF checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/checklists/waf_checklist.ja.json b/checklists/waf_checklist.ja.json index 732ff91b7..6d6dafda7 100644 --- a/checklists/waf_checklist.ja.json +++ b/checklists/waf_checklist.ja.json @@ -2557,6 +2557,756 @@ "text": "リージョン間の DR シナリオでのデータイン レプリケーションの活用", "waf": "確実" }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "高い", + "text": "共鳴可能なAIのためのメタプロンプトガードレールに従う", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "高い", + "text": "APIM や AI Central などのソリューションを使用したゲートウェイ パターンを検討して、レート制限、負荷分散、認証、ログ記録を改善します", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "高い", + "text": "AOAI インスタンスの監視を有効にする", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "高い", + "text": "リソースに対して実行されたアクション (サブスクリプション キーの再生成など) によって作成されたアクティビティ ログのエントリや、1 時間に 10 を超えるエラー数などのメトリックしきい値によって作成されたアクティビティ ログのエントリなど、イベントを通知するアラートを作成します", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "高い", + "text": "トークンの使用状況を監視して、容量によるサービスの中断を防ぎます", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "処理された推論トークン、生成された完了トークンなどのメトリックを観察し、レート制限を監視します", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "低い", + "text": "診断が十分でない場合は、Azure OpenAI の前で Azure API Management などのゲートウェイを使用して、受信プロンプトと送信応答の両方をログに記録することを検討してください (許可されている場合)", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "高い", + "text": "コードとしてのインフラストラクチャを使用して、Azure OpenAI Service、モデル デプロイ、およびすべての関連リソースをデプロイします", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高い", + "text": "API キーの代わりにマネージド ID で Microsoft Entra 認証を使用する", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "高い", + "text": "入力と正しい答えを持つ既知のゴールデンデータセットを使用して、システムのパフォーマンス/精度を評価します。PromptFlowの機能を評価に活用します。", + "waf": "運用上のエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "高い", + "text": "プロビジョニング済みスループットモデルの使用状況の評価", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure AI コンテンツの安全性を確認して実装する", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "高い", + "text": "トークンと1分あたりのレスポンスに基づいてシステムのスループットを定義および評価し、要件に合わせます", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "トークンサイズ、ストリーミングオプションを制限することにより、システムのレイテンシーを改善します", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "弾力性の要求を見積もり、優先順位に基づいて同期要求とバッチ要求の分離を決定します。優先度が高い場合は同期アプローチを使用し、優先度が低い場合はキューを使用した非同期バッチ処理が推奨されます", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "高い", + "text": "消費者からの推定需要に基づくトークン消費要件のベンチマーク。プロビジョニングされたスループット ユニットのデプロイを使用している場合は、Azure OpenAI ベンチマーク ツールを使用してスループットを検証することを検討してください", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "プロビジョニングされたスループットユニット (PTU) を使用している場合は、オーバーフローリクエストに対して Token-Per Minute (TPM) デプロイメントをデプロイすることを検討してください。ゲートウェイを使用して、PTU の制限に達したときに要求を TPM デプロイにルーティングします。", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "高い", + "text": "適切なタスクに適したモデルを選択してください。速度、応答の品質、出力の複雑さの間で適切なトレードオフを持つモデルを選択する", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "微調整によってモデルのパフォーマンスが向上したかどうかを知るための微調整を行わずに、パフォーマンスのベースラインを設定する", + "waf": "パフォーマンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "低い", + "text": "複数のOAIインスタンスを複数のリージョンにデプロイする", + "waf": "確実" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "高い", + "text": "APIM のようなゲートウェイ パターンを使用した再試行とヘルスチェックの実装", + "waf": "確実" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "ワークロードに対してTPMとRPMの適切なクォータがあることを確認します", + "waf": "確実" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "HAIツールキットガイダンスの考慮事項を確認し、それらの相互作用の実践をslutionに適用します", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "ファインチューニングが採用されている場合は、リージョン間で個別の微調整モデルをデプロイします", + "waf": "確実" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "重要なデータを定期的にバックアップおよびレプリケートして、データの損失やシステム障害が発生した場合のデータの可用性と回復性を確保します。Azure のバックアップおよびディザスター リカバリー サービスを活用して、データを保護します。", + "waf": "確実" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure AI Search サービス レベルは、SLA を持つために選択する必要があります", + "waf": "確実" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "低い", + "text": "データと機密性を分類し、埋め込みを生成する前に Microsoft Purview でラベル付けし、生成された埋め込みを同じ感度と分類で処理するようにしてください", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "高い", + "text": "SSE/ディスク暗号化(オプションのBYOKを使用)を使用してRAGに使用されるデータを暗号化", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "高い", + "text": "データソース間で転送されるデータ、Retrieval-Augmented Generation(RAG)およびLLM通信に使用されるAI検索にTLSが適用されていることを確認します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高い", + "text": "RBAC を使用して、Azure OpenAI サービスへのアクセスを管理します。ユーザーに適切な権限を割り当て、ユーザーの役割と責任に基づいてアクセスを制限します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "データの暗号化、マスキング、または編集技術を実装して、機密データを非表示にしたり、非本番環境で難読化された値に置き換えたり、テストやトラブルシューティングの目的でデータを共有する場合", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure Defender を利用して、セキュリティの脅威を検出して対応し、監視とアラートのメカニズムを設定して、疑わしいアクティビティや侵害を特定します。Azure Sentinel を活用して高度な脅威の検出と対応を実現", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "コンプライアンス規制を遵守するためのデータ保持および廃棄ポリシーを確立します。不要になったデータに対して安全な削除方法を実装し、データの保持と廃棄活動の監査証跡を維持します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Content Safety を使用した Prompt シールドと接地検出の実装", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "高い", + "text": "GDPRやHIPAAなどの関連するデータ保護規制への準拠を確保するには、プライバシー制御を実装し、データ処理活動に必要な同意または許可を取得します。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "データセキュリティのベストプラクティス、データの安全な取り扱いの重要性、データ侵害に関連する潜在的なリスクについて、従業員を教育します。データセキュリティプロトコルに熱心に従うように促します。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "Azure OpenAI", + "severity": "高い", + "text": "運用データを開発データやテストデータから分離します。本番環境では実際の機密データのみを使用し、開発環境やテスト環境では匿名化されたデータや合成データを利用します。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "データの機密性のレベルが異なる場合は、レベルごとに個別のインデックスを作成することを検討してください。たとえば、一般的なデータ用に 1 つのインデックスを作成し、機密データ用に別のインデックスを作成し、それぞれ異なるアクセス プロトコルで管理することができます", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "分離をさらに一歩進めて、機密性の高いデータセットをサービスの異なるインスタンスに配置します。各インスタンスは、独自のRBACポリシーのセットで制御できます", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "Azure OpenAI", + "severity": "高い", + "text": "機密情報から生成された埋め込みとベクトルは、それ自体が機密性が高いことを認識します。このデータには、ソースマテリアルと同じ保護対策を提供する必要があります", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高い", + "text": "埋め込みとベクトルを持つデータストアに RBAC を適用し、ロールのアクセス要件に基づいてアクセスのスコープを設定します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "高い", + "text": "AI サービスのプライベート エンドポイントを構成して、ネットワーク内のサービス アクセスを制限します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure Firewall と UDR を使用して受信と送信のトラフィック制御を厳密に適用し、外部統合ポイントを制限します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "Azure OpenAI", + "severity": "高い", + "text": "ネットワークのセグメンテーションとアクセス制御を実装して、LLMアプリケーションへのアクセスを許可されたユーザーとシステムのみに制限し、横方向の移動を防ぎます", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "LLMLingua や gprtrim などのプロンプト圧縮ツールを使用します", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高い", + "text": "LLM アプリケーションで使用される API とエンドポイントが、マネージド ID、API キー、OAuth などの認証および承認メカニズムで適切に保護され、不正アクセスを防止します。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "多要素認証などの強力なエンドユーザー認証メカニズムを適用して、LLMアプリケーションおよび関連するネットワークリソースへの不正アクセスを防止します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "ネットワーク監視ツールを実装して、疑わしいアクティビティや悪意のあるアクティビティのネットワークトラフィックを検出および分析します。ロギングを有効にしてネットワークイベントをキャプチャし、セキュリティインシデントが発生した場合のフォレンジック分析を容易にします", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "セキュリティ監査と侵入テストを実施して、LLMアプリケーションのネットワークインフラストラクチャのネットワークセキュリティの弱点または脆弱性を特定して対処します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "低い", + "text": "Azure AI Services は、管理を改善するために適切にタグ付けされています", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "低い", + "text": "Azure AI Service アカウントは、組織の名前付け規則に従います", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure AI サービス リソースの診断ログを有効にする必要がある", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "高い", + "text": "セキュリティのため、キーアクセス(ローカル認証)を無効にすることをお勧めします。 キーベースのアクセスを無効にすると、Microsoft Entra IDが唯一のアクセス方法になり、最小限の特権原則ときめ細かな制御を維持できます。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure Key Vault を使用して、キーを安全に保存および管理します。LLM アプリケーションのコード内で機密性の高いキーをハードコーディングしたり埋め込んだりすることを避け、マネージド ID を使用して Azure Key Vault から安全に取得します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure Key Vault に格納されているキーを定期的にローテーションして期限切れにすることで、不正アクセスのリスクを最小限に抑えます。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "高い", + "text": "tiktokenを使用して、会話モードでのトークン最適化のためのトークンサイズを理解します", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "高い", + "text": "安全なコーディング手法に従って、インジェクション攻撃、クロスサイトスクリプティング(XSS)、セキュリティ設定の誤りなどの一般的な脆弱性を防止します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "高い", + "text": "LLM ライブラリとその他のシステム コンポーネントを定期的に更新し、パッチを適用するプロセスを設定します", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "高い", + "text": "Azure OpenAI またはその他の LLM の利用規約、ポリシー、ガイダンス、および許可されたユース ケースを順守する", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "基本モデルと微調整されたモデルおよびトークンのステップサイズのコストの違いを理解する", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "高い", + "text": "可能であれば、呼び出しごとのオーバーヘッドを最小限に抑え、全体的なコストを削減できるバッチ要求。バッチサイズを確実に最適化する", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "モデルの使用状況を監視するコスト追跡システムを設定し、その情報を使用してモデルの選択とプロンプトのサイズを通知します", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "モデル応答あたりのトークン数に上限を設定します。サイズを最適化して、有効な応答に十分な大きさになるようにします", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "信頼性のための AI 検索の設定に関するガイダンスを確認します", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "AI Search Vector ストレージの計画と管理", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "LLMOpsプラクティスを適用して、GenAIアプリケーションのライフサイクル管理を自動化します", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "高い", + "text": "請求モデルの使用状況の評価 - PAYG と PTU の比較", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "モデルバージョンを切り替える際のプロンプトとアプリケーションの品質を評価する", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "GenAIアプリを評価、監視、改良して、接地性、関連性、精度、一貫性、流暢さなどの機能を確認します。", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "さまざまな検索パラメーターに基づいて Azure AI Search の結果を評価する", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "精度を向上させる方法としてモデルの微調整を検討するのは、データを使用してプロンプトエンジニアリングやRAGなどの他の基本的なアプローチを試した場合のみです", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "プロンプトエンジニアリング手法を使用して、LLM応答の精度を向上させる", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "GenAIアプリケーションをレッドチーム化", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "エンドユーザーにLLM応答のスコアリングオプションを提供し、これらのスコアを追跡します。", + "waf": "オペレーショナルエクセレンス" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "高い", + "text": "クォータ管理の実践を検討する", + "waf": "コストの最適化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "中程度", + "text": "APIM ベースのゲートウェイなどのロード バランサー ソリューションを使用して、サービスやリージョン間で負荷と容量を分散します", + "waf": "オペレーショナルエクセレンス" + }, { "checklist": "SAP Checklist", "guid": "4620dc87-e948-4ce8-8426-f3e6e5d7bd85", @@ -8240,7 +8990,7 @@ ], "metadata": { "name": "WAF checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/checklists/waf_checklist.ko.json b/checklists/waf_checklist.ko.json index 9a0b34bf6..58bb5be8f 100644 --- a/checklists/waf_checklist.ko.json +++ b/checklists/waf_checklist.ko.json @@ -3284,6 +3284,756 @@ "text": "Azure DevOps 또는 GitHub를 활용하여 CI/CD를 간소화하고 논리 앱 코드를 보호합니다.", "waf": "작업" }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "높다", + "text": "공명형 AI를 위한 Metaprompting 가드레일 따르기", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "높다", + "text": "더 나은 속도 제한, 부하 분산, 인증 및 로깅을 위해 APIM 또는 AI Central과 같은 솔루션을 사용하여 게이트웨이 패턴을 고려합니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "높다", + "text": "AOAI 인스턴스에 대한 모니터링 활성화", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "높다", + "text": "리소스에 대해 수행된 작업(예: 구독 키 다시 생성) 또는 메트릭 임계값(예: 한 시간에 10을 초과하는 오류 수)에 의해 생성된 활동 로그의 항목과 같은 이벤트를 팀에 알리는 경고를 만듭니다", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "높다", + "text": "용량으로 인한 서비스 중단을 방지하기 위해 토큰 사용량을 모니터링합니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "보통", + "text": "처리된 추론 토큰, 생성된 완료 토큰, 속도 제한 모니터링과 같은 메트릭 관찰", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "낮다", + "text": "진단이 충분하지 않은 경우 Azure OpenAI 앞에 있는 Azure API Managements와 같은 게이트웨이를 사용하여 허용되는 경우 들어오는 프롬프트와 나가는 응답을 모두 기록하는 것이 좋습니다", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Infrastructure as code를 사용하여 Azure OpenAI Service, 모델 배포 및 모든 관련 리소스를 배포합니다", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "높다", + "text": "API 키 대신 관리 ID로 Microsoft Entra 인증 사용", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "높다", + "text": "입력과 정답이 있는 알려진 골든 데이터 세트를 사용하여 시스템의 성능/정확도를 평가합니다. 평가를 위해 PromptFlow의 기능을 활용합니다.", + "waf": "운영 엑셀런스" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "높다", + "text": "프로비저닝된 처리량 모델의 사용 평가 ", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Azure AI 콘텐츠 안전성 검토 및 구현", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "높다", + "text": "분당 토큰 및 응답을 기반으로 시스템의 처리량을 정의 및 평가하고 요구 사항에 맞춥니다.", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "보통", + "text": "토큰 크기, 스트리밍 옵션을 제한하여 시스템의 대기 시간을 개선합니다.", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "보통", + "text": "탄력성 요구를 예측하여 우선 순위에 따라 동기 및 일괄 처리 요청 분리를 결정합니다. 우선 순위가 높은 경우 동기 접근 방식을 사용하고 낮은 우선 순위의 경우 큐를 사용한 비동기 일괄 처리가 선호됩니다", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "높다", + "text": "소비자의 예상 수요를 기반으로 토큰 사용 요구 사항을 벤치마킹합니다. 프로비저닝된 처리량 단위 배포를 사용하는 경우 처리량의 유효성을 검사하는 데 도움이 되도록 Azure OpenAI 벤치마킹 도구를 사용하는 것이 좋습니다", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "보통", + "text": "PTU(프로비저닝된 처리량 단위)를 사용하는 경우 오버플로 요청에 대한 TPM(분당 토큰) 배포를 배포하는 것이 좋습니다. 게이트웨이를 사용하여 PTU 제한에 도달할 때 TPM 배포로 요청을 라우팅합니다.", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "높다", + "text": "올바른 작업에 적합한 모델을 선택하십시오. 속도, 응답 품질 및 출력 복잡성 간에 적절한 절충점이 있는 모델 선택", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "보통", + "text": "미세 조정으로 모델 성능이 향상되었는지 여부를 파악하기 위해 미세 조정 없이 성능에 대한 기준이 있습니다.", + "waf": "공연" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "낮다", + "text": "여러 지역에 여러 OAI 인스턴스 배포", + "waf": "신뢰도" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "높다", + "text": "APIM과 같은 게이트웨이 패턴을 사용하여 재시도 및 상태 확인 구현Implement retry & healthchecks with gateway pattern like APIM", + "waf": "신뢰도" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "보통", + "text": "워크로드에 대한 TPM 및 RPM의 적절한 할당량이 있는지 확인합니다.", + "waf": "신뢰도" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "보통", + "text": "HAI 도구 키트 지침의 고려 사항을 검토하고 slution에 대한 이러한 상호 작용 방법을 적용합니다", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "보통", + "text": "미세 조정이 사용되는 경우 지역 간에 별도의 미세 조정된 모델을 배포합니다.", + "waf": "신뢰도" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "보통", + "text": "중요한 데이터를 정기적으로 백업 및 복제하여 데이터 손실 또는 시스템 장애 발생 시 데이터 가용성과 복구 가능성을 보장합니다. Azure의 백업 및 재해 복구 서비스를 활용하여 데이터를 보호하세요.", + "waf": "신뢰도" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "높다", + "text": "SLA를 갖도록 Azure AI 검색 서비스 계층을 선택해야 합니다. ", + "waf": "신뢰도" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "낮다", + "text": "임베딩을 생성하기 전에 데이터 및 민감도를 분류하고 Microsoft Purview를 사용하여 레이블을 지정하고 생성된 임베딩을 동일한 민감도 및 분류로 처리해야 합니다", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "높다", + "text": "BYOK(옵션)를 사용한 SSE/디스크 암호화로 RAG에 사용되는 데이터 암호화", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "높다", + "text": "데이터 소스 간 전송 중인 데이터, RAG(Retrieval-Augmented Generation) 및 LLM 통신에 사용되는 AI 검색에 TLS가 적용되는지 확인합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "높다", + "text": "RBAC를 사용하여 Azure OpenAI 서비스에 대한 액세스를 관리합니다. 사용자에게 적절한 권한을 할당하고 사용자의 역할과 책임에 따라 액세스를 제한합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "보통", + "text": "데이터 암호화, 마스킹 또는 수정 기술을 구현하여 비프로덕션 환경에서 또는 테스트 또는 문제 해결을 위해 데이터를 공유할 때 민감한 데이터를 숨기거나 난독화된 값으로 대체합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Azure Defender를 활용하여 보안 위협을 탐지 및 대응하고 의심스러운 활동 또는 위반을 식별하기 위한 모니터링 및 경고 메커니즘을 설정합니다. 고급 위협 탐지 및 대응을 위해 Azure Sentinel 활용", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "보통", + "text": "규정 준수 규정을 준수하기 위해 데이터 보존 및 폐기 정책을 수립합니다. 더 이상 필요하지 않은 데이터에 대한 안전한 삭제 방법을 구현하고 데이터 보존 및 폐기 활동에 대한 감사 추적을 유지 관리합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Content Safety를 사용하여 Prompt shields 및 groundedness detection 구현 ", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "높다", + "text": "개인 정보 보호 제어를 구현하고 데이터 처리 활동에 필요한 동의 또는 권한을 얻어 GDPR 또는 HIPAA와 같은 관련 데이터 보호 규정을 준수하도록 합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "Azure OpenAI", + "severity": "보통", + "text": "데이터 보안 모범 사례, 데이터 안전한 처리의 중요성, 데이터 침해와 관련된 잠재적 위험에 대해 직원을 교육합니다. 데이터 보안 프로토콜을 성실히 따르도록 권장합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "Azure OpenAI", + "severity": "높다", + "text": "생산 데이터를 개발 및 테스트 데이터와 분리합니다. 프로덕션에서는 실제 민감한 데이터만 사용하고 개발 및 테스트 환경에서는 익명 또는 합성 데이터를 활용합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "Azure OpenAI", + "severity": "보통", + "text": "데이터 민감도 수준이 다양하다면 각 수준에 대해 별도의 인덱스를 만드는 것이 좋습니다. 예를 들어, 일반 데이터에 대한 인덱스와 민감한 데이터에 대한 인덱스가 있을 수 있으며, 각각 다른 액세스 프로토콜에 의해 제어됩니다", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "Azure OpenAI", + "severity": "보통", + "text": "한 단계 더 나아가 중요한 데이터 세트를 서비스의 다른 인스턴스에 배치합니다. 각 인스턴스는 고유한 특정 RBAC 정책 집합으로 제어할 수 있습니다", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "Azure OpenAI", + "severity": "높다", + "text": "민감한 정보에서 생성된 임베딩과 벡터는 그 자체로 민감하다는 점을 인식해야 합니다. 이 데이터에는 원본 자료와 동일한 보호 조치가 제공되어야 합니다", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "높다", + "text": "임베딩 및 벡터가 있는 데이터 저장소에 RBAC를 적용하고 역할의 액세스 요구 사항에 따라 액세스 범위를 지정합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "높다", + "text": "AI 서비스에 대한 프라이빗 엔드포인트를 구성하여 네트워크 내 서비스 액세스를 제한합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Azure Firewall 및 UDR을 사용하여 엄격한 인바운드 및 아웃바운드 트래픽 제어를 적용하고 외부 통합 지점을 제한합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "Azure OpenAI", + "severity": "높다", + "text": "네트워크 세분화 및 액세스 제어를 구현하여 LLM 애플리케이션에 대한 액세스를 인증된 사용자 및 시스템으로만 제한하고 측면 이동을 방지합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "보통", + "text": "LLMLingua 또는 gprtrim과 같은 프롬프트 압축 도구 사용", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "높다", + "text": "LLM 애플리케이션에서 사용하는 API 및 엔드포인트가 관리 ID, API 키 또는 OAuth와 같은 인증 및 권한 부여 메커니즘으로 적절하게 보호되어 무단 액세스를 방지해야 합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "보통", + "text": "다단계 인증(multi-factor authentication)과 같은 강력한 최종 사용자 인증 메커니즘을 적용하여 LLM 애플리케이션 및 관련 네트워크 리소스에 대한 무단 액세스를 방지합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "Azure OpenAI", + "severity": "보통", + "text": "네트워크 모니터링 도구를 구현하여 의심스럽거나 악의적인 활동에 대한 네트워크 트래픽을 탐지하고 분석합니다. 로깅을 활성화하여 네트워크 이벤트를 캡처하고 보안 사고 발생 시 포렌식 분석을 용이하게 합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "Azure OpenAI", + "severity": "보통", + "text": "보안 감사 및 침투 테스트를 수행하여 LLM 애플리케이션의 네트워크 인프라에서 네트워크 보안 약점 또는 취약성을 식별하고 해결합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "낮다", + "text": "Azure AI 서비스는 더 나은 관리를 위해 적절하게 태그가 지정됩니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "낮다", + "text": "Azure AI Service 계정은 조직의 명명 규칙을 따릅니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Azure AI Services 리소스의 진단 로그를 사용하도록 설정해야 함", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "높다", + "text": "키 액세스(로컬 인증)는 보안을 위해 사용하지 않도록 설정하는 것이 좋습니다. 키 기반 액세스를 사용하지 않도록 설정하면 Microsoft Entra ID가 유일한 액세스 방법이 되어 최소 권한 원칙과 세분화된 제어를 유지할 수 있습니다. ", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Azure Key Vault를 사용하여 키를 안전하게 저장하고 관리하세요. LLM 애플리케이션의 코드 내에 중요한 키를 하드 코딩하거나 포함하지 않도록 하고 관리 ID를 사용하여 Azure Key Vault에서 안전하게 검색합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Azure Key Vault에 저장된 키를 정기적으로 회전하고 만료하여 무단 액세스의 위험을 최소화합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "높다", + "text": "tiktoken을 사용하여 대화 모드에서 토큰 최적화를 위한 토큰 크기 이해", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "높다", + "text": "보안 코딩 관행에 따라 주입 공격, XSS(교차 사이트 스크립팅) 또는 보안 구성 오류와 같은 일반적인 취약성을 방지합니다", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "높다", + "text": "LLM 라이브러리와 다른 시스템 컴포넌트를 정기적으로 업데이트하고 패치하는 프로세스를 설정합니다.", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "높다", + "text": "Azure OpenAI 또는 기타 LLM 사용 약관, 정책 및 지침, 허용되는 사용 사례 준수", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "보통", + "text": "기본 모델과 미세 조정된 모델 및 토큰 단계 크기의 비용 차이를 이해합니다.", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "높다", + "text": "가능한 경우 호출당 오버헤드를 최소화하여 전체 비용을 줄일 수 있는 일괄 처리 요청. 배치 크기를 최적화해야 합니다.", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "보통", + "text": "모델 사용을 모니터링하는 비용 추적 시스템을 설정하고 해당 정보를 사용하여 모델 선택 및 프롬프트 크기를 알립니다", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "보통", + "text": "모델 응답당 토큰 수에 대한 최대 제한을 설정합니다. 유효한 응답에 사용할 수 있을 만큼 충분히 큰지 확인하기 위해 크기를 최적화합니다", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "보통", + "text": "안정성을 위한 AI 검색 설정에 대해 제공된 지침을 검토합니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "보통", + "text": "AI Search Vector 스토리지 계획 및 관리", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "보통", + "text": "LLMOps 사례를 적용하여 GenAI 애플리케이션의 라이프사이클 관리를 자동화합니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "높다", + "text": "청구 모델 사용 평가 - PAYG 대 PTU", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "보통", + "text": "모델 버전 간에 전환할 때 프롬프트와 응용 프로그램의 품질을 평가합니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "보통", + "text": "GenAI 앱을 평가, 모니터링 및 개선하여 근거, 관련성, 정확성, 일관성, 유창성 등의 기능을 제공합니다.", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "Azure OpenAI", + "severity": "보통", + "text": "다양한 검색 매개 변수를 기반으로 Azure AI Search 결과를 평가합니다", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "보통", + "text": "데이터를 사용하여 프롬프트 엔지니어링 및 RAG와 같은 다른 기본 접근 방식을 시도한 경우에만 모델을 미세 조정하여 정확도를 높이는 방법으로 살펴보십시오", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "보통", + "text": "프롬프트 엔지니어링 기법을 사용하여 LLM 응답의 정확도 향상", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "보통", + "text": "GenAI 애플리케이션을 위한 레드 팀", + "waf": "안전" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "보통", + "text": "최종 사용자에게 LLM 응답에 대한 점수 매기기 옵션을 제공하고 이러한 점수를 추적합니다. ", + "waf": "운영 우수성" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "높다", + "text": "할당량 관리 방법 고려", + "waf": "비용 최적화" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "보통", + "text": "APIM 기반 게이트웨이와 같은 Load Balancer 솔루션을 사용하여 서비스 및 지역 간에 부하와 용량을 분산합니다", + "waf": "운영 우수성" + }, { "arm-service": "Microsoft.DBforMySQL/servers", "checklist": "MySQL Review Checklist", @@ -8240,7 +8990,7 @@ ], "metadata": { "name": "WAF checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/checklists/waf_checklist.pt.json b/checklists/waf_checklist.pt.json index 2a776b7a5..1f82a0ce7 100644 --- a/checklists/waf_checklist.pt.json +++ b/checklists/waf_checklist.pt.json @@ -1,5 +1,755 @@ { "items": [ + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Siga as proteções do Metaprompting para uma IA razoável", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Considere padrões de gateway com APIM ou soluções como AI central para melhor limitação de taxa, balanceamento de carga, autenticação e registro", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Habilitar o monitoramento para suas instâncias AOAI", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Crie alertas para notificar as equipes sobre eventos, como uma entrada no log de atividades criada por uma ação executada no recurso, como regenerar suas chaves de assinatura ou um limite de métrica, como o número de erros que excedem 10 em uma hora", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Monitore o uso do token para evitar interrupções de serviço devido à capacidade", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Observe métricas como tokens de inferência processados, monitoramento de tokens de conclusão gerados para limite de taxa", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "Baixo", + "text": "Se o diagnóstico não for suficiente para você, considere usar um gateway como o Gerenciamento de API do Azure na frente do Azure OpenAI para registrar prompts de entrada e respostas de saída, quando permitido", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Usar a infraestrutura como código para implantar o serviço OpenAI do Azure, implantações de modelo e todos os recursos relacionados", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Usar a autenticação do Microsoft Entra com identidade gerenciada em vez de chave de API", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Avalie o desempenho/precisão do sistema com um conjunto de dados dourado conhecido que tenha as entradas e as respostas corretas. Aproveite os recursos do PromptFlow para avaliação.", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Avaliar o uso do modelo de taxa de transferência provisionada ", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Examinar e implementar a segurança de conteúdo do Azure AI", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Defina e avalie a taxa de transferência do sistema com base em tokens e resposta por minuto e alinhe-se aos requisitos", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Melhore a latência do sistema limitando os tamanhos dos tokens, as opções de streaming", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Estime as demandas de elasticidade para determinar a segregação de solicitações síncronas e em lote com base na prioridade. Para alta prioridade, use a abordagem síncrona e, para baixa prioridade, o processamento em lote assíncrono com fila é preferível", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Compare os requisitos de consumo de token com base nas demandas estimadas dos consumidores. Considere usar a ferramenta de benchmarking OpenAI do Azure para ajudá-lo a validar a taxa de transferência se você estiver usando implantações de Unidade de Produtividade Provisionada", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Se você estiver usando PTUs (Unidades de Produtividade Provisionadas), considere implantar uma implantação de token por minuto (TPM) para solicitações de estouro. Use um gateway para rotear solicitações para a implantação do TPM quando os limites de PTU forem atingidos.", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Escolha o modelo certo para a tarefa certa. Escolha modelos com a compensação certa entre velocidade, qualidade de resposta e complexidade de saída", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Tenha uma linha de base para o desempenho sem ajuste fino para saber se o ajuste fino melhorou ou não o desempenho do modelo", + "waf": "Desempenho" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Baixo", + "text": "Implantar várias instâncias de OAI em regiões", + "waf": "Fiabilidade" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Implemente novas tentativas e verificações de integridade com o padrão de Gateway como APIM", + "waf": "Fiabilidade" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Garantir que tenha cotas adequadas de TPM e RPM para a carga de trabalho", + "waf": "Fiabilidade" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Revise as considerações nas diretrizes do kit de ferramentas HAI e aplique essas práticas de interação para a análise", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Implantar modelos ajustados separados entre regiões se o ajuste fino for empregado", + "waf": "Fiabilidade" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Faça backup e replique regularmente dados críticos para garantir a disponibilidade e a capacidade de recuperação dos dados em caso de perda de dados ou falhas do sistema. Aproveite os serviços de backup e recuperação de desastre do Azure para proteger seus dados.", + "waf": "Fiabilidade" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "As camadas de serviço de pesquisa de IA do Azure devem ser escolhidas para ter um SLA ", + "waf": "Fiabilidade" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "Baixo", + "text": "Classifique os dados e a confidencialidade, rotulando com o Microsoft Purview antes de gerar as inserções e certifique-se de tratar as inserções geradas com a mesma confidencialidade e classificação", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Criptografar dados usados para RAG com criptografia SSE/Disco com BYOK opcional", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Certifique-se de que o TLS seja aplicado para dados em trânsito entre fontes de dados, pesquisa de IA usada para RG (Geração Aumentada por Recuperação) e comunicação LLM", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Use o RBAC para gerenciar o acesso aos serviços do OpenAI do Azure. Atribua permissões apropriadas aos usuários e restrinja o acesso com base em suas funções e responsabilidades", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Implemente técnicas de criptografia, mascaramento ou redação de dados para ocultar dados confidenciais ou substituí-los por valores ofuscados em ambientes de não produção ou ao compartilhar dados para fins de teste ou solução de problemas", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Utilize o Azure Defender para detectar e responder a ameaças de segurança e configurar mecanismos de monitoramento e alerta para identificar atividades suspeitas ou violações. Aproveite o Azure Sentinel para detecção e resposta avançadas a ameaças", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Estabeleça políticas de retenção e descarte de dados para cumprir os regulamentos de conformidade. Implemente métodos de exclusão segura para dados que não são mais necessários e mantenha uma trilha de auditoria das atividades de retenção e descarte de dados", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Implementar proteções imediatas e detecção de aterramento usando a Segurança de conteúdo ", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Garanta a conformidade com os regulamentos de proteção de dados relevantes, como GDPR ou HIPAA, implementando controles de privacidade e obtendo os consentimentos ou permissões necessários para atividades de processamento de dados.", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Eduque seus funcionários sobre as melhores práticas de segurança de dados, a importância de lidar com dados com segurança e os possíveis riscos associados a violações de dados. Incentive-os a seguir os protocolos de segurança de dados diligentemente.", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Mantenha os dados de produção separados dos dados de desenvolvimento e teste. Use apenas dados confidenciais reais na produção e utilize dados anônimos ou sintéticos em ambientes de desenvolvimento e teste.", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Se você tiver níveis variados de confidencialidade de dados, considere criar índices separados para cada nível. Por exemplo, você pode ter um índice para dados gerais e outro para dados confidenciais, cada um regido por diferentes protocolos de acesso", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Leve a segregação um passo adiante, colocando conjuntos de dados confidenciais em diferentes instâncias do serviço. Cada instância pode ser controlada com seu próprio conjunto específico de políticas RBAC", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Reconheça que incorporações e vetores gerados a partir de informações confidenciais são eles próprios sensíveis. Esses dados devem receber as mesmas medidas de proteção que o material de origem", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Aplique o RBAC aos armazenamentos de dados com incorporações e vetores e acesso ao escopo com base nos requisitos de acesso da função", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Configurar o ponto de extremidade privado para serviços de IA para restringir o acesso ao serviço em sua rede", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Imponha um controle estrito de tráfego de entrada e saída com o Firewall do Azure e UDRs e limite os pontos de integração externos", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Implemente segmentação de rede e controles de acesso para restringir o acesso ao aplicativo LLM apenas a usuários e sistemas autorizados e evitar movimentos laterais", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Use ferramentas de compactação imediatas como LLMLingua ou gprtrim", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Certifique-se de que as APIs e os endpoints usados pelo aplicativo LLM estejam devidamente protegidos com mecanismos de autenticação e autorização, como identidades gerenciadas, chaves de API ou OAuth, para impedir o acesso não autorizado.", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Aplique mecanismos fortes de autenticação do usuário final, como autenticação multifator, para impedir o acesso não autorizado ao aplicativo LLM e aos recursos de rede associados", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Implemente ferramentas de monitoramento de rede para detectar e analisar o tráfego de rede em busca de atividades suspeitas ou maliciosas. Habilite o registro para capturar eventos de rede e facilitar a análise forense em caso de incidentes de segurança", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Realize auditorias de segurança e testes de penetração para identificar e resolver quaisquer pontos fracos ou vulnerabilidades de segurança de rede na infraestrutura de rede do aplicativo LLM", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "Baixo", + "text": "Os Serviços de IA do Azure são marcados corretamente para melhor gerenciamento", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "Baixo", + "text": "As contas do Serviço de IA do Azure seguem as convenções de nomenclatura organizacional", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Os logs de diagnóstico nos recursos de serviços de IA do Azure devem ser habilitados", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Recomenda-se que o acesso à chave (autenticação local) seja desabilitado por segurança. Depois de desabilitar o acesso baseado em chave, o Microsoft Entra ID se torna o único método de acesso, o que permite manter o princípio de privilégio mínimo e o controle granular. ", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Armazene e gerencie chaves com segurança usando o Azure Key Vault. Evite codificar ou inserir chaves confidenciais no código do aplicativo LLM e recuperá-las com segurança do Azure Key Vault usando identidades gerenciadas", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Gire e expire regularmente as chaves armazenadas no Azure Key Vault para minimizar o risco de acesso não autorizado.", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Use tiktoken para entender os tamanhos de token para otimizações de token no modo de conversação", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Siga práticas de codificação segura para evitar vulnerabilidades comuns, como ataques de injeção, cross-site scripting (XSS) ou configurações incorretas de segurança", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Configure um processo para atualizar e corrigir regularmente as bibliotecas LLM e outros componentes do sistema", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Aderir aos termos de uso, políticas e diretrizes do Azure OpenAI ou de outros LLMs e casos de uso permitidos", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Entender a diferença no custo de modelos básicos e modelos ajustados e tamanhos de etapa de token", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Solicitações em lote, sempre que possível, para minimizar a sobrecarga por chamada, o que pode reduzir os custos gerais. Certifique-se de otimizar o tamanho do lote", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Configure um sistema de rastreamento de custos que monitore o uso do modelo e use essas informações para ajudar a informar as escolhas do modelo e solicitar tamanhos", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Defina um limite máximo para o número de tokens por resposta do modelo. Otimize o tamanho para garantir que seja grande o suficiente para uma resposta válida", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Examine as diretrizes fornecidas sobre como configurar a pesquisa de IA para confiabilidade", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Planejar e gerenciar o armazenamento de vetores do AI Search", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Aplique as práticas do LLMOps para automatizar o gerenciamento do ciclo de vida de seus aplicativos GenAI", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Avalie o uso de modelos de faturamento - PAYG vs PTU", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Avaliar a qualidade de prompts e aplicativos ao alternar entre versões de modelo", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Avalie, monitore e refine seus aplicativos GenAI para recursos como fundamentação, relevância, precisão, coerência, fluência,", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Avaliar os resultados do Azure AI Search com base em diferentes parâmetros de pesquisa", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Olhe para os modelos de ajuste fino como forma de aumentar a precisão somente quando você tiver tentado outras abordagens básicas, como engenharia rápida e RAG com seus dados", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Use técnicas de engenharia rápida para melhorar a precisão das respostas do LLM", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Equipe vermelha de seus aplicativos GenAI", + "waf": "Segurança" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Forneça aos usuários finais opções de pontuação para respostas LLM e acompanhe essas pontuações. ", + "waf": "Excelência Operacional" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "Alto", + "text": "Considere as práticas de gerenciamento de cotas", + "waf": "Otimização de custos" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "Média", + "text": "Use soluções de balanceador de carga, como gateway baseado em APIM, para balancear carga e capacidade entre serviços e regiões", + "waf": "Excelência Operacional" + }, { "arm-service": "Microsoft.Storage/storageAccounts", "checklist": "Azure Blob Storage Review", @@ -8240,7 +8990,7 @@ ], "metadata": { "name": "WAF checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/checklists/waf_checklist.zh-Hant.json b/checklists/waf_checklist.zh-Hant.json index 456e97734..741355831 100644 --- a/checklists/waf_checklist.zh-Hant.json +++ b/checklists/waf_checklist.zh-Hant.json @@ -6180,6 +6180,756 @@ "text": "如果使用 Keyvault 集成,請使用 Keyvault 的 SLA 來瞭解可用性", "waf": "可靠性" }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a85b86ad-884f-48e3-9273-4b875ba18f10", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/system-message#define-additional-safety-and-behavioral-guardrails", + "service": "Azure OpenAI", + "severity": "高", + "text": "遵循 Metaprompting 護欄,實現 realible AI", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d4391898-cd28-48be-b6b1-7cb8245451e1", + "link": "https://github.com/Azure-Samples/AI-Gateway", + "service": "Azure OpenAI", + "severity": "高", + "text": "考慮使用APIM或 AI central 等解決方案的閘道模式,以實現更好的速率限制、負載均衡、身份驗證和日誌記錄", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aed3453a-ec72-4392-97a1-52d6cc5e4029", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/azure-openai-insights-monitoring-ai-with-confidence/ba-p/4026850", + "service": "Azure OpenAI", + "severity": "高", + "text": "為您的 AOAI 實例啟用監控", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "697cb391-ed16-4b2d-886f-0a0241addde6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring#set-up-alerts", + "service": "Azure OpenAI", + "severity": "高", + "text": "建立警報以通知團隊有關事件的通知,例如由對資源執行的操作(例如重新生成其訂閱金閜)創建的活動日誌中的條目或指標閾值(例如一小時內超過 10 的錯誤數)", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8a477cde-b486-41bc-9bc1-0ae66e25d4d5", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "高", + "text": "監控令牌使用方式,防止由於容量導致服務中斷", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a3aec2c4-e243-46b0-936c-b45e17960eee", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/monitoring", + "service": "Azure OpenAI", + "severity": "中等", + "text": "觀察已處理的推理令牌、生成的完成令牌等指標,監視速率限制", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "fbdf4cc2-eec4-4d76-8c31-d25ffbb46a39", + "link": "https://techcommunity.microsoft.com/t5/apps-on-azure-blog/build-an-enterprise-ready-azure-openai-solution-with-azure-api/ba-p/3907562", + "service": "Azure OpenAI", + "severity": "低", + "text": "如果診斷對你來說還不夠,請考慮在 Azure OpenAI 前面使用閘道(例如 Azure API 管理)來記錄傳入提示和傳出回應(如果允許)", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3af30ed3-2947-498b-8178-a2c5a46ceb54", + "link": "https://github.com/Azure-Samples/openai-enterprise-iac", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用基礎結構即代碼部署 Azure OpenAI 服務、模型部署和所有相關資源", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4350d092-d234-4292-a752-8537a551c5bf", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高", + "text": "將 Microsoft Entra 身份驗證與託管標識(而不是 API 金鑰)配合使用", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4e4f1854-287d-45cd-a126-cc031af5b1fc", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-bulk-test-evaluate-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用已知的黃金數據集評估系統的性能/準確性,該數據集具有輸入和正確答案。利用 PromptFlow 中的功能進行評估。", + "waf": "卓越的運營執行力" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "68889535-e327-4897-b31b-67d67be5962a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---performance-efficiency", + "service": "Azure OpenAI", + "severity": "高", + "text": "評估預配輸送量模型的使用方式", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "cd288bed-6b17-4cb8-8454-51e1aed3453a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/overview", + "service": "Azure OpenAI", + "severity": "高", + "text": "查看和實施 Azure AI 內容安全性", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1193846d-697c-4b39-8ed1-6b2d186f0a02", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#system-level-throughput", + "service": "Azure OpenAI", + "severity": "高", + "text": "根據令牌數和每分鐘的回應來定義和評估系統的輸送量,並符合要求", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "41addde6-8a47-47cd-bb48-61bc3bc10ae6", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#improve-performance", + "service": "Azure OpenAI", + "severity": "中等", + "text": "通過限制令牌大小、流式處理選項來改善系統的延遲", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6e25d4d5-a3ae-4c2c-9e24-36b0336cb45e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "中等", + "text": "估計彈性需求,以根據優先順序確定同步和批量請求分離。對於高優先順序,使用同步方法,對於低優先順序,首選使用佇列的異步批處理", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5bda4332-4f24-4811-9331-82ba51752694", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "高", + "text": "根據消費者的估計需求對代幣消費要求進行基準測試。如果使用的是預設輸送量單元部署,請考慮使用 Azure OpenAI 基準測試工具來幫助驗證輸送量", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4008ae7d-7e47-4432-96d8-bdcf55bce619", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "中等", + "text": "如果您使用的是預設輸送量單位 (PTU),請考慮為溢出請求部署每分鐘令牌 (TPM) 部署。當達到 PTU 限制時,使用閘道將請求路由到 TPM 部署。", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e8a13f98-8794-424d-9267-86d60b96c97b", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/models", + "service": "Azure OpenAI", + "severity": "高", + "text": "為正確的任務選擇正確的模型。選擇在速度、回應質量和輸出複雜性之間做出正確權衡的模型", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e9951904-8384-45c9-a6cb-2912156a1147", + "link": "https://github.com/Azure/azure-openai-benchmark/", + "service": "Azure OpenAI", + "severity": "中等", + "text": "有一個性能基線,而不進行微調,以瞭解微調是否提高了模型性能", + "waf": "性能" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5e39f541-accc-4d97-a376-bcdb3750ab2a", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "低", + "text": "跨區域部署多個 OAI 實例", + "waf": "可靠性" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b039da6d-55d7-4c89-8adb-107d5325af62", + "link": "https://learn.microsoft.com/azure/architecture/ai-ml/architecture/baseline-openai-e2e-chat#azure-openai---reliability", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用閘道模式(如 APIM)實現重試和運行狀況檢查", + "waf": "可靠性" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "5ca44e46-85e2-4223-ace8-bb12308ca5f1", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#introduction-to-quota", + "service": "Azure OpenAI", + "severity": "中等", + "text": "確保為工作負載提供足夠的 TPM 和 RPM 配額", + "waf": "可靠性" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ec723923-7a15-42d6-ac5e-402925387e5c", + "link": "https://www.microsoft.com/research/project/guidelines-for-human-ai-interaction/", + "service": "Azure OpenAI", + "severity": "中等", + "text": "查看 HAI 工具包指南中的注意事項,並將這些交互實踐應用於 slution", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f154e3a-a369-4282-ae7e-316183687a04", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/business-continuity-disaster-recovery", + "service": "Azure OpenAI", + "severity": "中等", + "text": "如果採用微調,則跨區域部署單獨的微調模型", + "waf": "可靠性" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77a1f893-5bda-4433-84f2-4811633182ba", + "link": "https://learn.microsoft.com/azure/backup/backup-overview", + "service": "Azure OpenAI", + "severity": "中等", + "text": "定期備份和複製關鍵數據,以確保數據丟失或系統故障時的數據可用性和可恢復性。利用 Azure 的備份和災難恢復服務來保護數據。", + "waf": "可靠性" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "95b96ad8-844c-4e3b-8b38-b876ba2cf204", + "link": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services?lang=1", + "service": "Azure OpenAI", + "severity": "高", + "text": "應選擇 Azure AI 搜索服務層級以具有 SLA", + "waf": "可靠性" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "99013a5d-3ce4-474d-acbd-8682a6abca2a", + "link": "https://learn.microsoft.com/purview/purview", + "service": "Azure OpenAI", + "severity": "低", + "text": "對數據和敏感度進行分類,在生成嵌入之前使用 Microsoft Purview 進行標記,並確保以相同的敏感度和分類處理生成的嵌入", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "4fda1dbf-3dd9-45d4-ac7c-891dca1f6d56", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/use-your-data-securely", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用 SSE/磁碟加密和可選的 BYOK 加密來加密用於 RAG 的數據", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "59ae558b-937d-4498-9e11-12dbd7ba012f", + "link": "https://learn.microsoft.com/azure/search/search-security-overview", + "service": "Azure OpenAI", + "severity": "高", + "text": "確保對跨數據源傳輸的數據實施 TLS,用於檢索增強生成 (RAG) 和 LLM 通信的 AI 搜索", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7b94ef6e-047d-42ea-8992-b1cd6e2054b2", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用 RBAC 管理對 Azure OpenAI 服務的訪問。為使用者分配適當的許可權,並根據其角色和職責限制訪問許可權", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9769e4a6-91e8-4838-ac93-6667e13c0056", + "link": "https://learn.microsoft.com/azure/security/fundamentals/data-encryption-best-practices", + "service": "Azure OpenAI", + "severity": "中等", + "text": "實施數據加密、遮罩或編輯技術,以在非生產環境中或出於測試或故障排除目的共用數據時隱藏敏感數據或將其替換為混淆值", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "74b1e945-b459-4837-be7a-d6c6d3b375a5", + "link": "https://learn.microsoft.com/azure/defender-for-cloud/defender-for-cloud-introduction", + "service": "Azure OpenAI", + "severity": "高", + "text": "利用 Azure Defender 來檢測和回應安全威脅,並設置監視和警報機制來識別可疑活動或違規行為。利用 Azure Sentinel 進行高級威脅檢測和回應", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c7acbe48-abe5-44cd-99f2-e87768468c55", + "link": "https://techcommunity.microsoft.com/t5/azure-storage-blog/managing-long-term-log-retention-or-any-business-data/ba-p/2494791", + "service": "Azure OpenAI", + "severity": "中等", + "text": "制定數據保留和處置策略,以遵守合規性法規。對不再需要的數據實施安全刪除方法,並維護數據保留和處置活動的審計跟蹤", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a9c27d9c-42bb-46bd-8c69-99a246f3389a", + "link": "https://learn.microsoft.com/azure/ai-services/content-safety/concepts/jailbreak-detection", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用 Content Safety 實施 Prompt shields 和接地檢測", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a775c6ee-95b9-46ad-a844-ce3b2b38b876", + "link": "https://learn.microsoft.com/azure/compliance/", + "service": "Azure OpenAI", + "severity": "高", + "text": "通過實施隱私控制並獲得數據處理活動所需的同意或許可,確保遵守相關的數據保護法規,例如GDPR或HIPAA。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ba2cf204-9901-43a5-b3ce-474dccbd8682", + "service": "Azure OpenAI", + "severity": "中等", + "text": "對員工進行有關數據安全最佳實踐、安全處理數據的重要性以及與數據洩露相關的潛在風險的教育。鼓勵他們勤奮地遵循數據安全協定。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "eae01e6e-842e-452f-9721-d928c1b1cd52", + "service": "Azure OpenAI", + "severity": "高", + "text": "將生產數據與開發和測試數據分開。僅在生產中使用真實的敏感數據,並在開發和測試環境中使用匿名或合成數據。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1e54a29a-9de3-499c-bd7b-28dc93555620", + "service": "Azure OpenAI", + "severity": "中等", + "text": "如果您具有不同級別的數據敏感度,請考慮為每個級別創建單獨的索引。例如,您可以有一個用於常規數據的索引,另一個用於敏感數據的索引,每個索引都由不同的訪問協定管理", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2bfe4564-b0d8-434a-948b-263e6dd60512", + "service": "Azure OpenAI", + "severity": "中等", + "text": "通過將敏感數據集放置在服務的不同實例中,進一步實現隔離。每個實例都可以使用其自己的特定 RBAC 策略集進行控制", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "a36498f6-dbad-438e-ad53-cc7ce1d7aaab", + "service": "Azure OpenAI", + "severity": "高", + "text": "認識到從敏感資訊生成的嵌入和向量本身就是敏感的。這些數據應得到與源材料相同的保護措施", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3571449a-b805-43d8-af89-dc7b33be2a1a", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/role-based-access-control", + "service": "Azure OpenAI", + "severity": "高", + "text": "將 RBAC 應用於具有嵌入和向量的數據存儲,並根據角色的訪問要求確定存取範圍", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "27f7b9e9-1be1-4f38-aef3-9812bd463cbb", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/azure-openai-private-endpoints-connecting-across-vnet-s/ba-p/3913325", + "service": "Azure OpenAI", + "severity": "高", + "text": "為 AI 服務配置專用終結點,以限制網路內的服務訪問", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "ac8ac199-ebb9-41a3-9d90-cae2cc881370", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用 Azure 防火牆和 UDR 強制實施嚴格的入站和出站流量控制,並限制外部集成點", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6f7c0cba-fe51-4464-add4-57e927138b82", + "service": "Azure OpenAI", + "severity": "高", + "text": "實施網路分段和訪問控制,將 LLM 應用程式的存取限製為僅授權使用者和系統,並防止橫向行動", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "7f42c78e-78cb-46a2-8ad1-90916e6a8d8f", + "link": "https://www.microsoft.com/research/blog/llmlingua-innovating-llm-efficiency-with-prompt-compression/", + "service": "Azure OpenAI", + "severity": "中等", + "text": "使用提示壓縮工具,如 LLMLingua 或 gprtrim", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1102cac6-eae0-41e6-b842-e52f4721d928", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/managed-identity", + "service": "Azure OpenAI", + "severity": "高", + "text": "確保 LLM 應用程式使用的 API 和端點使用身份驗證和授權機制(例如託管標識、API 金鑰或 OAuth)得到適當保護,以防止未經授權的訪問。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "c1b1cd52-1e54-4a29-a9de-399cfd7b28dc", + "link": "https://techcommunity.microsoft.com/t5/azure-architecture-blog/security-best-practices-for-genai-applications-openai-in-azure/ba-p/4027885", + "service": "Azure OpenAI", + "severity": "中等", + "text": "實施強大的最終使用者身份驗證機制,例如多因素身份驗證,以防止對 LLM 應用程式和相關網路資源的未經授權的訪問", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "93555620-2bfe-4456-9b0d-834a348b263e", + "service": "Azure OpenAI", + "severity": "中等", + "text": "實施網路監控工具,以檢測和分析網路流量中的任何可疑或惡意活動。啟用日誌記錄以捕獲網路事件,並在發生安全事件時促進取證分析", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6dd60512-a364-498f-9dba-d38ead53cc7c", + "service": "Azure OpenAI", + "severity": "中等", + "text": "進行安全審計和滲透測試,以識別和解決LLM應用程式的網路基礎設施中的任何網路安全弱點或漏洞", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e1d7aaab-3571-4449-ab80-53d89f89dc7b", + "link": "https://learn.microsoft.com/azure/azure-resource-manager/management/tag-resources?tabs=json", + "service": "Azure OpenAI", + "severity": "低", + "text": "Azure AI 服務已正確標記,以便更好地管理", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "77036e5e-6b4b-4ed3-b503-547c1347dc56", + "link": "https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/resource-abbreviations", + "service": "Azure OpenAI", + "severity": "低", + "text": "Azure AI 服務帳戶遵循組織命名約定", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "028a71ff-e1ce-415d-b3f0-d5e772d41e36", + "link": "https://learn.microsoft.com/azure/ai-services/diagnostic-logging", + "service": "Azure OpenAI", + "severity": "高", + "text": "應啟用 Azure AI 服務資源中的診斷日誌", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "11cc57b4-a4b1-4410-b439-58a8c2289b3d", + "link": "https://learn.microsoft.com/azure/ai-services/authentication", + "service": "Azure OpenAI", + "severity": "高", + "text": "為了安全起見,建議禁用密鑰訪問(本地身份驗證)。 禁用基於密鑰的訪問后,Microsoft Entra ID 將成為唯一的訪問方法,該方法允許保持最小許可權原則和精細控制。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "6b57cfc6-5546-41e1-a3e3-453a3c863964", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用 Azure Key Vault 安全地存儲和管理密鑰。避免在 LLM 應用程式的代碼中硬編碼或嵌入敏感密鑰,並使用託管標識從 Azure Key Vault 中安全地檢索它們", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "8b652d6c-15f5-4129-9539-8e6ded227dd1", + "link": "https://learn.microsoft.com/azure/key-vault/general/best-practices", + "service": "Azure OpenAI", + "severity": "高", + "text": "定期輪換和過期存儲在 Azure Key Vault 中的密鑰,以最大程度地降低未經授權訪問的風險。", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "adfe27be-e297-401a-a352-baaab79b088d", + "link": "https://github.com/openai/tiktoken", + "service": "Azure OpenAI", + "severity": "高", + "text": "使用 tiktoken 了解對話模式下令牌優化的令牌大小", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "42b06c21-d799-49a6-96f4-389a7f42c78e", + "link": "https://learn.microsoft.com/azure/security/develop/secure-dev-overview", + "service": "Azure OpenAI", + "severity": "高", + "text": "遵循安全編碼做法,以防止常見漏洞,例如注入攻擊、跨網站腳本 (XSS) 或安全配置錯誤", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "78c06a73-a22a-4495-9e6a-8dc4a20e27c3", + "link": "https://learn.microsoft.com/azure/devops/repos/security/github-advanced-security-dependency-scanning?view=azure-devops", + "service": "Azure OpenAI", + "severity": "高", + "text": "設置一個流程來定期更新和修補 LLM 庫和其他系統元件", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e29711b1-352b-4eee-879b-588defc4972c", + "link": "https://learn.microsoft.com/legal/cognitive-services/openai/code-of-conduct", + "service": "Azure OpenAI", + "severity": "高", + "text": "遵守 Azure OpenAI 或其他 LLM 的使用條款、策略和指南以及允許的用例", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d3cd21bf-7703-46e5-b6b4-bed3d503547c", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs#base-series-and-codex-series-fine-tuned-models", + "service": "Azure OpenAI", + "severity": "中等", + "text": "了解基礎模型和微調模型的成本差異以及令牌步長", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "1347dc56-028a-471f-be1c-e15dd3f0d5e7", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/latency#batching", + "service": "Azure OpenAI", + "severity": "高", + "text": "在可能的情況下,批量請求,以最大程度地減少每次調用的開銷,從而降低總體成本。確保優化批量大小", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "72d41e36-11cc-457b-9a4b-1410d43958a8", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/manage-costs", + "service": "Azure OpenAI", + "severity": "中等", + "text": "設置成本跟蹤系統,用於監視模型使用方式,並使用該資訊來説明通知模型選擇和提示大小", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "166cd072-af9b-4141-a898-a535e737897e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/quota?tabs=rest#understanding-rate-limits", + "service": "Azure OpenAI", + "severity": "中等", + "text": "為每個模型回應的令牌數設置最大限制。優化大小以確保其足夠大以實現有效的回應", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "71ca7da8-cfa9-462a-8594-946da97dc3a2", + "link": "https://learn.microsoft.com/azure/search/search-reliability", + "service": "Azure OpenAI", + "severity": "中等", + "text": "查看提供的有關設置 AI 搜索以實現可靠性的指南", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3266b225-86f4-4a16-92bd-ddea8a487cde", + "link": "https://learn.microsoft.com/azure/search/vector-search-index-size?tabs=portal-vector-quota", + "service": "Azure OpenAI", + "severity": "中等", + "text": "規劃和管理 AI 搜索向量存儲", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "b4861bc3-bc14-4aeb-9e66-e8d9a3aec218", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/how-to-end-to-end-llmops-with-prompt-flow?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中等", + "text": "應用 LLMOps 實踐來自動化 GenAI 應用程式的生命週期管理", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "aa80932c-8ec9-4d1b-a770-26e5e6beba9e", + "link": "https://learn.microsoft.com/azure/ai-services/openai/how-to/provisioned-throughput-onboarding#understanding-the-provisioned-throughput-purchase-model", + "service": "Azure OpenAI", + "severity": "高", + "text": "評估計費模型的使用方式 - PAYG 與 PTU", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e6436b07-36db-455f-9796-03334bdf9cc2", + "link": "https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/how-to-control-azure-openai-models/ba-p/4146793", + "service": "Azure OpenAI", + "severity": "中等", + "text": "在模型版本之間切換時評估提示和應用程式的品質", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "3418db61-2712-4650-9bb4-7a393a080327", + "link": "https://learn.microsoft.com/azure/machine-learning/prompt-flow/concept-model-monitoring-generative-ai-evaluation-metrics?view=azureml-api-2", + "service": "Azure OpenAI", + "severity": "中等", + "text": "評估、監控和優化您的 GenAI 應用程式的特性,如接地氣、相關性、準確性、連貫性、流暢性、", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "294798b1-578b-4219-a46c-eb5443513592", + "service": "Azure OpenAI", + "severity": "中等", + "text": "根據不同的搜索參數評估 Azure AI 搜尋結果", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "2744293b-b628-4537-a551-19b08e8f5854", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/fine-tuning-considerations", + "service": "Azure OpenAI", + "severity": "中等", + "text": "只有在嘗試了其他基本方法(如提示工程和RAG處理數據)時,才將微調模型視為提高準確性的方法", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "287d9cec-166c-4d07-8af9-b141a898a535", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/advanced-prompt-engineering?pivots=programming-language-chat-completions", + "service": "Azure OpenAI", + "severity": "中等", + "text": "使用提示工程技術來提高 LLM 回應的準確性", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "e737897e-71ca-47da-acfa-962a1594946d", + "link": "https://learn.microsoft.com/azure/ai-services/openai/concepts/red-teaming", + "service": "Azure OpenAI", + "severity": "中等", + "text": "紅隊您的 GenAI 應用程式", + "waf": "安全" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "edb117e6-76aa-4f66-aca4-8e5a95f2223e", + "link": "https://www.microsoft.com/haxtoolkit/guideline/encourage-granular-feedback/", + "service": "Azure OpenAI", + "severity": "中等", + "text": "為最終使用者提供 LLM 回應的評分選項並跟蹤這些分數。", + "waf": "卓越運營" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "d5f3547c-c346-4d81-9028-a71ffe1b9b5d", + "link": "https://techcommunity.microsoft.com/t5/fasttrack-for-azure/optimizing-azure-openai-a-guide-to-limits-quotas-and-best/ba-p/4076268", + "service": "Azure OpenAI", + "severity": "高", + "text": "考慮配額管理做法", + "waf": "成本優化" + }, + { + "arm-service": "Microsoft.CognitiveServices/accounts", + "checklist": "Azure OpenAI Review", + "guid": "9de0d5d7-31d4-41e3-911c-817bfafbc410", + "link": "https://github.com/Azure/aoai-apim/blob/main/README.md", + "service": "Azure OpenAI", + "severity": "中等", + "text": "使用負載均衡器解決方案(如基於APIM的閘道)在服務和區域之間平衡負載和容量", + "waf": "卓越運營" + }, { "arm-service": "microsoft.eventhub/namespaces", "checklist": "Azure Event Hub Review", @@ -8240,7 +8990,7 @@ ], "metadata": { "name": "WAF checklist", - "timestamp": "July 16, 2024" + "timestamp": "July 23, 2024" }, "severities": [ { diff --git a/spreadsheet/macrofree/aoai_checklist.en.xlsx b/spreadsheet/macrofree/aoai_checklist.en.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9eb3fe5a1b8edfba0bd6fd760efb50c1ae947bfa GIT binary patch literal 29820 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 literal 0 HcmV?d00001 diff --git a/spreadsheet/macrofree/aoai_checklist.es.xlsx b/spreadsheet/macrofree/aoai_checklist.es.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c348d7244cba34854ecaf76517c6965d4e609071 GIT binary patch literal 30792 zcmY(p2Q-`g`#;{Nd!a3=HCxmkRkc@3QPkcuMNu<$i1l=!HEY){HDkmMLef&SB2py@ zB1!F?Sg~UK_37t#&i{MPeJAHWdEY1R>-E0o>$;5e&YWdAb?Vf`Q~yZsSZVd?Kg~FK zLZ95%PVN^#XCr^0Z-AtuudhUix0gOf|4P^WtLJ|sO@d+Baoi=0PgLRxIxrGJ(JjK> zZ}+LIXVrW{L%(wrOT6b5X!)qQE-~XR{h*KG5sq(P71du9S2Pn=D@A;jP|wa(!oz*0 zyVx85Z?x1^`GF}|-QtLZmRk@eQytWxXe`h@W%W?8UXZ71g7fmVdGI~ecxF9?EYWkv z@unzN(}KBv;K7S?$P4XkM*l~Iiyn*6%m1A0{q(6**Z=<_I0OA%{>TuW0?_Ne&(ed` zT@1@nTZO!>WfD<+ckb)!Dch%%7N_C2{J&NSx!78Q(VEnJ9vvuocMFCr|)IX7CpJPd+|x|-7;yD zALrbWc545mfBX3+=5EL{={U^TDFeFN1pzl5N(8K=*KeRVyuU|_1u2Jtnud-rsJ?rw zZeywIzxe3v^pfE8U3VwKSF>Gp=p0S$bOpb}B~@4LNgHusz1xr9o#T~zH!CizAS&<3_Ko>d?bIxIQbYO*D0Z28&?30HKT4DP zzrcNEyM{$5;_dSHQ|b?NtJY{BL6!x{G2Ynw_nRdslf8eY4uZq^477ZTbVgA&EJG>s2 zihPpmktQpyD8~3aZG@_Fv`dpV^58#w1^+%4u%uYX2cmE*(9k^59ydvuQb z#rMVk6pM8+1jI#$deb*CwZ-DMe_!Lc!}DHzEI_VRv-lo(Ot1dV?_<`ZVsvm-2%zhHeA8C8J+k zKOVfRToaN@y5{}yKIUJpowfH58RFi)y}&SRpjOr#fwj48oXwY;vRqc!HevVtzC@{i z_z2*#V$!l%j^1Hu_L06_`FLfZh+c&7sXf)|rivkJ@z6oe+<(wH?8H?MxSiSB?Za7y z@L~NUmhjMMkn9?<7S`Z+{-I|(M+nRu*ld1CxeOTlV!7%{s1(^{VKKUqDEG6)RyZsk zD{)st3;1#}2)}5d7qENT#iiI&fagbt)s>;U)ApxI1~pTk#N-*QUEBM2^V+=#g9NSz zm+!0z2sxdOSxqH2qt@~d6x>B=LgQURd@39pJ-tR3Ei9OS)86P zPmWTH*qGT`hiZjHtbp=!)Z&&YUC0JktRgg z_R?Ns7CGt=k1>>46VN^s>(EvgOHkS!ZAGbDeR4fLF+ZQSaPFPZ4WUyd=SNdso$ip< zG>i3g#J=58cyXC)4IEzKt8y_!?EU!=rHib;C7hdjT7wl}X>ARt_n%WD{kh%zK-U$2 zp;v1ZTA2;+%)B=!WqTeyr+NO68F~oRfWO5vbfvO&sN1os9Vtw<0l?J_?e>o z(H|hy`r-HD^|FD5t992DvsF~h7f3NzKZEEJ`7t7?dJk}SLD!tEU*slso{DA`ce`=U zdPQF<=9*@&YMRZBXT-ZYJO}?4+kwb}Rs}#?@|&wAOdn=+27+u)O9!bLEM9ZW-w
mxhh-h*qYry%=87S$TggUuQY;-}E}& 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 literal 0 HcmV?d00001 diff --git a/spreadsheet/macrofree/aoai_checklist.ja.xlsx b/spreadsheet/macrofree/aoai_checklist.ja.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..e2b828a89dc133fe702c061a0d31624d20e8e747 GIT binary patch literal 32737 zcmY&Ae#Igb)D*X+dfr z5JGQ(gcbsXBp>Ja{P^Crva{D-YyX(Jr(AQ*%+}Moc!}lQxpP;~ofjvXsrPEXNIQEP zI=h(8E(Z^LJui=U-ePv|-iZbP+_i_b>AD_WyF3p!@PlN;@DwqqD#YZr4~zOnG(P}* zI>B#WQUV4B{^l$YjlL_;{7r3FbQvK2q?i8LB;SeRK!1Kr{&H~5WAul(dJe`SUY?8H z1pwsxh{xBY2NxlA8{?wtPQJrmmHiuJ^#!^Y&7R8E3-VUZa?vua1>IAOW!92O7p9@c z8V;};=C1a8oI23Jue7o0{T~&Q&)0d-o=TK zeO57`QbJYbvA7=R1fY%jndYw4=aq*KWQ3*r#6Al?v;H+e=!$Z@iDN)wjsdzTLOs^w z{~lZ?8&gN}<#XqHZl62He0FdF?qWX9Zvk)r{y+Zr=(f#=JZ21nwRy0j2pOo^O!GPQP2kre6D^h9c(|=kZ5)LR&

-j7gtF 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 X@5>+n$G5}4pa6e;0o9W50KNJ@>%=zd literal 0 HcmV?d00001 diff --git a/spreadsheet/macrofree/aoai_checklist.ko.xlsx b/spreadsheet/macrofree/aoai_checklist.ko.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9e89b19d929edebde32551518dad027c5c3c1ade GIT binary patch literal 32197 zcmY&Yx_rGeDQnXcjb!hF;+Pl>nrKs97M(rl48C$8*QWUjUQG3r2k`zTzTdauG zo{1T;!e2lAKKTD0+_{tMIuG9Ob6)4X&dMvT%U5obk&#i6T@ojnsC8>=BwhUKzj$t3 zJa52uuiU}!JVb5Yy%X^PzSSPorfC7VKkGpA~jNd<2>g&yo%3buYe1r-4T*F5Hotx`&M;>tE zefXp6GQa1c)oWuSYK~rm$tsXqIlYG+^Cl8Sr(af=}O2ASq$Yul~;!5-wGPsV`leot%v9=Kp^MJFvU`-#diI1GGBCZg(Oz*Zk9! zaiw9E^a4sBDcVBk%{B0iwxeM@BRF&hsuKNb`_W3~Nel0crkP002WCg1rlAns0~ohL zigy-XrJBP|6!I;6(AM_ja+i#-N&rl_Q6(r!*ji2FljN1$=Qj?io_pUd6o1`A;f%CU zzV!9y(1(b-J}4-$&bH__gF}_7Wr8w!F^|aHoV86>b|&=nEI06_s~U@H*u6#<=bk-AQIK+M zdD)TpD|QqRcK(s#p7h5hVSZUbnI6%PyiY7U`v~ok4orBu3G5M2cbZVM0sg;=Yh%8F zNVrNy)^&%BjNw9YK5s=mo$P`3|2`l6RUOW>AB>i|jijGEzq5+hY4Nuae6n-&qX%p}Nk93huj8CkE?tJ%q+DvjiCq`0CKvRc;%4~PIZnFipMZRx;gTpN zEGI-~ojA6ocy>6uun_G-n0}!VbN@Gmjb4Y4RgLy#btU#MPGe$Q1Xy^wGu5ZOOL;== zv>s96zQB{c!OA>g);~Ac?{I$-9uvFF&ugCiAb>?}o;u?XRW>aveSDY*x9R2B*r#BP ziUgo>`HlEr68CP0PQ&NE98Ru25a`E+@6v@=X+*vGQFQu4*YUUJ_sO=V)YFe8+kDco zH-M>PgYP+s+n*$8qr$={X-9RG3mXDaX4HCV_cP)*3UiugEUd*u3fu$60Mv4^8wTlG zq=K|FZHuDm5>ElGKz_0#rSkgXVN+q>0gjAI{poBNoJ)&^!8R*ti8f$V`|NgrZ#YD1 z8&e6bwYe(c3S;+y8iE@PNqB0&)DL5v1G+@u@b>Ljw_>D+8qN9rqfsJvpQ(YJ=Da4> zjI=xssqO9aTpx1xw3^Ti-(9dI`#zwW@H`?@XZyy{`@I_v0(CxfKBm62{gBU=JOY=1 zY3SR|I+b-6B=AkQ^W9fu-|g&r)!uzWiI-tY3>;!4e%beEzH@D1r6?{~IdFGzf2V4% zS$YZd&FO2BKWS9@{B*luhX__i1RYm!iPjz(BLfKQamv{5Rs!`1|AY0Tx)f|MX<|@U za{Hk=NvKs_Md-8q;bc>vipe(z@|l&D#8rxqe7E?>zF(b;4|8Gi3G>DpKH`MFWrr@gnSxIvwr5Ra7T^iX2lD?@1g`1X$`8Nv~{Y` zGDh^~thCwZ^)cv9d{h`Pq*&)cVH9gszDeGzK9+Ea=$WUFhvF4d-2so9zWiCcS@?VP zdi4#tG({!D)!B&a`H&NltO$Vwt;gecAvf$y-(i$v^l-_oSn16=X=-z zUDs{S{7YS3@C-SH3^Bzu^Gk1%*i9TW%r#|u|GcVSh4A* ztTVOOMx7lk>b3j2*DoY7@`OHF5_ntvgheNzuXMS#^hnuA(%1i}Ho3XnUc@ym&Zw`v zms#*6nHP0y8L`WHOOt-_>pW*XlM?yC**BUG&b*9f2%GdPLz%iof7Cb%fFHz!P?Y|HxKn+e3j%WU8;-cn`Z9JtF+M*M0^TQ+M(vqxvDuE*)s6?W*B?e z{+*rCmqBwF8lq?RBb0rLL|>Ua^RjdJ^M^AAx6;I}|JgR-Mpy$THvEiJ>Lp4W=;vHr z#ifTdaID?cE4?DcJHy{?=;m@BIz=!H@g}?sU*&U2MP#xcTR!d!qnT2>m)bU>UPp+0 zZVP&KOQqZq^CX`UYFpwG3|m}3C~}l_#q{{d{6zd_HT9aCdim*K%|A4eE;?lYshEt^ zvBWauCQEMx6T@Y?k6*N0>8J*;5PPFs*IW>cNqxyECRNW{-;O>dXfKQVOk0igl;5|9 zAq2D>+s}&qZx-Rv;o}Jo1D9U+_uF#gzYJCjY?wArTNqbOft4Q2oW1 z5KALO^?20KebcCyuQ>f&9C_miSZrh`(7CxZdF?B9c3#On`P#^^ zs<&*s+V2+~0ZuL2-Ga?lZI#Vgq59sND*eD@8tn;TW_i#s2&x(PgYPj_H2y7KQs@aR8H*M#3|W67`Vb#Y1tCUg{pqV}p9 z5vUimYQO;fK^3!sZ`joNC!LcOi$+Qq1ylzGWf%T|J!a?L9q2|9kz%W5409kOj4b$`fPH z8GqEeRbTZ-`9C0H`D3yV^VL)w{th{TN})Uk1wf2i-sZvS@dxuzGM2b6h5~*$qLv`V zH}~S7UfGTL{Oh!Pi(VJ06fDr!(TT)^wsL|Gmq+Ke4@pZ)dw6|cV})Siw#lsV;_=*C zrHsKjacyB~Z$aO5GeZ=Eu`-Jehxi)L%mnWZ21^9@<%oFGpSbJKBq;~%X_1)gROm$` z(HSSTp@X6jNarZGax#=2dA=QU6m#4$D9x?RnXYVcw#OaU*}a>xyPXq$v*y^9gLW6hXuxvt>{p~R{n^R<(P+ok+Gu}}r6n8&@04ba zv^~-CHOJE}A)04`l@(@4wSu5B{MG2TbIceq0DV@&Rfy~8sPalQK7pmJvuWS=GLBl$ z!S)unRw$8XEAgwy>47OMhddzI;}Bb#s4RKk9JAc$Ba$D9K3{PNJ~Xi0&xj86wQQZ? ziVdbYL6T0lPii;2`c4LbB6a>vfuJ+uJn>+`fpCQB+nbxKJPA@9k5pbiDL>o5FC$3M z!xXmtHi+07~SB)R^? z9LGb}EIs8{d;84CvKL=o?=3PH+HeqP#F0O0jliaZbkqJ#Z?kk3e$CInI^E;erAGo3 zB(Wt~iA#Zy)`D3(LxhKM@M<8TWX0Q{Oc^^fA^H(Or^|>aVN*QaBLyQBl9-2!+=&~w z{=GTwl*sicN!W~+@TrW;90Fd%_MCIO=nnpg7{#@a9IEf+P33qb_mvi;Udz#UuaOMy zYtN+!IX`qQ^`jF(-q`Kp3>{a&QSQmoKtV}lXvxlc*UZ@f2PcCAif5jL>Kt4GqoQ>m z+o7X89#d}oI6F*Z)5hdCYs(^Xm0K)pZi z=T`8!rDUML7)?a|Ha#XG&rkrX#{K?P0{8&2H^2O9_8K-0a2{l#w3Q9w%6NeXaHj`H zqmkEeJmQd7XGTgGjaq*q^NS^HS!6%FV%md}o#9pYrEGbM6nw z)Fa#dJBS!*kBKtFq;2?HyuUOgZk~BBO;iLMhm`Oe|A22;2_*Jjf8Zo)-A*w}>TD<< zI`bz~HE+Y$0o|rDZCKHCWHG59%rZLy)N^cE2WNFW1r{=T| z(OQ`<9Ys1TB%r!H+$_1y#G+2%HNwh_NQ{DlVKC|NwE|8M>?PC?M$Z6We1-}j}I_ughxbyKGU$^gng62PgzI=^0(s^Il?smpc#y-Yx~jfrAUf_^F( zP0Nf++%Sv&Mw){JQ(?NaWvoa%60rldv4}ZzAvb6xvvr!#5bWf~HjPq8!ex}4P+0Aj zjh4}~NSI*J!+zeft}dlwcQ59xy)yb3#~r4&p?<69C|Bfh4D{J%y&e1=sYkJ?Uorp< zI#~*v-8S=5&%g_Z9%S@qNi1)0q}v_$b_n~OqdiB=_JgbZEiGG)3Nco@KG(X}kFCA4 zF?F~Dwbp$06P?}oyGI(dbpuDgwlkFy%pa@ROIJpzfoYNUAR;H-Hj#1pJ` z=l&NO>&3zK>Y3JOWy%DU;&ebhisL)M8uRRxvLw#4+Y30H*xzuZRA$lsN1gquk(dw1 z$vI$dJQDWwWDzQ!)hr^Z>+=Vq^L>wz@Izw|*HqO(X>9k#A;-eQZ9tv*1hM&Rv%{Yc zl2gh{#4jOkg(iL)XoI(kWYZ^MXGty=$_lKQ-$lN^(6VuE9_JS4nmI8ok)`30MK0^k z2Ek|W-D_%++%Uvc3hMi+yE#i-%0T-rxpBIjMNEtQ{?&CRT};TmqNg;f??UzQIF~3Z zmZbsc=U#aewN>WAIWvDS)T6I7KX>s)7miMmJmLBak@y;Yv4+f0U%DbOv=b`A{>&2o zNR?L%8-ZObbUC>7TY;z}?@R^%mI3ks5r6Nui@Zg;ga@Cy?s22;9|d|qy`}G)8z>^2 z-k1{`!CdHN7$%daKCp$z7A&9DbG-o|4=vtm!}|@D6nifl4uY8$vNzTNCn z%pGY-OZ93l4_|gq>0lWkbLLqA9-#|=PJv=UhIWmTT*x_Ex^CSgE%03G0&9*dMCTXi z#8CT_oIP7p;Q9A!S?Lk7A&h4EclF7~O;cxwW*fTY&%`40m5v)|(~Fg+WOdQ|x({9Q zkkZ50!E@^s5=k&_&Ul+RMzmK)RDL7vZ@0MlG%3IikP0c33roX%puVCH#jm?bEVAwl zoU-u^_dJcQO#0_ad$RQK+EpV(Mir)TS35l+q3-f4M8y7cbx_`Y-h{h74<36jCMVyA z4$S>>WG97AW$CD!6X!)U@w`Zq*PQ_vI>9X-+$L42J?noE4MVg_!P_Fr{J^ z7WpY$xbjVkM(PpbRdA;QQRaki9G=jYt}?ql)7^IpPWPeW;5=WbT^0)W3Y)?yTZg{M z8517crK0}qO$8N3{gr`oI0kVm7Ujei+l*nI^L8|fE!=M%aVHMUGX9l}(1_qk`87E_ zX%^e16q%m}G-#MJOU6=|Gp!4Qxp^Ptb*F9B*hBZ2B|TPorIIIfx&z8$x?|u!pjA3i zOo%8AuizVq6PG{Q9g(fKZseCN`|zlO?ed{%P}k%n zl$0MkJDm1Hf5p1EyctvZZa(2|DGqRpmZFUq2cP(*b56*Ka$1s#`H-ElwB@am%+wg&imCp4k1(_!w<8 z9h$#%Vf}>;C4A>}tI4lU*ed5_Smk75r|U14X4!0oxVUp-B2T26oZf=Dm8?Jj5QwPe z1~x!0@2>5vEjLT7ZyqRr*4x}UnmZ`4dIijn5f-|N1?0mm z4C-2jpngd*nRkWLQw`+VIewn4n_Bb9pQJ?tFaTx7!N{T%Os;oBr-#0J?$#Z3I#P-^ zeh24d#^RmZ{9_+&9I+%2QpN;G8mwg=@X^p#S8et_Gc%08W)4`kh%j_nMz1y4l#HH4%pL^3q&c^WE z(4fxd{yQM@ou$VLsH*cnx&J)o@EWlp`(3b7lypBLMdx+VJa8ayecn2c(46WJfCmJ>$)$=#7`M&I+ zQr8L!v@VYyNa<$RAM|1;u~~R1l(XKC7hXN@el&1;-zJJT5O3WI(9&%3#!7=2{ZZ#_g5lUUPHuUtn!jLu+OFx$- zaEY}A(=HY53URg4Vt~;vc&o>L{TDsrUF?5m?D6jazV$7$S7f6)hdg8~qdHA6A3+2{ z*G4;WD~CJU@~A^PPS>8~CxSd$5tA4z;Pu=HPf|DYZ8xyyCqYbe}atJmI#D?d|@lLr|!}3MCnI*Ts_m7FOrC*pZrbWqA??l0&vDK zL`_3~#oUqqAT}B0KbAoKQzcw{YPO((EhGvG!*SndK2i8Eri_& z?$jZsLiHK1&kkCAk4}ZkZPrzecZQ`%}*L^98fn)i-uFo{J zuN0yy;$!NP9l{d=qMunlhN1MTbQtwh1`He(q;#E!95f`e9b|OZZat1OtwXR&Xd8^| zc!p@+R%CkE=6an}?om6CekCptV3z)38*qyiR`F9?lHy3qcmra7W;DwdsjEvb%B`%3 z&b4(=0921`sLtsAwx4fNfo(_DwvG2#EY=dLV&vRL-koA*CqY?1wtwRW zX7Rt}z^^?oAQ1Bp0Ri>5>MA^V99$(_H?RS~9-mds%apv+@bw^+B;4 z_~KG$MtIk^{h12S+;0nuk-N=d{$(QA{(TGe{+Do(+~R(#R6!s7N|=D`s)@U}>j%5l zfRVxV0`VSJ8Mt4{aH;#g?$)NE9c^Sq@H5X#&j&Y+G?#a8b}8eAqivPqg3eUk#ufZF zPe$bIxZr+zZ=;`awlVLScTaG`ImI%#ddzNqPWNKnQ_EU4D{*#p3@cb-X@puDczmdxbr37c|d+goHy+V+E2QKjKa`S$jJ<6_2ZHAz3>H zAH7brWgYM$m=$O9j8Xy766CJtO@&)#R(ypurY2+||C#(WbV%TR^?)APqftJQoY+Fr z$ZH3Q3CyYT*m&+^-oRcr(YCRXq)2Fx)YqOfP=WH1;BzTn);%S&H*=x%pK(DD91LxF zVHe5paMW#${}Ki8)e0Bt4Gz@py_oD|E_Jr-a`+@uoAQ+NuXCWL_YY7w|q&2LC@$dbFDeA%N2TfcSvf|k^)>i?ObD87mSOi zemL%J_^6jpRZF-^A>IxSv_uB-gIi@0_+M={6qE@Uc{j8DtJDK87M2k1@gvN@ES2z} zG&y)nxG@(>L#kN)QyqHwU!-YsHhgEYC&>u-^Jm$Wk$iN0JQwDh>kKi+jx(qYx4|3q z?*6>1*!)3ZeeM}Ru?MJKi)-pwahRiBH&Y*spU{biX)8vW3wWWLD%~r^Tk?L-82dl+ z=b%oVrQ8~w2oJFsb+eb|)%8}bia-ga~|#vk_0hKKu8>iDp) z`TbVv2zwnMY2Fpg{`W!FJTe=YsiP5_DZvKb$W%L%lh+^ocro&0RM&OPK2i?*rsT0><)qhoh z`?-3UJty1MOy<{)!W%yjq7~=ZuU@}p@0CwJscm!+kZPonpJASzeTNCm>fsDid$kFT zXx=6!&A*FwbsPOc&t&xW&VSW}{Jn}OTGvANCmlEYC*DZt0T{0shxiX~t#ULC;jXxr z0S_p3V#A+vJ6D1iS57-x+D3TQ%zg&heYZb+tIdTN{G??U-+lVW$?0nyldm;4W!zYJ zm&LJ2Vs1HD{x*7rJG*zK0|3I)>(Za3EK^O$31Hq0%UY*hKvzzV#ANwjAPNY}HA;)D(2L(mcCTzcINuAVwYw9t6qg`V zst%a_qMYsunR>|fd6!BgV!AlGalf{c8kT-+w~qevCC->ZOO0UF;iQ@Po;ZV7CYX^e zHt|5Iy5et2BAp-qQFGgUQsC?D9P-rv_Lx|KzfG*8aeBtlq{;H5bGtN%?ty8aLiLuG zdEM^?A~rZjrpV8}HM?o7Ve`Bty~RQ*+J->P$!Mt46@_%dhdDf6X){H4@xQp4oD@UB zp)r2&@{)R>ObDlu$S={CPpsNhRlDfgn>c+T_Q-D{g+Sr$RW(C%j~faSaQ$Ft_JBVk}Y`tx+mAta#z6RF3Pg4!#XMA zp6C6uhBdhYOO|k4cv9pwp?p5lNVWFhb%DCWPL-E+Y*6`KF_VIjza?>plcDpZ_!^dt zOU>@S_jEv!Uj!`Ro*;+lJxF|Po1YdG?J4edGix}2pa$g+%CQ|C6!=L;Hxc>Oe3jYZ zYe2e))f^|Maob62?h92`u-+Kq;dR*KxWrMzpSJbhEX=sgU%32VmL^jNxCLVXyj7sW zFxFJqju2lR?|c=@vc;;fo0Y|&kNNO&!J)@tvk|#T9H~THQ-5$B7yvtpj}4inO`L$C z*L%fdKQUpr^!vATf*x20MszJmo@>gu23|b~bVfES*_m$!1^RBDJ+eYiSqD_ixn!;9 zY}5TPyRN#;`Kn)}>cf!KdL~*fw^!<-f9R3`D#O;A7R^L$k(GBo`LB5qMCpXGofJ2n zVcUA2#uQ|V%rX9wrymTrk+p%srngHxnM54^K=Te$m$#-j1!1yIg0W}?%!GS6><H?%ZbAAEdq{4cO(KNEa`9hZ6aX9Fi$=GI{BkZvh?)_%>; z@s1xyjNNru6JTh`!f?P<0iKrm**#r*4EIHX>b)BhwW=X4mL5=iZ0YD;tO-ka%{YRu}}fB+m%mfP)t0vDw0Kq zw@7bVuCbuvY{0i$aI;jcKLlEBTLc$*sM!;-@ozNTKYdoLG}>)Z%!xXcRKy36`x`fp zX*N$-n0h7Ya)d-!lL`8f}sTIiIesja22gTlAg93BcDXG3sJj~eqvd`1BVNOHXnl^i=kqQ zoPRrtG$We2(DSj&SC^}#WV)V{G!@Uq6=S>9&N#9>90hOnAgw%@p6EU3itC z#Ua7~EA=*a7CEcb>fk&sbB@Z;2b7<8yz10($MP@=0{p8-qp8omrVX;3AN8=#Yr`EP zH7CGi5@B5b9e1;(ia>;0aR0>c^^%hu)lu; z92~oPh#umvf{&QUH1sv}=B4XIB-cnn{HyAjD(e{a-GSw_{~X=B*{tExL4fVygl99G z^Qr`9!+Tk_RK4NZ;3EnodgfZ$L+m?WU(FL-8K=CZFqe0=+eb{Ley;Q^g_nik9g3@{ zvj?Mr+A|kiS0gfS6j+Pt)p@YvIScbm(twvoH*^v6d!Op!yXl3!lrdN8X;(NQA_jD4 z-=jRdUremkQk_)fb!GUr%3pi7&dVs1i`Dst+Aah5cqq7zs`!6#<(x8Dxk`~mG7kSp4Xg!=9fG)K{dpu0>C&>8kJjnIBr*2`D zLOj`B!>laUdg?eI{UUN1(gwkhKY#ab zCVo9N?ErdMKaqT1j!-o*9>uAfEx^J+&d!f6a)Fck?t&b3F@m zJR(mkS&_`UToqBJ#%oU77hi67r;_tZ^YO>;W7hh+RboT=kTqAx7_YX(&5DOlmiTW< zrd{S+8byZgt6U6mJKIzQVgRJ_#&-i|8sUKex%6-Y@e}$+)!C#Ke*vZBu7iU)JO5aB z_|YHSGlFvD?poz>Ra}?8DL2uuFUBvw{Y3dQLLo2tK5qPjktFTTvqxCq40ewFSDT*@ zkE>%Lm+K013vkTqevv%)M4#64odK4fQ=xb4!L^geP=Jxs}_P*si7k@5tlM zs&Gdg@&n8oxuG${5l{VwwDQG5L8~wBxkr{faB}bVVaeN13vYW z7>ctWGOLUY0Uq3`IYMPz^siS#S3jhB7-yhyx0lkh`VIU(Z5`(A;Q=qJQs$!uIQqsU zf+F@@&dTjwF39K^%Gy}Nh;ICotO@V(@3BuMW@7mw05Oi1cQF-k!HnZ@45+25jQP3f zXD{1-%wuIzrt|wqf8*x`h3cp~v1Q3~yk1~BX5&SV2(cLRBBczE@`tz_l&!a4%OZPZ zV{_c1CitA6$+khdJ&|qRmtB~{W~Fj6F3yPnCi{S`A9F&ZuL`)If(pkm7-! zk$kq+vtJjps(U)dfCdtOa)R^e!7^{Rqws?cgeYez0j5&xUQKNJ~+zI`roO~49ci4PF?n6xoZ5}y|lZ78(=?P$KLW5??XivKfl6pWtuq`>{(*Yp`WrJlmOO;(~ z!L2U)ERWU(+;?J+ZUY+cT!l*b&;%~C&+S!7^1U>@lAo%Hq?5a28I%e3>Mf|*8X6#p zKH>avf7xc^Wp7;3l+aaF=j(0Flf&7aXOI0Pe=95P>Er5*$ZfGHbmMnA zKwUzXMb+)?RKxVuZ*V@4QiOFQ6_H7(bF+(nL=hjD;{1Vt~_SuAE|017E_o%(KkW#>UkV>Oce+~Vm-Xj?d1 zoEdFtJ)OOu2FptHYSDdSVz>NIB=&6C1T`tz`V^(j?WyEu1GB?!**g&s%=+VU!Lkzv z@6cWNPT$|(K>o&wM6ME?P(JOSvo(UTYgwpQYxHZ=&=ReIUH*Pd= zh06x}kIOy3=rQFc{1D_3q>QGBFV9M|ed_9OX;jDGJt=Y!GB>HSl$iBx_h+`H-w7OA z{8GTrR*32Oe?jfwr&(v{K#rM^Ot7Tyv!orva_>C>Uy7HW3478nX8l?Vr41K=RDbpw zBUs-m$h5}C54ss%^EUoAfqHtK=$z>d5xNrlDD>?6Q;%a6nwcPPA}FY+D*n1J@RmZW zAG3WWCD`*B%G~}@_PaePSzfJTj1hFbeCKHh)XZl)l42HaM>@s0aR|wb9jf+6N(`92 z`*;!I4OSrGZt8aNv?2($9(*P>P8tVE@Wt3}O?QD-wlqDqm{sp``K|ty z`)|C>jVdMcJR76_aa0!gbhtq+KW8nIBB`vV?YEOwHiSgSi17r!J{Eo(tz5F0IwnCM zmG$ConPlt2Y*}I=xl-M6GiQoOCEEezQY_?BFnmU3U&myS#k&>a1J z!`@tDy79WZrt;#1w~gjiYex5i*o9_#mkjs1=jEtkNCVjEgT{Jl{Q-^+KPjI7CSWN= zhJ(weC4{$Z#vZ_xri76JrPvj^H4C2fmR~7&?p#|?OpeTPt6xD8dc8>S$WZ-WiRBTB zOM=%0*2kQIAC{TK`GUkso%aOgwerQ;Pi93iy=`sxggNC0k1Ok#oG$`xtV4XVkpOA? zZG%)!kZ0`l!e~FZGgqSbgtXA14flGx)Q8`=J#`Y71SvBMkP2!MrSI~{&;v&n0?l7n z9{0BO3jgIo_rBdK63`?fqFGqGqq$NL(&vh%5?rdq7%P9p7-i4cEHVA3>i8m$1_9`d za)Z0pf(w}F>A~zwBN`0z6$lmuf#amNb9M$VOUec>F0||Cz07*4Xv$QQ4$LZ==J@0D zSqu8AGPbSadp>DeI)c5V0so6u#cgh0{9)YF4TcN`Xk^`L7b<22te;Ej92oADyPuWQ zmFeL*XyzCe2!I(tJuaYOt4g2HAg@2HzZq)l7?G<7+BkhxSDZPbWWmysSMS|&M+^wC z&~U5Cqx{!86n8eZWNqyjXy~H>wjoIax(?%j?1mqINxr0Tjk-s( z;o+fHx%ca^(*g)?i>bwh&esx#dRcjlV(kptVyOf~B!kDV5$4^yFDM=P(}njhrJubn zo9;o$#1^6%G_!uKnpG;xNqlOwA-N%T>}ta?_CHspxcVinj?%m&3Bmm7O=EmFw-**h z=hl|-7{QATwmOw^5M%A0ZlKY8J5ZXjer!s0G+(A0uNt6J6QI^Dl4rM_&SzvI`53F(%Mi!3}+kK4hD9|==K6-R?gnX>0R zd&}IAYF6ZBpfBZ?8(yMw0QvC&dd&`cZ!hgPHYnb=8EQ>b+Ex2e*4!WEi(}E8zSqiO zPybHm9@LkDF7UMOfOomrE84lP%4_tUm)x=PG`TsNS_qzZ%TV|zWd_@_Fw*X$9vNMB zh_388c=ty?I29f&8{kLORGjyrmaJVazOk#q-w`s8nsi#@x%37$>?$4kxIkb8k{I5< zoRB+x=#|?Hz^%Q}a%D8xUpGbyw74Q?QG6 z>;Q_Xe|gUfmCdpyCzlv+eVbIP))uC@pSrjoQ*|)Wl7jAtakJc{qt|6tT{>6?%v54N zoHrcZ!D=hpG#Ez67Wa;xjAKG$+ugyh#_YI*UIUewrBX2knoNha+`I)4Q0fC zY!2^N``T%rGq>@ko@T9O^o~7X$?#fo+BAfb%xijbeTQv5=$LT$gCWxW%=>tTOtAh; zsa25?+YnkE^K(+*exRTHXvK}O0m=^-e|up8K4@IO&(IQZ=xrXE_(%>iYGt3mEEXEV%H-jeFkjwPSe(+_Is>fLLtXpofnSm51Wy zHvTl(B}mV3oB(Oex*v1XQcfZ+J$#|hYf~`T7wROBITGj#vtt)R>M{`{&jNx*L1l57 zpLM~9*NKt#@;N)v){BI1cFO)sx$wGWGTkKoXpiM8wYcRHLDPEE$417);X$zs)cxU=ev1H~S;a*Foqiv$ zS4rhS_q!-m~8F5-D(zWDhQ0iOUeHE~Iw1?!3!tK$YpP0@FdM?@W)BFv;y?MQc zpXJ(G(miF9&StODbTkm3`f!GM1wmK6s=reF3%wgoNwpXLz~6U@8d&pk5SjJQ0!(WJ zZK#ybEhw5utW%GUF}adH7ft1;lh6{wI8$eeg$~iH=&W#<$5kQnVX=kQJ{i}WRDVy{ zO!Zx{KW|dGo|4^CnGv$|cLCi>$#C?&vRvF_I+Eo9UE$rtCqUbGo4jJ zyF&`cC4roM%pF~2mS&|I@$FI;-Pp9og)PXgsk+E`#J^(rg^vPf zJTv>myjCzPTRUElSSYkFJNa}<&%DS;JAK+5LPNOBstG&0k=BF1QZ;sx&GCH{mnEh> zt4Fhr6U=A*`XWjXX$+RORH&Sep4!}sFn{%Gu5Z;K6Osd8`wf|Y%FH!h@muk$TouDs zxtHKYB~;|A6g#`|CiBBxxTZq6@6*}?2N$cC9#9Wbh28Ce#_^)%_DQ4pU++HLn>0km zzjNIxF#Z%NDf$oVRkteAnYVN+e21H+U!)$bVjX6UhAlR5JbTzaWsx(-9e4ksoiI`! za5Q@OS@6Z+h3C8El<(8Y{)5F$p$5KHufQ7DmF=zvk6ZbRFdl+FFZ z6K4;=gGp(n*=KuiXw8?hq()Z;eNn$Zo1cJ&>lb?H|GZ&+GhR**gvonU_N*O$X8g1> z=&?AARI!hNjQ6r#_^mj0eK=V7Tr8*z=XO-nDw-38?wd+XG%i&R1$0kysJ?5k+c<97 z$Z~8-(%bl~Gs?H==dUp#vT6BeDtF~$5T~ohKMRv!M!;BNQTB6*;D&s5dU&~4oIIxl(si_(Muz_xPpYYDCt)=f9|EWGw(lm)K;9g@`gGea@p>Z z{8Z7-_fHRLp8F!A7d-1?qCP5J7BrQ(uCOIOVAc~F2=Gf!65lTC? zEkzNFj4FQvVsu;BUKA`lu9hSjtG|34C4t8o2jI|F+Zi4j^13&R1`C3@xzNgA z)d;~ck=XTWtD~0HJ2hlKJIHVFxPlAGe%3V7fQ@q~7b0`#!onTHW*h9r)Q3w)-VQ&t zy+rkofj^81knNm}k$*WVGt@=;&j5m2b(R`#t-KM}@5N=cn6b;rWB97gr4E=aLp7K+ zH!OQR_X2zcQ@X;#+N#UVXfe)NA&s5^UN^4r%W@62QO2$qX~!PSFMUf?~ zH`l5DmHA&gL9a}pJwtgfUp6Q&i^Z#_WWdL?3hg(ix&Ltw2N|XD+EvSOo>=_xDF|HH zFEyEDs9Y%3P29h-K0q_2qsY2Bv#1eeb$wa2|Mo6Agn5I0QRWyVsp>+_lRhYi@VdR$ z&Fk^b{m-J`g1CJPtMf+9AB&yI4xaNPn~80CNA2Bigs9?HA87!1RMP~XQ4DAW)BTX0 zlC&XKi^fE5_yv!W`tWzuimMaIdZsfo7--F(i&t+oMwIO>x09yf%)RO%63X08ZOH%rwMZH z4w%WmzwjJz6=&*HM1i~DVB`vNtfhT|yOlpDW#&q-rO71k5odpT% zI&E)Xrx&FA>r+u5;Bd70^1*cRXasGyprzdgkkif_kAt^VZ)SbXc)8@fKrSWjFzz8WYTV4ge0Ii)AdYd`?m0ZjvlYR->|NF zdh~fml=yKkCa3UXQke|yYgJo}KxaiW&GF$auvXsnE$M>H_ zmE|*VpF9IUOQJ?^Im@gc)|eL|=&5P0&dwSVrz_UYfR})P@jvO9wfKIg>!kLdZX8*S zy+<xNo?+MRE`{Ga_yi`bQ1dB(p;e2idKQu99VHf}dRJ_$Z=;^) z?E{sm0^I^p-Q?8&IwROp!zXit%b>D4uTre`4LXmN~=26e#3t(9?^elo~-anpAyh6J6z>OT0 zs$|rvvvoAEh1bA=YGWp6oh5;l3-}~d{ZJkTW+&@ zb5+678>0Qkl5>Zp_>MM}#evJ6IY+V;xfluDDM;HoIykePOihU)V5!q>Y;Iz7Hsb@I z?w$Nh3=vLtK@BS1my`3@*TKGBncNanD_$(RZEji6zv#JP2&Er=T&UM9bbNdw<=ko= zdeY+VKMuiM!`kdFyGCB_E$4iq7&Yn<3}whc6n~KZau-Dij!?lnH$^UTYWoP~p|@%&Ye(KX zeQIHjBi3qOKM!GnZNH}rkRvZes0zM>o+H=|oWPRFuK3!|WsWf+y?3BlB=&HY1^I>u zANH-o)c6mVCT#Yu2}n?@%gh{*Jl#ATE=uqwzU6 zUwBVqezPm#-fhW##YZA^;8uhwJ$%Qp0Ckb@;O`=Lc%py#HQy4#D|IE?}lA7Q7sZ%9u9*z*GE zJp1H#UAXWA^X4)T7K5xSD_d+t_rp`SD@BqcOR}Qhj=XN>7&hTkVy#$=^p%Gi*wnYj z+BqUbdDS|>i5<74Z6tNv49-;wchegMZC1-|KTcR`vi2w1PI$QczGmCOzoay(vNo8t zXj+yi9(rY^L>zB!*Y)8A65G2S#$3YI;RG?dG9ub#bx<9`zipl*lUaG|}?e;9G2um9_*8 zH{36%d~SUo_f1ORHnR)c-3Wpu+>yqZ3E+F~CDA_`w1fNU#hx=p!RImO72li7ahwEJ zdrw;XfRBE7(>3UBOG+8`) z3YXxGcikG9q``R3n9TdYO>%&Hh|pGDMjbDI!zr#!o+eVK{5y>8mj!u=@wTQGB#XF- z`5YW>(^ug1Ng!{ie5=W$l|}o;$wc93ea}#fcM5w~iPzBiAZj@f$PayIHQ@Wy+7^Mi zMzCAkb~Q5Pc~7IZ#_tPAK`S{EajSy^8!^=f zi*X+P$FgJN$zNd_XW$OPluTa33^TI|sEt=rZZn>!7(Fv`ZC2Sx0QMW55bkwVcYSAr z`3|Gzcv5Imn=?C9%QJqsZRv2Fbekl>zp`>TcNBYvL@OqI;Ym}HHIsdC*&S!x&+*%g z&iFvIw8oc0xs$B4#mQvs<8``C5j?aa!dLssxF}!C`Sr;r1MsfMX|R0Lfy!N4(B_@l zq+3Z$wtCMuJK9*`R;9zJB}w|skUkgKM2}iyFrUZ~}5Y0GsTm#6ZiK8(-SqkPsq zg1Lv3M1_z$WBfs`T5vI$pK4Ez4;q7AX^(9k9LkTj<}CNt)6k{1*zUIJR`b1at@ex9F|S#pyjuhb&^Hnf<9u4VKy*6pX6M zy;ap#kYe}E6vwqih3!)9%nosLd-TkmffejQoEjrX*$-oVx# z-j@@HDpqS;K(}qMBwG#R8UTMMt)bPr$2;Z)Qpz~37M1*+_~i*Q#A-L{Z5%%AviJHH zri7!NLW8AL9o%ygLruj|B2JI71QoOpnq1O8blNo(z^?=$SoGd`+eZb4G|#=fcJXtt~MU{~h6g*3U90@eywWR}v+Sp~Ka`KJ5ZaLK(@1IxpM3-< zr`p;MnU-_xOCf+xE*6q18VNZYqe-R$8|Ce7206+dY3tBCX6_6ungMW>(%GvN0V2I?bZ zIw_e7eE9YTWGmd+WTUSt_6X9z_3%>nb8)0V@AfZ%-t$^6^==RZQ}XEOQtu@UuHO1s zlVPl3w*2jlBq7hv-Ug5Yo~a1GAWj8~-lkv-gAw!B$NM5affc6UVd^2;51Cu(%3t*G z)J`UqcklgidWzaFiS`V)1ERj!Orrf{xn3^6MIS`>e-Ia4pCt)>B&th+5Qf>xl#056 z6&7J4#efHwfQ2UcYD(`nC+}cEe~L>)$-H6nLvrLzU$k1G# z`PJXe3-^d0oy;$kLR6Nb9ehtQi}j;E?veB(20TE)=~6{19qZ@@3*bhLc(!j;y+WERIw14SbGQ8pHcPb2~+a?i2#iZTY}9~B_j$r3eUos6@lwy5{rdZ{LxUea|^XqjqOmNHdTn z+Xlm6+&=fxeNH{==WsHO=Y20XlHopDBo?!qMny_K1r)a_z(DDvjVg3ba$RNy6=VXq z2fJ(w-~-(I#RumFBL~b&YTXNv-%vrVX9_95{Z@#ubzNb%7vX73<1xU8gfAZc@}cI9 zW^kj6K@9uN(EIlDge^5%VLv*>$F_Z z=+jz=@`&Knqk4MEPK77|dL+KL&)u}iO{Tha3z70s$x5iUz%M}zj2}(B^g*tdx=cpk zpijmRm;9uI=1qZNtqk)kL!5Nb0vc{#QfMrI9PkbZJ8MJ#J6^QmK(iOW0 z5!$5)^%0^+4j@(C0lP}*+*R0x>_DT-t~zT8_@44x!HqNDBW%^*#s(T)_#SW-qYRM5 z-+cW9!Voxg&-?ZDYXVqa^jm^)hHl93H#)nXfGFil=zu)uvTB6s{vZ+-$NpOpRrQ~W z00RIY4EX^FPJLk4b2C7h5c}K*|4Pv_Dz*E%x;Bk47qK0-q;I1P?(Rh#s@YjeFQwvO z7lPqkaIl*mga?v@g3D?N`V9YLz@Klg_|upQ*%A!22m_w|3@D&zvVfz`^NJ#BxHCnV z=Za*I-lpJQ_9GRt!kHo;+H*x&1sw8M6*<71DdL9uZPEITw=-y06a|T#DQY1mZD4qoj5xr=lwdJTTPNQ_`7P;xd00%ec8e)ft> zfclAcR`vkd-}RGR9l&~}eiD10)z4u5(?a~eT#+7^qtp70;4A5-PX)Y2L^wcn0*B@$ z-ZTFV-rWBk-v3J!0qX}icp`3K59wKrz$a)JxXHOo_?-V@f<qLR~vZ{m$8onAR7f$30(NO*+=R=GeJqp~OYY0bwKeBue8Q-}6@UdR#w-veJc_vrP3w&LcT z4*h@1$U;T|9$4a{%c%a0O`5fk>*KWa1_A?0tk5VFe!g|CEt| zAf3A(Nsc-=ICSoW=_!xc#BB-1P*9yDvszhT9z3%To6duI`vC}DBDjY1+ zIr379S-)#6`3kad>@4-AvVdPM_~DnYxS$Vy+$K3ejLC`b!8m=vEXsUVEh^fe9Twf4!;YB zgbBy8W(c9LL#Lcoz*b)rmW(Dq{MX_bmO=j)uG>!PL(ln~OPV-dj1Al)v6u1d0vxtqYuKQ)PO;f=wKYc9P+~^<+LZYtvv3|>^xtO6|0n|jgntb;c_B` zQ=nDh!CY1M~TPzUbQum{c~~@pMZ(BjJJz#?^lKG;n{Dt-EtkuZ!W3{ z9+9KhT20%FaN@9!<}(}Y;9Ky~k3aBZm^hYp?|w3$F?o>ie1c_#V;+x~bJ%8gD4}E? z`(wpCHrd#&;~e(WHP@B>J{Y<~-T_wbTK(D=Q@MP$FB}!5=#~0lY?k|H5)a5NJMPCr zn6TD5vd4N|+A0=Ja+KEN4t^Lz2PPr=>I{%(R=iYrz%Ek2QPMoLglEzGphO?_5smZQ z&D)b4a>lpJ(!GcFmh(5nvSS`Y1b+2)$KUFpCXkwQ5p!~B{`m2=84ifkwJ67ora*ov zJQDU`)3W6zl7b4+2uyz&`%a$cjct*vFkQNC8A2Xdh^H!;16E!+N!$3ed z0f&SAn*%nOzz0P|C~MfHJit7nLyB8adx;w65x5-PXdc5d5*L^HGyx&f44*#_)v8Bp zf(}717Ivu$#>=*=nseTbpOTAAE9=&Lnc^X{B1+`QmImq7r*(3dujRS}fh_E#s+cu#39pr@a=SwX9m(!?{927bM~p+N4*wd0dt~ z54K=N>-}fmNzPWa9M5?jC2)_0-^N)4?VzoXAZ+A|RpgPC9Xzw>(k1E17B?vELm2h> zc~AlGV6UjsNkl!Tu-y;++y(o%ncdx_z)w>OZd$`e)Ce%{fC8t ztt4KF6uON3(j<(@Nm0SRD$M8_oR+}H)OOIquDo-C>tlE8VjuA$;1lK$g+?ihSa}6P z3s~wSqxC@Sa3~{je90|)F;4e-tcg?Z?S4gGxuj60L*_kM83(14zA)h6Fah%Yv|OLI zO|AUm6*>@E{u5~llLn%lyg|gwSV9vllN_O!*a~#8W3mWFw`>Gf&9?c;8FQ6$VjBx( zh?e%5T$G)1af&wgEK~N77z!&Ui>oc)$uO;~q(X9$v5Fdykqg|VAdo6PNMd*72%CEN zcIu<$E0Kr3W}nfPJJ#y-9atnWb;$^By75lO!BH@c>*+=b$UI9ycsE;~6o&px=*Cf$ zEzNQ&A2Yn?Gm+4{(D>WlHe7_AiF26VnC@%3ric`!J@tLz9J+%P(0Ax>NHyv_y3aM} zG(X=+g1DQY|H!4s|B3MT7D#+Ei$-4(6ms0iDQWgiXXkd8PX}9viR05rPco*;yWVvq zr*{*5wsZ~0sp=f-i`X>7HbHScxB80oF)7mk|f)Bd`8hOvx>dk>oFBgXK zXBLX62mo#@)|cB_FZfVI3|&PCD2X zm5uW0fIIoZ^_kmil)=ec2D)N(DF%6&&Q~QLH%w@ifkki5X=vHN7 zZHJ7c$XHA6L1?F^72zO7(boi0bfQ4E?4dr51ajc`vUjyPC!*gt>FB8D>DGMidB{Jl zmG7uVSF?dn`$<39mp_;foW9nTruh-1j*v9mH1)cAoKwJXtv=@a{qW4}2^xbinuD$3 z<4T=vzN-~bG32}acc21NGeAJxIy+*>=DFiD1Dn(H@zm6Uvmc-y)A{ZY-$1>mfSyS} z^CNUPg?w4@2OYv=-9Bx^&IcT|H8qy)l!AHs3w9XG_Z+x4T$zcr3Wj7l?O=HF(R7C& zP>S*P4}jA62!v~tQ`kS(e!;w>UX-dr$mI4m7sTBmjXNtqL;1=eCJ)Vry_+gUAEQe* z()8vBu|Z`v+m0wuBui!hTu`34!z_dFu&HSCJ`06Iyp94Fh;b;>S|XC3Iw`uDov3lk zK;~Fb0T;9Eg{cl*GeU=cW|Fo!By(_*S+7RWYpjQ3(-TWe%&Ib}N9$WAB^Y+^jWB08 z?sRiNSR^lu^SfvcmUjefrX{zBkAa%o0sVl%mbYrSze~7vpG#?eu zT%x`>e5jn$KtE5e3|*8hJ&t5hN=YGQEna_Emp4W%@)o|w{_cP+&(~s~<0JIhaGgQ2avh-A(R9NuPO7sQz8nWM4X|qJIhcn^_WZ&?ii}A{uk1%om zVco&jKct#Bgxyi)T-2zBP^0b8g$oQb0BE93YNJ6m3tt`tmSN!xKkzC5-cjTS+Zb-9zho!Ns6uqU=%a`8BU)JH6teO=M!bk4q_)j`KO?qzZh>Y{#)uyhKN< z9JFp5?|E*{!z}Z?S$j;FWKd4Fl!hL(wZCtVIVJT>;eAa2ReG|b>k;s48282>g}HDj zTZQx8HQ)QxjVthZnw)jqzqgXc<3_Kn06&EnDYhtdudEYkzsP30&ylP^NRqqyw+2<- zoV3j#|MZ_Xbs<%&NZ>u%A8L=}-F#K%;P}I%855MW=uc8d`bqk`hceW1&!;j9eu?4O zPqzvp)V{(!uec-h@QvE-`;YjMydR@NAVBCM5EaPOfzT-+=tE6BBFzHq;P76IRS99j zB#KhdgjDC z!``(MSIa~e{p)~Ihz*>$dK36x%i7?X&Ha1ef8)X=%%K>O`18>Xv?Mbdp%`-p3j}>{ zmix`8L^p=&HEwPP4%U$xqe+~^$KTCIVM(+jv>8cz*38hTKBUN+3sGcBqaAORtW3)) z!GAZ2CFIN2AS(Ub#+^@h8_fI5ByA4GHW5P?KiHHQ*dt%st#FsFiV_t zjCLXR#>D04EFEUBuBCt8*dh%{77?`((=BnB_`|W|_<#a79Ou^MZFwDYqgaNg= z)}IQ>^*!f$sokwYosws_KxR32998re35mK%$m14E65PUwjF7zxm3nNbj#gGe72|9V zdWK!CzqIY9wMSE!L_P&3im1228Zsykyork$s;ogMnBq)(iT(AnKpd+Wv><|Su(y` z&ku3oj?s}Oqy!6o?=IqPBb!KvrmfP_xJ?X`Bf+w?|-Qp*v6>A%99n{-xLp>T++j*~! zHEoJOnFI)4ZD8>NKHgVN(8Bz=f%$VSc}GhF8x3#(H_5j@ZeTz?jQBJ_Yq#JDZQ_)q zo&@h!NAb4VU+bs2#Qx4RbX5d-)htpgKdjZI&kij=e{P{d7I&%ydmH;szm!#eFv-$} z`q3s0x%KJvM2UjTo80jis-Nd~vXJ8I&&k;YO{L**naE5{il zYq)|XVf;Qv2*y)HJO4yTdQ$b`N7*#@)K17S8HRiVlj~9c{@frP?@{`ZGv15i)@cz{oz{^RKE>#eV!Q+?JJ0>T5b;d1NWr&eEY ze*LuOi{^(w_y6MT=IaWspOty8z_a$osRD2g{Bd&TbuHK55V+7n`s`n7IemNJx|ZvU z>T@lSx2;aKTr9D#H@!ajTr_31yD}ABZ+N|!Uo<4PKezmMX}{k1df~Weyy|e;_}`R~ j>w2yy<%OOR$A6ik(h{)15#10Fh`?VjplZ=MgJ1m@;l%-) literal 0 HcmV?d00001 diff --git a/spreadsheet/macrofree/aoai_checklist.pt.xlsx b/spreadsheet/macrofree/aoai_checklist.pt.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..44efcd05e004c62c6b9e9bd8774d29418d0864cc GIT binary patch literal 30668 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�WVHWDe}x1q24#@;Qyj9B&2-#r!Un`Ol`mY7EzFT;B{Htfe&u$sHyou@&HP zr#MjBj%1iMvo}5(QsH@vRAkDmlVqKy#=;|an=O?)?90X=KI_cdl}~I97X792wtF(` zSm6uhwj~CRSVS8aw(=X|z_MZ*L)Oo@U|wQxDDYg9#6*Z1MIUi+u`TDvy@#)X?o+nixw;tBET}Pk2(er5XbI28XV{ zR930Q%cnC6CD`AL)sX?d`qI$*%XZD>H2I`%J%6mZD@OZT7v#9fd$+LYjcj9_o>aIl ztn`sj&ZpX_;}_VMjr?&%LY21ug)N(F6varjz+k2$g4_}{hgr<>^4O;Nz4$k$kjTo@A0Hxj$A$B1mg zO*<)kXbV@bYTQ$tuC}o=FtA7b@-IVe!-2LTmk(t-m9mWM zlk(3$Ur=q*CXNBWvxqLo`JJ_G@saN%|3UU79%4fCv}~@G0Er9+DwiCdPH(Fq8C`kOSX-rvPuT;yxapI) zzh)NCh#gM1yC;30RH9xAVu0Km$`*BbV0N zpZM2eyHm^W-y8TBiaXUqpBwv4dMl~%j&py;ud~g-ZGAHNz2t%7%eP}*8tt=xakl^dC(yhv2=5}dDOQe}M^TKdR?rF{NO>y?VXHLbM?z9eUjJ>Toh!j?A z14+~jXQ1W``d-nBjvf~nfIa#eKm5L&RmB)bO!ci$c~t-QXt5;7E7#wcsdp>A=1V69 zCjNvC(-A5+aJsc?+X}6IH_=~BmK+l`KHRDQlV>-)6?uV2fHe=OoeRiBDF68sUm&Qk zKhL1Y;+{Lx_pJ5V19aiGNJ!5vG@Q0RI!^bj`PpM+Pt5m#>HpzS*|Pv=5Aiz&@T|dr z0sP~UerHk6Ue%wVtQ-F$3hWyHEXvtU^)bqY3Ue6B$rk&p>Dk5S#I(}}VJSLmcvj3$ z3`=c~JwKB6v&LtIWaKQ)*`_?fv2*yx7QH8j2Amy?goFkB^#N3?(GmLF F{{hGNX8!;H literal 0 HcmV?d00001 diff --git a/spreadsheet/macrofree/checklist.en.master.xlsx b/spreadsheet/macrofree/checklist.en.master.xlsx index 47d594c668ac374a7967ea2ccdd5f1335dc861cc..b13f9a3fa2088eaa63a633c6ea6f918c29a954dc 100644 GIT binary patch literal 493800 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

  • I0_aKx*Z<>}$$2zFmDI7~o@|!2i_2;iw{S1FHhB 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�(K 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

    %ups0fYHhSX&R#8Z_h3jcJ^!p%1p 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℧_X1t{E-GEr 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

    J6!Z?PLr!ojmF*DE_J?N9FxxZ( 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 O7>429kZjbgfKA}7vl1TEA-c! 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≈mNdUTbbnUE_ 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�H8vR
      P>0?t^B+SPsQdfIS3${gSI*|s}snV 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 *mtFn~{B<)J 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

      -Em3limvrOz;L?kbo`{4k!B!z=bjl>(Wc z{367b6YJ^in-Lr$*i_F`>%STl7CCsqGh%oDSa)bqC138bVQuv7s&bd7y)PKD6h(m( ztQ~f$?`D%6ejbG-fxG8K(i*&4WS@)egAVXj5@5y4wJxzcar%+Tp4}?7D|GAWLmS(d+sUJ+>YO?>9P=rsGXswa$Ivkj*%d@f&>TS$2bp&A=^T zR$J2DfC6SM)&u6+agC0wr*EB6{j^l)_L`W2f&!l#tIP`;+?&U*EZqt7AM67>S66dk z)k%{T;1wm8kK#J7`0X>Y`$*7P1=ZOVc%-uTr%lK6m-G{>D%4vz=7We}iJmb6cj%16|X&6tcR}y?Z6Txp|TIqfueweY@h!4UFre zf$k%{b1+9Y>P$FgLEH$3h_z{PGweDPMf}Fsr&MzNugfM0yq>}kmWBeicaA3X-=mi^ zuC7PA@E?S)!_;3-Az(Wq`GNpl9vE3e*`clwJ(hC9>x$wP-yg)U{49MhwCa>%CMh*n zIsh^V-y))x_S_i|m^)ZzFmv(bMBdRTJ@vsD>hBH^SX_<@ zP05O_B8br>!%}{lv)VsTbavoxBCZlc-(Ut4xiTNvs1VnC*9&3vf&uc31jLiTjQFn~ zt#I+`{V;Bn?v{l@eD6$<;*?F4zvN&j*#Ym`e(oE@??EZtJA|c2 zOg}75z~V)rwKByB^5Um}F{`OW)W|SULSBGPMZ0!vTB*n`SF$FHgsPb~#Rz+Ru7xpe zsuJk+gEFektuiW(B8s2)E?JvIJKoyi?AlVDd?c{xfTlB6D})c=dl@cYtP3sK;L;fS zn0b$MD^5z@L`RoDpt!&5rqpOKfnO2#=?L0Ky}t$SZ5@Ym|>ymHZ{#+&Qt~!Io^fn1Z8-i%e;4th*&kN z+nW`xHW$DOz#n6VB>MEFj77Ei`HsBpO`f=5A__|QRI!eh+EC@o(dnj3Dea*I-NLH3 zH%yX?EHCrH+bUXABa@ZA@<)NsIZx|f<$8=nH5DP%)$W1-b_|p9Lz&r-7-bmh(=TY= zmGJV8gHO!@N!RCIg~j#)07x!c7>l}Kev25}YQn8$8LykBRSyRr%T&bJ0xen2Cx;LDHlLh7 zMRuNcQ+WYss`!w-(n4k6W}lhDGTNM|cR9CvP0_o$GT7}^^p1)|l@Bg%R+hifMGUq2 zJ-u4_r4%9Mfa3{+6_MY8cnl_qpl5@Yo*tmH!sYM%`w z!IJR zTn2J!nv6$!pavL)Glk;bYk|jm}N+26s-%#Ryjo8Z$PVtYE6>o zYV2PqllnNWv3_V1xw?elOATHV5_NA`Dz{Vc6DQr68c@`GZ?zWSZ8dGv+zC^mTGj*# zY>y5L#USDhv3gRrgUTuQtAwX+#o8F*K?GiYo=a0|gE|O+9tg%Jf_a^Omhk*o`6Vu( zsB@dTAsQ#IU0)fZVs8=gTIB7ft#1-W7cUG~h?n19~;qyc=z25H&yn zzxUytno^}CQ} zpLd5_Mclfg74VBe9|dF>R90?w=IZm#*4ot&uMJRgdSP08EU|oN4NA18tKAt1M@ORA zk)CeYWAI6srgQ8K7n3{w{(ahF<_in3#Y@|f(MvOGSsAaNcGdq`z{G*}y1XzY18zd< z0PlIKRC}6A>?zkW3#Pf3`F9aytHVBC#Ki{fW9t{%5{@KBxl7)-MTMQ$VH7CO&5vPi@>d}c4evf!&?Li`^KDvY=YyOQ!4)jg^ZzL|l!8Xg!f@RpOjWkq|d7|B3nGn5Pa z5F?S^InWTc+q>46R9PU{`UD5v@Kr`N4BMz>+F-4J2KpVEKmZRumM)yEKOw{CQo8wI zC3@~m)M}@MT7SPtmSnT@`Jp4sP(@3PBpXSZtJKtFS-(b}q^9#}JvNJdzQ)E{Re9yU z`nR;N25o|_m4sbHI>WU~BY3Auv;4wka<)7dSth;;@Gif-8dwdlj&Iz7c2%YcBMV%x zk4vk8!U7IgQ=D1mJb%75#ihPs$KYxq86;i)Fhu?3;qk*v8H(`bn{oP={bSfK!&ca_ z#!(T;^dvHI>79;Bg1)8GSZ0nzHFTd)1iiYmw?iCGw3~T*`brB^owiL4=j{v0p8KAa zr32=q=kIb;7qez0I`uPF>{U0H{I}Qe^Q7*USyX{pFXevoG@NoMZ-t7Nuj=WoE-5w2 z67ZZhac4elnc++YuO(KCwdahUR@N0;Dlc6GWW2npS}~wmbtfdhQb#8gT-zL;c~RSE zx8yN)G2=RPpb+jDyd6ry1fZZYdnPlm({YWxI8f_Ge zlxD@$KDW57aqgyx2Ecspo0sP%4p>O5fI@CUpn zj5w-Lrmd9MCzGdm-18Jv7A|yBL5s6JgMHixg4f-e>0CY5FR8igdMZ*C7cwUq+zEj7 z?uZdBZp@ZpFq_$0*{eZwC^gRUVtl0{-73t)Ec5j$vIwJPIQhq35Glj^CEO4t1y9<$ zUDw^7Yx|6!FK=1VX25?Vbb?Hf43K-ub2(Ni|({3H( z&}IhBN^hcp*LP_!%Pf)_$%?Na5N?kzQ;6&%i)gCq)I%lY}5zvI_K`^-7D~c}AR2h|U1{wre3N zf>?#ttAulHD0^&G%ApUM1=b{;!G;%wBU$39SCFfy_Ic%&gGe;~1pY&$7eN()QB#4r zjFJz11nPy0u&@*mzR2cb!@Iki5+yD#)a<5Q%S9(Ik$G<=Rqx@(`?cL+k~kcbt@`aTdXO0)nFs5>m##%rR}&=6yWZnsYqoXJtm2exY%f>5O!L)~d> z!;h{DUfqNX>OS^*qCBNElQ7+f7AFFrmittyIqdiI8ZvHB`qz-pLPLYeI3D16jRVqS zecYlwrEKtvF?-&Jzt87jc5$xLt)bjQOz-_sp@q)^p_;hYi_CCwj&TVvOI5Eoz0Ju^ z{ruASS)Q1T7JLawXOI9$4Tl~5^5xNr6$fL07B4?ekWA=uCAx`1;QspJEAzMLbRR6- z3iA(<8I)X>V5h&VlY<`ZKArYZJLk`y4Xg7URAV+b5vbFj?7H$(Gvxf3DvJzLfHbG# zbiwvTaIH0$n~s6UBPouCT33i8X@tTeAuv*+W4Vr$8rU~iTLv#i-QKuyg@MPPvgatu zo+v#|r4fo5;Pc)68fnxXTqiegxL==jb$GIo4kcoLL*x{7nsviK$u2(-%q10uhfy9N zG@YWImxEe?Ua`&JXYUl)y1PJFfc9Ly@1_Zs_nK^MGTm0Q_w0;#p|(eMnPnfTOr|lw z@5Jt+Qzg*onYU4b3a3W3RdsobI>F4aBC`lgs?GEs{nd4^raA%a(>*@}*?K@~;VHigIF3-crcYE>9YLU90qGIy| zO_HV{x&f9Pta=;Hs)hr`A}@$0o}|)Fes{$N_3acH47K5~@}9^+1m9Bm;O9xp+!|=Q zq_$Z)>Id*{s88|=5WKLbv1%R9mV6NjHmuJ>iTkUl0+TQZtio_pI-lhuKIbV5Ul8$Dm^1Mz$386?a=cCvsjWKgVK`&|2GtfD$E)oF) zVK;{hzDx>dz#z8r3e^x1O@*tSpgo(=+Yf{;YUtQBiOyz2PB7ma9c#ZMv%TkW$Yf_u zJtqVFr=#$wbSbK_wD27J%fh}5Jz$5kYXlKY%2{fS_D7P$@UXe6=Qh&dUcR2$q!bB! z6(^O7Iac>>CYAJUg$r`UF>zIe-HAMM@%#FEx4Al1=;9q;W=e@bjD$C+aEXQXqR(?y z?bkr#`6Cry4yE4rm#w#XU^v{rWbzKa9ei;MX!Q^?;H~%KUCc_Zc+3tB6^8d1a9WpD zTvkrvCR&>{uH82lPc2;mipCs^qh5_4EdI5M+>r{JkkN} znj4h=I=zn$s})q45#;+&o1Fg9VuCdf)+6h;8XyXM)v+3;cZ<%WS!J*GU)UjB2F|^n zgo3!zQ}ECp+f$v)Lo;xA$!%YbGsV@n3p~r`;Pn4&W80K-5|2@DUJ_*ajq2Sea#^D~ z3cBEj*tbSLM$}r8DjLp9Hc8pNTb;cqhVvN2jstg29cMz4c29$_MjtnDPcOo5290!4 zvOXmh?b3a-i-fz0sO1sXN^;jBOX!0CBys!VA;BeGv!{Yx0qVzH^+mYI;qG}>iv}?E zc~k-ggXS{MxGO+7FX~5$EuISt_Z})!nZ2f5k}c957Gb*|!?ZIdp5J>VMZ%ap$xj|q zdTigjW(a6g;TZ~KJTPF=jEsDv4R&_9XuAWRqjHLnWzc|dwt7S4qM~T8m6!$LjXs>N zM!4<79iL&DKnmsyN6rk1H6zSc?T`WF0I8tfdh8391cW*psc;s-xsMP{@%MU9uY6i_ zcl!N6pGbyrUqO_q&$t|1wo#Rg)|S&ck#JZ8om^z@MNjx5R6&X8oGkcFj3$KVg2eVKb>vFN6c{2cHAkncZ?N>q z-kcbrGqYyTNUG?lP_qVA?rsHgzx;MfxZT$!4bs)xP&We7yGPNcsV{t*-_a%=@zh)T z^Ta-mBta>dcz>7|dFQ`(x(3Y!@QOfsY~O$K*PN*=?7nn3>+iuUhFIv;az(m04$KDh z-4X9Swv`vKtPNe*B;MVZvAasQ_B^CyUGobCvzTqp>U<8ln3>1JRtt^LFdeF|88W{~ zA-vcN#Dj+%bD@(OCY12M#fcX=MeZ2h^e!9eTEQO^B{VGFuCQZ_%N`E`vQFPunfkm?9Y#5TA=bXs8KEWg35(jmY_6FWd^eg9^TBlqHecR}@ zIR;fqdrffXTm;$TS(F@^F_?&8ywUu$icj5^Gv`>GJ>3nT#I-Df<4LA7roKXJLtKmf zi8Gy^GjU}>%9RZseY%1_x~W1W4wXdL8GvIIYBwK|?}i>9 zQSm+`ayn7;TU1ihb9e=|wNIqRUp6B}+ol8^PIZqrP)eVzPf?PsNZ{zb28wMh3D5Ma zi;|9ygt~X9&JQ*oDBV+4$;Bh1YRywAGh;!9-Tpf2_;buQ@S%n}GH$JHulI!p2NAF{ zolPnVxg;S%+x*dUN&s6eDIEoFMi=-OeX|;x9lk)Y-?yk&>9P284?APQ)rT;LBqhbu zPVUboW=({!>Mf4dM_Jq=VHXawKDii1ZRmWy?fvTiElRv;)NLjI%RNf|wNe1+Nm>c_ z2LhwoVR)V>L2TBB{kb1xvT3B4-2}(?PZCEqrO}IU_3Zpz&kq6aK3u*>j185F8D96u z7A)pq>5T78BNUU7sTX|e2;U*iPx2WJke)&~D!2!<)S_Pw;OHp*66x>K zE$!v%!0?`zC=;Iy0%D#Zc5pm2jK;`rt8iGn<6|=C+mw?HM3kUX7CH({^GG3FWxs-N zA?}x+WJWonHL7BOM#K}&(boN*yG#k z;dSq+(c&D0zP}=}u%?urupEHDKT$3H?3H+{BGipjQYs+stQdKn7^_7O9OugGd*sbB zp{)Sc#)g+HxQ^DpGW10WO_Z6vV#za3i0RUJyPA4Eo$k(IS4tC?btpWzd*|JDdv{s4 z;%*E~?f77p4XZ{d8cdC~=z$Q>!AOTtYqU7B$!RHH#!0a91Ez3XK-{6lP_ z_v3NWOSZ^_Jd2doLiJk42I3K@rgJYo<;D_Ua`S4xXop^8KmRiHcBN_gvI2xXi-TG$ z!{uMpW=6iit(inw3Y;9=%(@u@v-EDl-f9Q%qeQLpL0U-TE3ZMr#$ZPBLQCR7vNeAZ zhk+eJ>~zC;dJC;qrTnu*zKSC9If+?XOv3gNobIaa9mleoNQthUXCCpTTgSts4hIVn&d}68#+zE=FKG|F}{T_*9J~d zksSW?nj!;kdyDMDp+~e?>}?LvQC_0$;WKM|%ZrQ5WpD-iVz?83>DE12^XZ9-FK1a) zHGS4>HiyM1LC6IDi1358GqQ4 zH^@3kFX?Tc$>`Iw;_^vtdP78CAINMuX;V`8M$v(rp6%*@EsC3bT(Tv71) z==txX^M*?ARxmnU?BikR2JmQl{F~t_N0F<__drin(T-7sJx!FGg`{ClYjd4>lx!_{L%^sb`-B@%;?}+>x?)8 z3qa@^^y^ZRmk@5Kg!{^wQjjFy6-~H zVSRZ`o5=koP@CEO``5FY#YCoKU{oh_v6J6;l%Y`t_FhyUc{lB=y*~<+YfkoYFH15E zDUExD3tNP5bM}7_GGu-nMM_>A&XPyV6g}pRx?G!6Qa|5**y`XdkucpBQ&S(3(ZK5A ziU;>RNw`+lI+dDW`0E}EV*s>BEU58iUZ5C{`+%t2rut|Jj*UkNe4Jxdkf#|$(mB7QP_ z;lz|n)p{0B4J0~mFQT*kT`y!Af;fd)8D$a9dq}q;Gd~B7*#`4EBJLQas(7L1g(_7b& z2cU0`!R3Y4kto44q9%#=_e}X?y93{SzjyVQh<(%ko4iue(cPd-SRl*Bw3e)iip68T z1wetL+k$b!>p7je6p3A4Eh>LIMtQ|~*yu`D+f!Kl=H}+-2>M=K3&#gtBZ3r&bK{wo z9al&&RW|QX$%1daCtFP==$D$uZlFlZ!LqS5X-Pop)(|R#5!oW?U}ofPDyK<1iFi_d z-t^O($X3iw9oZWG`X@=qxA<9yOy*VPGVj?9&&xd`-@WFP9%~XXe=^#o?V;1@ooIS{ z|7BX8mKmLZep%8XkI7G;NQ@-8IH3q8y1UU}ekGI{j#*QT zlIhm28-ywn9ggW5*gY@YT`E0eUae%E13++Fc)w%aryYKZyy%0((tE0s-bG8Fpkhf zO#6qoV-Vj>9~S;;$gOAIxug{z;xVDoYRg=^$khWn8-vn#<0ohY|7KYE^=akIfFjR5 z{o-WtPrsGKFQYU!4+94I10_sjTXK&8dav}vVjR-J%YBV4sB}zr+s&Y?UhDcf zd_(Z!gwek4H*#1BGNL#NZ#spaIiy0Xkk@=4W*d$xr68;B61(zhqtB=5OvI4}J7U@^ z6Rp0rXKVbPp>@FVKSjQAFD|#ce!}?}wc%{3bU-L}sFb9&u!yyA%PMa?THg>j{zG8n zoPAgAnoF1I(^~UoG4qmFvZ=6cX_+pI7M^|A1c7bC1ZU(P=PY~ zyICJJw$_8|^W$i_WD__~k2j5fs63z6sj9QG8LH3+Es`qCa?!N~t)a=gG%8FS^Y5b@ zR%uvlkKM*vUi4w4O=XNfE%UmYu_fnjF#J{~`o^!u3M%u6FX%eWQFWs-@V{5DJ3~!F z^f){M6*`rDehR`jKHSuQtG3y93x)b*;1nYvpDRK}=%_Dg?v2Y3e(|(eG*UGT-xmIk zCS0=0zEJbLd3b<6tmOUa8(E8gSp*Ry(UWs|&C_92>T>Kuvxx%k_pD`#Lq!^I+6b5*y{@2JmCx;LY9HB2 zuwhOQP%C@$7@ajes2NB$)UX=U?}c?MMCe))Fyu9}KTWAL#= zht9->^_L!ol=hL6!d9fU1ZqgqOuR6sq~hcyX{l!A8(#`i{@e~Ix19VTV%7){^^G9u{awgnF;ymZc*eALoWZ>eKwnyP35x7$WnD_YE{l z1U`Fin>RDbH{hFzO*(Yd$NFxQovCjFB3E@a3-@bV#mQzr@;Q z`67)zZ&#YFAjIUTy`90QF<9Cc_lfkmR8z*ITyX=T$-7ej@wHcT%YLuEyxYW#6r-D% zVbVc`m`5X=%)V+u94X5KPIs&4LmVD=G=yqU*oLc2naB-2`>%QmYkSg}C2w5mh!)}= z%)B@lGxv>N;bo=Q2r7*~{&FqciD5hl?M>3M_cSe0h>6lznva|0sfWm!X(D-@5?@vw ztEo74l^Wy|b81qY=2X9j0P1>kz^Nxhh~S<*Ab=?K;$bfe*sE+%nc5I{a}P|{6fBIf zo7~veTXpdZHDcK;f|^)MHk;qiov-&t5+IJ)$3@}~Q%EtL2d@m&1fSAx|5V8mnB7Mg zh6{-4CyPm#7ks(``U*sILo+~h&B`oV{Yl zSHNJM!R_lC9hijTyGZ{R@M08X&0d*5bjafyVM?Em>h4rLvIwZShCoL)>T!jlY#3I)x@Mqr~oP3@X!7*(F=xNUli!Y$mQfmBu(wE zqp^iB-5ZC|t>f&ycbN20^yb572mxg`wN?Z!(ZJ3&<^ zE_G>qcF}#yo@g;^46U&GC}45*c!}FvbvG$yT7BhQKbWh^Zf~Kl>2xHG#>w3jW*Wbn z&J|XS;wGPA*T(cJE~SZTy9L`_IKH<4L(zPQ1kP<=aY|A%g0-BK-G9x)9ePRBN?BU_ zV5wz}%UNAdm(yM-V0krSO^IDLLU`{se7{>YYr(R%LuE+j#cJ z5L$Yx0GJP(>m%psTKYnT2zk>-Htr>1N1*GNT0W*f)^dw+T@n?+DeszK=*4KR4iwF! zC1beG?CL(c;qABf>TRC2J^}`NJ12T<%%`A$wX%~#|FAbF`Ukw|mWGj#peqqKnV#~} zxH5ay@P0I?gqlU9i+U;>rFDtr zv<|D!%GuIvw9#1PD-QpD1F0X$>&8fPp1x)hh6>bt?+jhJ+F_=ZFTt4~isE<3Ks{Kt ze?^}P`CysdFKW@}1P-R+Z-(qX0kc_z^V!ga=}FhAG_oc|MqDpr$7lK3PmpWo7M?+* zLoc~S$`O4sRdwTCLLH!HA%_Ncw`+WAxf))e{a}Ni^GOFxUxK8h>dsIbb3PD!Qh2!N69Zw~7=0r>R~G9v-L)Bb}*$$*7_5c?Fs_JtF=1{J`8Z6X5buxtM*JNa7{1O#Hi(}0WrYAa6z_*Bu1 zKpH!5XV0fnu)nd1J}rO)_&00=#b<&>1>e*hPDOK$)G delta 108143 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

      i?j9csaDLr?k(Q;O+rrz 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ςSJbgkI2FZ@3>yZBk3P1p!!X5zy!el>R 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

      &2~y(xj9u_y1UENc_YuU@Xp<& ze~=*&mMapDexu37rnU1c3YJJ@IN~71=W>k=QX*tDn0{8v)3$es@dUUE?90B{8fa6_)`fjZc|IhO`&bt&#zHRzEdEVv@x#_J)cK}tu-dBgcv#IA*`s6d|pyu z5%n4ujeC~O>ziXJ$fuOlz7()l_%VOWE$I%$JGCwJvBtdmwmHEqqoPx{$t@_pF|J#^ z1uP7DY?d96xg-%<_&v1NbR*lN0e|u8W|~vm!R5aF>VZb07v^x)<$~{iZorU_ekzbj z+a;CYm_!=qHlpDNKaxDnBrV} z5mgdxa*U^`$&!o6kvrPGF%v_VBL|sd&wmwAdXDGdiOs?;c2~~7ZPuIWrjW+fWsHa_ zk#g5d0bY%MSI;6`8OEuoMkfrb0(|1HEquSwcxz=t=Yfb!o7YP!(I>Yo9BXila*`-Q zn1JfncRYt*|kc($&ZSUru z^=|d-j}BWa7lNyieWb5f+`ot0egs2n`mI|P%o1-e4`s#nN(EtxBB^^Bmu^?$Cj^@_e(`Q?o>oQSPO6et(s zi1E(*R;WdvjTPCCArh>lu- zsCjCn1uODvq}C*$E=1QD@x~`e6V0nHWuQQ@Ii4+_te6hl;q$h=*$Q`v8kLVhL|PSM zC&g7Qx#dgj)y>MvVx-|`@Ga|$$B;1klZYH^8PTD)_pd!$e4%C6Au0`Ql!Wno z_M;`z86HTXxT{h!K56!vFwuOnWMnwZkx&n3_4b1onsXgroI8`(P_6mms=7Z1b73c? zY3O&AlbWT#yy^#wY?^$;roUw)m+KTxl5F6ecet!TRQP({r*?<>hQPP27i=LtUy9La z8lMV;hAPbAzww<^w|HmpDtm7&c6U@!CHm+03zB@FmH#ZmfKBi^DWZB9P(XdlnU346o2D7JU!R1;wrI zuVGmAb8@p&?kq2DGtREfkAL5JGPL&L{cgssok;#v?Z8f>%;!||j&lxK@!_uk*3*J& z_kuJkiQDB3$zQXY)pKOB3}|tG(avrlsKPFMXTOruar1%CgM`2u0Z-bXI8Pa+LQQHD zf*ip2!vh5(9dWYP*7wjDDR`Q$+P=$wJ^6x`mEeMHpw*MyBm%Vjc&hSUO8!Ff#O0TC zt}KbnuX&~0@#EL91sB?BT5mE%djug{ATR(A@=$Ep$N8o-?NENN$!wZ@$5PTejhemyRqKa6H4JVwgY%+U2>maP1BU&v5xd3Z)D!=L%JM|`kK$S(5q)KtrCZ6Cc; z+dr`iw9&;22;e>N*j~Ik@y!iS7)|;`od{p>+BZw&j(c<|O6{f>6}%U#IJ4`z$jIC# zSkfAAKgC1FufFj%nbsnlecfmkp?Ihe4-G(DoE9?@)6oqv8#c}PxTyO!R7y`z0oRY) zTlKv9-67w{VQg&zvBBZJ<)_+1SB=bMxgwpG%*O-SxMT|w?b4iRpXBPXIz}U#z1)z^ z_8xnQ@QiKQxrI3qg(%K9$}NfhA{3X2=_Cneuh5d*43?uD@Hwz;f7zltU6@1)|8>THwrl0VQe zFvitz02s4v_Wji4QM+(;HzN1aWscV=+3&5<84O=rMW`)HU8lT$C9qK5hlT0_A@AsP zOzagTjj-=e5;Uc+Q(mHSbP|0=vye7~=nmYm3&AQyuzZDzR1-oJ5skW*{IXWP`ZZa( z&sb^g`R~D-`E02aBjl)6#ZjCH19aKV1$6>*u!rl5qW;XP9knwzo3i!rMO?cm*Cr<( zc3IF`P>N{^QwZXl4k9ps|5@|g3%jZNJ<)Z{k4^1pJW^QQuGUT-bU~n1WKB(AaWr>|GUU^Te#70#V!-E4L?KKhjpiNX(1Y z^uJV3eOPJ~UK*xWE%mZ5yQ#F?Um^9`4tL;&RxVu=PL=e#)A12ofy$qV0vfG?Fs%@1 zPj3ZrTOp7FyjP1#PWhX$5t=XiHnDk2o;vB!O^ci(Oq1gt zq@5go{wfi*FH~t<#3?LScF2{Y`Z=*E>E~;BSbi?y$@@(8_v58) z7lsNVE~ni}D)Kp(Y>*>+b2|U7xnPjd8|=Y1W@r3`-<$_Fq$pNoH9nC9QQxv|4d}<~ zs(;E@V~m)d*y^&Sp%Ns|t`a2sV6`CzL6c?UM%SnA>zm^Iw-xY2YHYDoKe27}{8+BY zp~rh1gI7itd^f9+KD6{1|M0kArDbo_G*_M`O^@kqV`eFDRCEeNugn->Lbc zq_DZxmCS5%7D%N0pzazIzoQ}COrkc+b+4Ju8+nycGV7`8E}5tv6^FsvoO{IDh^J>= z>nL^Xp1j)|Vl)cNSng-j>?9c1VBW%48eGIG2x6bBh%N6`*2~#5Zk%<0Va7wfj;S_b z#!5E+N=@du?pMT#V9O1GLZ`v{CrMi6OCx@;OI)xw>t}$9B`x>ai=XrHE=9~-TbU%f zlGH3;uo$EA$x5CM3!6APL4_MN?2`6qGYQsJEy=9rR(ckKj~O(lHF@Z-Flb|P^e|@1 z25R^rw7#Sn3S1FV0?hRPtTX5&CA7k0J&${3x+=#gNG@-lO&%T&X$C?7=8SLaj)7$6kOw%RYqwWVY zbm9(i1S>Pns^n>nZ)Zl8*eP(rBE!O9Z z^>zK|3WW9Of;7&!jHjt!(83UxKjo^pmf%sgP3u}-u#~5$xu~o_)XV&mYl5Wj$MUd2 zfCl)5)$4c$Kx_);r;BJ>&ts|)R?aUOT_TUo3CGJdx>Y*(zDM`v#w$1H&pth3A9Ms1 z5h7-opV=qGoB|Z9^{zJJuRguS9nI^VM2&^>K=JgAQp%WAbJrarO6smLsrPp?AsheEbyNR-Cf#m=Xdh;NfuJ$eFj5P=P5;K`ZCU~h z*lZROjga1rr&DKj+>-PkvQvo9;aPG{C=4tbxMnsMFW^u0drReU;4_D2>04*KsEbq0 zad|+CkGT`dI!*Hgt4>Te0Q*^P(YUW)l}}1Iq7Z`S7jED^c`}=q1Zf!SG#S%0LH|WP z4M_{*bozLXfpCqv=OqoL&D2ZNW?3-=&+75nkh-I&>l1C1P52+lDv%D8jd8I_yKh9y z>nWs_abDO$dvduCzrsxJrp@C?kME-VOaT;0XS%}!c=j&3OVC?Bu)!zNASeBNBSywW zVIUashHqv9z(Ggj@Po_POcv=wz?z|N^8iLic`>XVP^qYmeTYR@wQ;6`YUTSD&Qq37 z;c-;_1UAb^Zx^TZ1WSoC`ez^1e4GzAn)skS#$rX{a$lpwsOE{w%c(F^JFAG z$k&#WWpq@y+O6NpKJLRPn_X{tb*FHyu4s#!q;ZCzRuLGnL2JOTjrFk=SeBFxkwbhd zpu~#W(UN$($GE`qK@8^FI7}I9r(Dcsgn*xR9`g>2V<~V%Q0o2plzLYON!!{h>+fEU z>Y`G#Sm7Gx-6bp_=p0LFx{NW>C7i$Q-r(gaQvD_&hSO$rnMg~Bo{nba(-IJCjX{|> zAyD}kukj&36KLyyB}veOG$sco7sT=0Y|%2)mWi%lUZJi0n$(hxFkbdlJqC$rl&sR5 zt@&P=KJI+xSDylk3ZG>0GG6UeqKu$G9WAIvDUWK+JnJ0Yx{4<@PNUixU(WF5qx{&t zD%zd~e0?pS7V+f>8xATAEVZ8Ou$#{rOpU7E1?m)90}|?6#l-h z#h9O8UjqO#aOhJikV9&C>iG=D|?h%5*`eu}VN`Gm*H-IGA5nMCl_hCM+uaLA`bJ zqY<4xmFdnbL<1SolvolUd{@O58DVV;1%Oh&!nF}#IZW%-IvdM@=>FQ?; zQCE!H#|0RssTg;u(i|f9n7P86nwjs|aO%(Jt5s~_&)J#D-ZD)pF;9H`JWkf$^!?Vv zx|SzEtY>4XR1!T&VfPSrvD@G)mRy?Y`$t9r(SwG|pY;?3%re$}Kh&Xh&V6Ya796+K z;^J(oKKDJ7{St4%`1@Oq>B8nT%r)n8P1er(Y+L?t&fLXO&}h7mZ)5Xp9ie!h%)yBx zv*1+nTquG6X^g>!)5e`iA44BwU{Vp_w!hSHRR>~(o88Xme{3raj>^4?PkUod$tME* zhsFBL66_pV!q2zAd|l(T7f`~8mlH!2(auqQqZ}Arz9gGzyGZZAIV{+X!(#t9d7d{G zSqE!mVSYq5At+rXi#B&~1htz8B~PnL-n)x) zMRXl**~)MH@r*%P$y)bx}XSABT^0!hRDXtRkbu82$?uZV~6 zHI~Ad@0JVSy|sq; zt|GN1h8GSN>rB`D@ z3NP^JFZ__!Hb~d_);b!k7-2xZg-yhaqIET8L|K^RX^5=!uuA9Zb`s#XzBst5S1O$`#X>%(^rH>MpM6`{xwx-nHB%6{1eTZ+pz9Q0ty@ zbzIJ``GH@|_f{>=-)g4 zqHtDjq*_x$h_+g!$ol1lQd_I|qUy#pS%$fWf^YT?3H4|A6P|o%ec~Nngum;JCWLN* zb{c3^%(jjxvMQg=PSWA8ol<4R0wVkJNstILZzlQA>soSQ&gvIppF2g4eKrlhmIuZu z-rit^=T9;jLUh`}Vp2}vnjnRLj^6c}Eqq!LnAKUQ{-mY8oRuj*L|e50<&N4eAL2j; z(rQoQE1zboMm~l;=Z+PpiZ+OQ!xTPIVm1JXtb1iOZ|C25rE0kmk`Z)+g@U)W3$-In zO}FNKbn@1KG)MCGRA{sXTM@}HA3?~)%TyOPc>-P-xF+=pj&n{&;_;>X3MWUeI)~qI z{m^e~Ej)3py?~&oK+sJ{dQ#Kf=Jm4;-!FHH{koTDlcNn>&Nmct;=jS8LgcNQ8=uwK z0dCJ{IzE)6!yWqE8uM)@inh~}Y}4m^@B&%5EgdQA#G9E>=i#+m4rfg@VXF&h%%z4~ zHImwa52H^hgt*+hMzTcq!Zxogg;q@RS?Fr;69u7X+wOf1fi#E{jdh5nkKSK#C@{-3 zaBUsdTI;IpmrK@g?^B|Af~xb8F}>Za;l4aTL^^^uM76cr0&>6@9ojKUh&oVgucqgTg8%jM}x?lxzH6PQt;^gWeL#{tu%u@ z#HqZrLBmS48XulJgY~-9_ya3c59mVJrzG0>EjPbD*t8d?G6b%SY8+4{$N0IeP!xwR3 zmA?)S5!gje;_ph)u0fv`9=X{(YHsNy@YvPzxp4Tld#h-B2pB7`ee9{XtYa6xteZxs z6$sq7$iaMubyePG54GS*+y-!3w7lNK>k%p%S zuTz|fNI6^V!?Qg3Wnhu~vZ>|`!MrHI5ocA8Z(_G1Z9aO|#u>o?|zu%&=tQEgC5+JrKknwWqd4Gcd`7u=cQ6J+9ZjXxEI~lUXN{zr{K8 z!H}lq2G)6H-Qf#fads)-zuYc&GY_e`jX4o;P46Oa+{^;T71l1*ix!ts-wv5-0-S@V zuTsTlp_?>c{=i1ORW76)zTRl?5DWEYKGj>h_KVHk*O`Lf!Ol?_(`Cgqa$;Y>pr#r# z(_9rG6=H}nOIhO6{9dWP%8VG&w8RpNkNlLl{D!o4azNd1P(cLA+~>#?)ku@uS>(nN zVq=vycT(C$Wpcsf*QnVqOF@!z^K#4FWiXmCF}y)sVZp>ej!ejO~?6+#HR$KM7nVRqJtU1 zf*JcO38$1S;oBZh2;cwd;oYmkLXkcTNk(Zm%~u=3@AXj(m05 z$zgj)NJj4P>AnzG-ODS&(R18BD?r`=Q~PPyryIVbmFF+3@ISyiA5cX=%8q*T6S@`G zbJ(0+y@lyVG+veYM6TExrKmnXnhOF#Xz|$c!Mgfqx?f3(dC}Y{)u7(8Z>CJlkd`Ws zP|Q=e#=ZgGTm z|2=QL$cl3b0ak-Eo`|i_Jfou5#z3c0exc#zxzbaVo$eZ_OXgawlCY+|VQxeRZ-n-F zR8>2-mBg|j{uQ?>4|WEo%$upbn#`Nm&4{d78RU#Dj6~Kpyv<)fyS0!M@A|28a{IKx zqHUHr(wxAw@cnQ+Ss;T!HY5!NcnDj5N`uo$7RX`IV6{0$)GtbY-@)#OkXp1vF|4!q z$*23|cIjMI31cJ)LgsqR)R{^`u=5q@b2mj>UU`biw0%ZJgc;|sHtpif%tT#OPZ{Vz z<27B-J42ID?3buqLHe1lg$h#r>o~T z&Mgm_D;IjT%97t?-0}_KHIMgtXQYf;)O#%^h>S|ad@&YKMXDfl_3Y2nG*eKuCjyDEpuD{s>Z3M9x;oCP&&btT5-Z(0 zeMt!-NWFDa1+QZ&BCigW0NnHv%M%j~C~UEq*w5>DfkvU{L8QWGvYSaI34;^qr(sFT zr-PWi5SRdBI(n3gS#MdI`!}9d`%!a9rDBS5DbVG?HahNb$5|3~ym9Af$sm3ajLFOC zna}C?(GS~RDgOpSU`Q6Nzd+X;NFK%>){!ki-PC_3E^AcxUd8JiTxEd*mGCZ&h0J>G$S}cf4rS-TJ83=qvrf97 z(l#VRbR44;i9lVbV)Oi-$D zAWV*%sQu$p^rYA}@Xw^13JI;SeV>42wcon+tmt~%Q=?knt#0PXl6%qjS=&dsy?f#c z98gRNw@2(rd9~Cz*`K=3+_HO3#bfi$H5zNpbpAciMrKo@H2xfe#p-ni`(?C1;vl-* zRf9-+^Oaa!jfSM#@^MS9(QIpacekp&mu^g`yKHbigC)NqLULI4!b4(ADjQ(Xk09w- zH1aR0Oz3TJooP@?Y$O>`ZSi{~_Pu#NMp@cNv9Cfcz^2&*{R7gu`(oW4k1D$8v&2S- zt8B0e0NMBEXX|vLJI!Ly*C(&Ay`ZcXx=l1-x;S6^n%pYF`gy2m1` zD2yX5Thp+$(T~LC=aKnMu>E4nRI{1J^E)UZ-%9}wX zf58X<0*(<>tUWFRq(i+^0C5H62+Z|s87rF zQVQ?p6%jBhVvH*d3teeEC+{F|-_uLacJ6AV48RSO74bb4Z1#?q5{0dkdYN4}{AG*C z;PyqyaH4@zkLtTRZ?qzkwX;PGnE~w8Mc#Oq9VFh%AQseJyoMIwm1tkqb9=P7X_7uKSMt0=lf~I9YQzc*Y!FQr|Y&a|xSL#Y6NK3I8ZS3s&nsgU-folk56+~3V zb58-CeB)%*ymDmcC7RR7gUW%WMS~c)o=G`WmzT8o+t`3i{~b-_Z(E|QZs>HGm&j_w z^f9+rYtl)gCvdA9%Tn}5F&tCZSArOgOLj{vie#Qe?S$8vtxS6IHPFy2%I_J%G8 ze{SsAc3N?a`9zDJTRU1yhzU2x$nGa38z6IO%H2rW=8i^e2|A)RVv6oNf_||y1MG9DB8EZEJ%x#qzFnk zONX#Zcc-Lus5D3pAt)hBcP$9g9n!MIQVJ^}0!w#FH+;PQ&inh$_dWm2oNMm6o;fqm z%z5tnxvn!AC7ifDzSoMZecTGKoalz#j!-JhsUGXNh*G_kT|g5^dvQn<(YiB z|2%at)RWRA*<&=hiXso((DnY`VsieC_ZU;cw|BJ(qjCKdSpn+QwA`u&dBEx@ zyW-fD{Sb>2u3^)dN;2_O*vHVosO#Jc`}^TTUDDqGY1WO##^=X zZSr!z_3EdwKF93Xr!9^-R0rml{#a)=)h0gDEdm3HMt*#SN9S4isslogO(0Jh8z~d+ zeR;;wJQzUVJ9MdwNXH9AIZUNOKLVk1%bTmakK0~#gIp}lNE%gLmi>yB79Ts~i6O$p z#H1u>14zOU^5!REjUyQrZv*V}t*k|9Tu_^;<62Tl#^Em)zXYAgD;iQULh6T;?h3|4 zFd9x&6v8K&`6AswN@-9m!Tq5KmvhM2aaRb!=u^BLmT6lm=seKgf;)%C3OK-#9B7gD zBp+?IXBo2my;?(|Qoyge41Wr0q$GQ?mVWE!2SFcP>l!Wj-!!|>K=1~bS#PfnQ=r#7 z!+Vj@?>i&VVqr58`M|o|PpC9ZvBEaM>S=AXBQ-FnTz7T(bY=OLhLMiia0!Wd5{h5j z>q#NEl7QJ3In&mX`gRaL&hjqiNA6U~?<=XKBiAA3B;$=n- z@Eow{<{*Dw^wLV!sxQTRvEglP_d#WGGz`J%nb>So;3t(mMZV3tqKG||+7JOe-tNr` zbYoIfkEy!W^T*n(SR5=v+#o4Tn{{31xH*3xt})Jz%OmGR?Z^R9*YfqAHtkhHc)GFv z;@ThfdevrChG(y7uKbkl6a}^Gv_K*12qrHx za>rJG1yUBva%*6=Y+*E|M1BmhdJyfnH62x))*{q`De$?z3429d*UnqcFYaf+0rY8~ zrMg>G)JB>)>0!ay7&GKB&mh5A)T4G2{YfoKMDUUP!mK1ns?<|G+{Dl!?UrrmYJH4U z-ywloXKy*CNd|9}etr=fkFn6*vT3Md)w^USJJ(komhp8q#v5=TErs1}(pE zx2DB25q>g)v?cgUjU2hPe2DHt=)KY{-@x{uHEx+#e`Hi@MpaG?Je$g1-4+`odF)cT zf-Ce1KTLaJw8qJP@8?|6f|m4rC4A1c5FL={lim05in7B^%qQK9l3GS#G&sq3o<>*< zLPhL%+cBkQi_PUQ9#na|PzPB5G#T_^6x);sxfbj+JbPf4YohB=$XF&SXr9FXx>g2E_ zQP8ORzFKb|$viSMCI;k7q1iCkqOu=u=24#d%EB=WvgXejD;q}SR1x;#)LJj2;VCkd zzF1uRvHr^Bu!oJRFm(c4Ia_*A^YC){!rZE|wErjp_q@77TewXw2zGfwR``aZ&{I#= zY?=Yc!#UpRNo>s#3(ImY>)$cDfrM+%*=6;&_@(W^7rY$(*Ty2Al$SCwBHz=?Nr;{1 zbHs#Kgj=!Q2Kc&%m@B;7wKCami_so#vSHf_ATQ!TlSIp6C38na(|7pxt3}mkUUREh zt|80RX?k${bwp|4c4?*J1ZfksyHf~j601!s)YO>K}E*Dv?5td zDH9&tR&-VIeWLO(p0OWc?1W{uSu=?faKFb!6BkLzD#Ea#ET{3PSR>&Q)|jHNO{pg5 zr^fexexVa~;#2>{GVHH!<{u{{gK?BXh{rjM`m+?oOAUI)e(bj87103r z|1&*r4Xa!1?p_e zihSp>9i3!y;r`-BVT!=G?2$m5O;JN&ZM~1_GaXe9AB){z zzZ?#Mbf#Os6#M``x{TURri|$|w)FN>SSqy?@+dtYxO^v^fVN;SkX5=~@-dI@A8d51(~ z$MYcjRu&%$iwS~yhaWf5uex z*L4d;0U9zE2(8195_a|oa|PT?qEPd**t|+kVeQhNSez_UP(oP_ z=vZL%B4UK37;rcCdmr;PTgu{fUrjqcns)kF<7=Z$7z z{SRv>I$8B?T^D7&37IG9^|Bv)n$lg(wH?@e2nuDCItt!#xqFS`Qhap_Bz_AkAS}$b zU|2|4=ltu1mvWEq(^r>XP+s8_|lsZgMtRoTjz)~+T=Zg^M)24e~ z7fD#B4PwI>5st$?UTfL^WK4F==~^SdvjiH-M~dM!4rd8wK=0N1uy?b0lMei~*5ru5 zlgwNura&%xd^|hHoCTj~m{(dPL;rnu)%4`D?!Kj>GMp&_|DAU+-cb=&Z}kIP*Aw0S zxwG=ePhysb+l>!cTayURXpEL0_rSzGKRDVSVRbtQ?lWbpxPHE#5VBA&`I(pKZ>ya# z&&1q;jW{JB1*G+xGF~#mJztkL87oXH6Si*< z+yj$DY3)=51>Frift?KmkJby?+xJ5|n%5*#zcy$F4;PZRC6qR5v`WPX+*XPNZ!l4Z zOG0rQ_2U(G5H>l zOZ!7Pg_h7Sp7M2X+W>vVnYhdRP+^UB_CB<&CE(UI?}-xW{c!0OyWyQOf^Y1Q0L*6f z`&BVQV)$2&biXKcW+6~c84`LW^?FNc-onX#$11d}6m#;HZR7w=J-0WpK)sS$c4?9_ z5O{q6tMC+?g1&v&ViPei-t$@rHdG+nX6C{tXQU}I> z986kpO5}NUq5YeT!hxxRZc6T%X{iHzoJsloBJ8Q4K)%f9K1a|0SQ#s{C0IyXPh)AU zSHyjvYz|5Zu-E_QO*<$nuIBZVb6B$wxRPz3U7A{UWZ+~H4a_bxxVx_|0dLeWS1WEw z=*Fy=p+w#~34O{-m}eIpGL&*_TSO!CE5lJVJY~>M*?vJpjU5~7tVXgree0HLilH42 z;XoU?k%KpceP2d>%)mQ`f9wI2HBv~5*1EVu&gUr=N0b$Yj`95?oIzQNuiDJO2u6)& zJly20^Xg676lt4+%@U>KkV)H<$L$l@d8OAolt)%DTeHE@`qcV8A8t%`39R1`B^F4d!IcvZSpuhnfz9Yd1*Pa^9fTV;SG4TxN$2-^|!y~jvR z;R_*tE^3bFx5T3-mW#lTKjWUE)}_zYFcaD`!pCNdPc}E{n$2g^_(PpFZQF_ZN7`KW zs3L{;^a=Wt@I+hQB49GW;2li! zOit*nt_8bz%(4Ja<=$GOfuf!Uj6|l>mNorX0hvb5@oNg_r9xqV`;mgz8^ZqI)Epvq zY1R4dFItB4jj&|KSKUumZ~BCif_DZDyfRVLXEE^1Ls-x4$+}+bT7>zcbCh13i)eLm zA@(6Pd*G{)9s2~=KE_89R&nQc6nC1v_NWB*LEQ>{^|>a~#Lv6?k}}^ni{7+VlDbN=|5wY*akX91 zCG&0t?L3kApDK8@H@6E$fu}K-e1~)l9duFHMrgB`f8xtr*G+J7js*~e@D7peVm*=H zw3`*sMN0iX6iiQ>6(C1Sp+N+<5emq-y0$wN6{9up#;MD&CfIKn_dU*%FR^zKb~}le zJwCIH>9%PizuE#;c~;=L%PiqfQ=U}K(%0PmwMlTx6ZSOz6vcXsWbzhU>PXAIAGUVa zo^oAMadUDI&n4q0aR3`{Pb~g8B||cHDfZf4&*54bv5F$c~sp|{DOMSchP0swc4$bmfCmZ08n20iN!^zDv4YcZN-+Pv7@by~Un?hi8=GIZ)m<}|NM$3a+a z<+$?b`_!cEy6f~)dQg>wuJ8u_i+hn1_gIbJQkWhn@qXHKLUgR|g87t1U3R4y6RrfC zac`I66r%~C{6u72bX57*o(t|#@eBo@YpRH!d7Vc6@nf>ZmOB_$oVltwr`O@wkJ4x$ zz0ITjIBTw&!j%br1b7xVflma^0%p*Pu_<|4ysBnt%cWTNyif)TV|>^y#=y3l?ymFO zjf`{cOeYw|Tsr{mD3l%AkqJKo>T zC+HwCPtB2F=GVAe*9%AprL-K0V|sCzF9!t)vg#jkjYu*A(YmEAc5DXM=qHB+99apc zLSM;I#9XF4Uo@^cq{H#VKv$L;!6?=~deyXTQh$qg#|@FLDtx+SvwK4nTkE!L5<444 zyhlQ#$5;B z$9U273N#FAf~E=@i}`7UawV`Fr8|Mh+h2&rkr5t1F8!p=51Qw-cQv5Guxp&())+-< z-ekwjxkD%87l9zkCCxynlZN<-!>jIHx$A@&IjElwcORqQXrzXZQrwhBheL&0UH63c z;39u8QVHYjU>?WF>mJ!+Ac%NTQf6g?evpB_R zHvn_{RfoC4i-ISIG4Bx(=Z~}&dba&lecfOeLk8Y9;l=iT221>-vmxt8ry)OJB3bIw zfr%;*WrCC5XAMr>y%K^ZfkZ`5rhSyx?cA*Drd=pwQgJQV&hCp-CQZkDh+~Lz&ojYt z8;Y@?Fm%R{53qG%Bx9EH`l1g#6$MooyeBCZDnGgV9_U`I<5~zno@Gy@3}=Ix0FP&7 z1J(AYn5%b_}DDU9Gm{E1&}^=Oy;lj@co=nw-cp6TRmVk<35!zGWrN=`G$-h{em%XYzRu0M(` zE3^e-IjYNU8&dr_b5KPrbt6JPG`P7L#`u1_pT?n@YQ9_!PSEe%7xpF5TwUzWj@C?w0FnOqdW_vG(Qz8<`B~PrRo2iIGg>k-&jumSGRZ4j4)iqp5 zDmd(t^r{Z(IdE-Pq0;XW$~7TBhA^BmRBnP>lQ)&5tlF9OO&l%!ecq$n#7X zH|^3eu?2415poEJLU3JKtsb2~Z=wI!I^5H^p9>zt#JsZ+H}-u73;ElhKe>qs=KhTc~umtWu{$nwv!;Tb^O0dY^NR>*k)PsNE=dD9!d>_Cd z-wfiE)Vre$|A5`y|5}y7AjUff^S> zlYdWnUIk|P+mk~Tm{xLU1Pprjn%CXK=e3PH&$~CTHB~Uce{z;u5BnrbjDX8j~MCASPr%k}?B3l?Y%=`lbc c3oHodQ&YnX&h$?)n4$59Zre1ONa4 delta 94871 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 diff --git a/spreadsheet/macrofree/waf_checklist.ja.xlsx b/spreadsheet/macrofree/waf_checklist.ja.xlsx index e06fcc6a0ae0ec90db4bb92539e2e0033be2e0e8..5a37fc9b7379489eecf0b73dddcb836bd9e130d1 100644 GIT binary patch delta 173925 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%0AQlJqORw; zd@X(RyRR+l?yoKSjU>a)+E|6JaY77A@A-Xv!R@24dUp@I+mk_t!Q2Igv0EaUYG}K+ zN<4yn=2ZMt!6@yk#uqp`^?%2_6Bh0!T`AK?#UmLfs!*)S z*>@<9#ReF1> z&s2vTFmtbYnx)+@KjUCiE!5$gqK5WPhq#Y-umDumKf;CHbVpMKI#yw2q)j=FFyz#+ zZOGDpNr_QLR{WU0d@H`%(fkD%Sa*EJ^uS&7yuD?_`t)O*QF+$?yD%4Nh4QRV$pmBk ze2LFH@==!*5V*4hrxsx#VU~`hNxo6S6G{Cv*l_E)8&PMYlmk_>K^|uS3 z+(SY~1qh=tX~&Xz&>H*K?!m;D6z?s+e$cF#6@C4+cA&8~ic^2VU`46r%=cZ1t zcF{qnWamQ_t>yDRm}M7nP|DtRDR965lO(((>LG2=aN=ADo6b1(_*5!*vz7Wb^zT~C zAN*SxLPC~P?Xa9#0B4nE@df(%CTb{UE2$eeh1%&9-wWhnhLg*t&p;YMSa{5WG$4z( zc5lbID1H}ZCt`4FWh62k6r%?wZF8&4Hl06zu{(ZWm66nW@v-P#^utS&fjqvk;p!OV zdx_i=_Dpxe@8_4EoPE(!?2iUSssL%2UjDp3fK5UACun)}phdkN-CfdqxExxu$+lH>?S4ip112PbR@gZvLlJEf>;&obqC2yDO0cX1#nfO8JRUbaR;tI#aEHcR;9 zvghlZv^0ju{X3PNxWS_20rK@Z!bzQv%T6s*{UT(v06caa0bkPfh*6JybtMvDdr~@f z6~jpBW}MN9fmIwPkOOnt68`Bwa63!+b;V{E;qx8_R)FMNKY2(aodL_R*fz|l@^a>q zmWs+Lb3j6OR%fxk%Nq(S;NRecy;Tsga*GBEEhv~U(xQREe6hz?NbGnn;O(}PN3KCx z&KoT|V-mtG5x1fzbJ0o6PAO?=o5Si#qqXiqm|xMp?iQIbmYsP%z!J9&`E(tvj1@_n zSi^UqSq+-Tm5Gp8AUQB6ISAHK=K!cTK8E_N=s5ZRh9|#2Iw5&~m70d9ZbXe}hA^v= zmZvgH8hZxCJboX(gz#@FXK=#q&dYE% zXjkHx=#*hsFdF_rVGno4;)P9y%^HxWPt{;Vkj)8}Y14tQRYleHKEuO@-;Eutj~sjR-`ids@9)Hjq&q-p*Sp>0 z;FrmZ^9nV+J!H15!SdWiE%DMUHf0$pvM4M6A-|acLcOb0{m*xVtee z!$zZ{tD=B^Pyi&*z7&>y6M__we%>`Hic>yqT4wjopZEHP(K#eJJ}F;*VULg70FOdUID{ri+DX-lHzn=R0Z(daNP`2sO!1s@WJ}?TvW6nuW$ko_mjl{v$a)%q_C2*o>kWfKg!->jV~=kCXDTC zw2V!PHZ9-!=B|?p_U8Di(5a}Wh3}+YpIkV7eIlKa z)0rov8e)mKpIgt-nbD1V$$g0h*&z&~H{!r<%U(UNr|fk}Ivm%d#?<;WY33Xtu4y$p z(t5J3{gwfZJT_bRNB&f@OX#7RLZFx|p>5lbh<(WNFn;($D$`UXcUl(l7-V?)l^TAQ z&;G_ir0KeSVlLPzB)?VnUCA*G>lNNR9d#=ZUwGkoZF;@i%BhuG5Do(qEvJNh56=LM z9Bv>?NYzi2zx7Vw3vm*zq40u9b@n8Tg0D6xPV&{h8=Mb-mkp<^swT{ANCmdMx%rO1 z)!yx&onDSo?54C}EqH8k@Wd{8p%ziwPMv#g_cA{Q)}*WTg%f_!U0`tF_zeY_ax3=z z7;H4Wb^fklNGWBxrlI0Nb=_@EI{|}$mR6TkwNPa>3?MG04xP9CTonWV_cukYF$HMX zj0rJ-(wnCNNs^@G{Wbi-Ao%L7n1#bm4*SXA6PjLMytO}?w0FN;<&rw| zU`<{ns)iwBvc`7j=LG(5t4q2m zDwvO-V&JA9|Mp59h-bgunx^ePgD#2KnW7z3xVLoDUDjDExG_pRSz0QF9P8TQf4VN8 zJ)={AW^i3bH|%Fo>eIIwyZN9Z_1P@A{Irz~o*mG|PuZVjQ~(sX>@+{iHctQQj%B#< zW4#NW!5)l8R9o44=^Wm5Wq%j;OWyERd9 zn9wxC)5MU>nE@FxZQWZFHjQsDt<{I7O{{AQff+wtBWbo;Fmu|XzrptRT>~KeNXYbp z$%Yfi_s!SGauU4QpGzXr@W)ahOz0bwl_Rr2>{L~s1Q2kh>vaE8+6<0beak?6+e-P4 z+n~@!sOf|&wRF+M^Vvgzw8RlH_J_4BWIg2Mg_UC%Hf4f%d8--qTA()4_a0(ilme^mZN^hhLbUFV1JkU0}wi7GXN*<75 zO{~~*4(@RIxcpjdjRd^cLt0zztdonDYn(X7IRjp%^*Zlg;5R)w+60KZ2p1N^-E^v} zjW*IBai3W;SWsO8G^$a*KE`oqIy#TRtUcA;jCiyELI5mGuh95sXkk`tgE9QHlP3wh zIT8g<82W7fU?`eB&{}UJGYuqNu)aC%>Zn#Vl%UF`p@n|R6~&~$uXhtnEwPSe14H9y z%76E_xdVNUDCyFWGDUz#f^@E?*dn~9g!j@*7oFh%-3TdIS@6a2a{LR58f+KaCJ_Iw zi(tGp7;QvJ)ne|ZYpLYdsmq2nS6i#s%eCF*#hLQU6coflMHmTuo#RjEFquLIWI63$ zaVssqQd4icL5l!7kQsgUuy9J4WlfsQHx+?A)LQUHryX`9;NheO;ERVl$w~Z;q+eyK`=&15rXep3d zWJ%k6jMaHLyhMv;86(DRi@$TO$ZQ?DOZIHyL--L)bkef5!;9}MN;=o-F8etQa@18+ zLCEA>lKlp51`z!^+5sk?5RXo`uTF9T$!Z8jucwZSPOh;Ytx!>~6IMEiqZU8ct=e5e z8<1}kgO>S|9Gx$S4R(O#JbCz5un^a9p0&)u?b%DgVDmwQvWyyKU6V8?R|f;~&%BdU zouES3V5pbgYSLaK@}5FR*xr4!VCT9h7+M)g3?#q?;h@Q3tTj(<>ky>=1EWY<-7m~< zy$o~7Qg`O%4eT7sKNJ;g3<9FBRc(*}D93nXo*yJIdPR|X59?)D**X(_K*zHkm1ZM% zhoLlz_0^g{g2#fv&oMr?GUwgr?A4BbOr6Tt+@i1$mx>f^nrp*Jlk ztOiF(Wvz3Td#vFNnPKg7a_~cJcO&}($?CEmWgc0L01JMjo>FSh0Us9-W3xa>poJjQ z;c^O-T}Tw+VyLRDl+2@64K1^ssXSjJ){wqB<+k3E8#MHUT7{4*N$PfYrf*v7& zOcBm(rSg7PSyap_mb&43aOTq_G}S?wn5!et{pb68<8Gx2jM(R3?HB>RqD;aCttUJQ z6YnH1QOXA;zzejQ%*O=zBl#(xsFmc)_#ht30z=DBp>5z+JG;^@|9i)v?TZpc_3>A5 zb6IAT^}w=MN{s{M*|Yt}K@KWQH-C4q3MUzM2FLAf7PqS&MYkD=JWY!rZM4uuxgF@T)r%K%#NDM3VojH4PkDCo3eVO|3ZqeY@FLf{=eye8r zU=Su~{usgI$j470Dvev>0E+osHx#9#5Z-nQb^qIsHi4NvpOyX)KEJ(ao zMvMX~Y#3E4qrkl0)g@+|X=F4Rg??QKAyVyV!}djEd}yjjiC4n^Od$g+{Jox`TNLa@ zss8~D)5|TiigIR4P7$7=5d-nY3$U%^=^)^}n$^(C->W_|&85$WE{2BlzW1)PoVSGgr@S{^?GSwT00S32BFcGk56y)qw#1u1NimnlCvaX+!*?w1 zs8BUgCmXrb(^YW7`uV(gzWF*+Y?tYhADQX3wV+RCR$*p_SG3FklGejZiy`NcWxs}d z?8$haYxL=#?t!uU-)GsHyabDd0B;)-MqejyJ32h>e&Tm{H+2$`(pwHjs4%T3j5tW- z9xT^UaSrkSEUIlX&ZUK))Akat)QaZGA;|RG>)jo!X=7#_pgtM98W8IGSu|ACMLQn#Yi{GUzfbwV%-D+S<4H3I74p#60@#8%ozRJqp1iw| z>*_afE+qYbaB+k7CB`1W-uGnbkv{k9Iy#P7BO!g2~)P-3{si2vKmtBPI+k3%DNK#6vr>x9Dak8aYcna5*7AcXFkabFp-7A%+R&H% z2Ps7A!%aW%WGw{6Klpv+Tgt(mx3(c#u=Y%|%p0MMK218*(V&;T$QJ(PrIDqb-P;)c zy!3EBlc*KYZ!seL#&gjisiDM9%~HMX;E=2}xp{zJ@h)0rY4R>yUDU;;Chs72up2g%~YJI!vB? zSc*&uwV}P`vQ=NLVcFXs*(r!~l-GwlgOzKZ^L#4huFz}C>A=$tz(_TFJU+F^v>}8} z{)l9Y#_L$_$EtSE^|URve2yB5slrq%MW$hKTj9^!H501hhVP6%a}HPS{_{P&(CY+H z01G`H8FJlcP2+ivVw~?36k1mF!#YElu(XqZ8tyCF^E_=&Fhb#lKHbXROf0brp+ggH z&Nc~RXuO6$UZQ~|p!hIe?9Y-fc2JTA)q;0I!}QB#lj-(7_$*e_xelk@e{XGT$?0gJ z9P8%C@?oym>b(Yn>wL}&#G8-Hk2-9lZM8C&BP1BuP4u`uTx6e?rGi}NF^jA&DQzLX z$fy5);_Y8}^_L%k-EDO2tfxX`BF%dsIEfD61S%9C=luQKWmptL9uXD)rr8$G@WmkC z?>|84a7F{(PsgAVX+l$TP>7K-E2^SKAZ)Hu-=jf^uOga4ym-Mo0q@%*v*VlyIVuVH z_xtP}zY zg$nCh-$W0L^)c*CEwZWGS9XnH$;{bLu62svbia~nJC)%)yu}VA0zLGPcdt8$Mb*N?kh8GAZ)~l3{bDS>w!k1lMwXB-Fn-EGn){1pB3k|KW1WkQZ_(SS>5Ce|Ci6=6{Z8fnl` zwG*;ShG~_ZDP&6v_8h*+IDoOb{VO7Oeb>LhNK4@bncyxnia08hhrx6DlgYxMhu5-T zD5&6fZfq`hPj@#1l06fTEv`*o!ZSCsYvT%T=$)R4l)G&Xu*uWbY{^wgPkCL|9&?I} zt9DjsiJFRthhbICfMmTY_HO8Wi_+8qa{OiEAT+qTxVXmtyV61O#PWLP6l>U;q3-fE z_PYuN*fRN46rN<&!hnmEB7e$j%Ij8yrIcYv;tsKdj;P%7bh*p(;pcs$Pix(KQP{@} z4hzKQVtl&C4F;6j5FHG5ORY@nzXy5Bmx5C4AV&k}z@>pE9l4>tvy>p;4~HXQK7|4JZ&zrWYTr>8 z4W||}_ueeI#CpwYPtv*X26lv8$Vp1?e6r2cL9GCRQW>K zcUHAmeLHS-Z1W*>Ho5fEXa^I^D^D0#+wi6KeH-y7mgSCg`g%&9`bp)u8AHpGgRgjR zo5o~3P}#Ju-DGT?fbU?eAILm={bG!;3n+gBc@VjXGk0AUx8MOT@VX%g7aTRWV6z`i zA)$jIt{J8wAFLzYG(OZpA}JUwlK)j?+3yCEl;LA_Lz6HU9~4^DQm#`W;-tCW3dJX| zjhuZB9C>FKEr0ARZoNq17X=L;QxDpATbartM{1sXlsk+>p9ocJ8ySi3Q9~K7qaOE1 zBLJ>1#xkqF>qs9@H<}qvHLuRDq}+hVHDQ)ZL}8-g#|vzl=DU&U-a+xJr)u|#EE^(^ z)@uVsbm0{UqIk&fu^K9|q$D`if=a4)x!$*Z3Ta_!dh^be$UDI-$@H*)J@;EXWa4)vD&zq^c3V@<$-}Zq5d~WhNrt$8NA8?AN@X-7lb6pI?vg1>Vlo_cn}sU z&x!79*!C@~M!G5hS5W4$QXlW>?KS&{q$oECCGoKgiim6t+_n005fA6ES|=C(^fAV5 z^gD(qOPm44fZ-j%9OGMMZ?ngNV%yBcn)|DriZ)vatlU@cCR<>Q&A)(vHgG=@s}b|g z0<5BQsifsCUku{pN_-dT!S*Cdsa@!>h>un8G^MfgYH9YpAXY)^U&Hj-pPpmS#*=mB zJzGzyk5yk?JMp^@3mGxeq`~*kZt#-|LR!UcMHy8}x6tWn=LSNTW5yARuFDWQ?o(}n zeWo3%z`K^Tgt&^u#{t?QdyaDG?IPWK1XaDPakHYs`ZP3I(}9_$=$3>~SBcL^44bMv z4u_|@*qgep!SUn9iT?E7;wK$0`#_A@FA6kIOyZ-rV`wvhW5w?`! zfnu%%YPGT2SRWQv{7lq>Jx9QTEsk?z2rdMmV)HA4t7VbPY!2hZQ3!>-qKcH=8Quv| zv_Cz*{$&12+VH8w^zzeMgHkPol&zt1wq0&$x`kc7+rdSdpp9(6?l%@dZDp;I@o5sl zakK}X0xH#IJ<<1fNx=-slc$X*22NRtESzNe;>u*WDI%+ig&|iTs-+bKMFZDoleXRj zvq)2f6xGpn?3-c`Z0j!;u+&Us+lD|Z+F+_j{F}Bx=OS9XTa&hi2gx2zdn_FGhXpzu z7x_h`%UZw!zNO1hh(ZhnGB*O5Ny455s_O-buj6DUn;okd8ttRFjaTu3+}iTfSd)#_ zvmZiWQf5lWNoWgEw1I=6tAYp{`{sXKN&j*CyeI6<6G4hYbMuK;Z!Dvun<5b_hS5xm z&t-Yfl@qC6lP6=QHR~-9AQAe{r~*D_F=+QDiiTzZ^I&}m! zwXa;juGi1+czDKJy2K~M z`9c=zeHvW&HJ8pc-}{Vp7e*7JD)>tD-;Ik0g5>!j16?ZQbMDd#D?8n6*#Lo%uO-41 zHgGf5QM1-*#!WZ#_IAnh|CD{x1wof;ZS?RzW%o9vKxX4zfI(>Oxwx5*vmLa3;H=WXGg5yc&6RFA;UtYg6yl6e7WR)_WY-oJUV~JVkC%3lSw=-h$C`?RBP=kN4}FDxSEQi6xK?tJDT+2Bk+1~b8=#f48;)rybXB*=ShIc-R@xe z5Jyh7kfeump64vIfK1Yrxw!3gxpP)QU3ky64N=r}(f2@;n*U6nA6D{|^Z|G(0LSNA z#pXdu9(MPRm7w||)hKV-QyVE$5&s{tN3;6Fn5NB*T84wcdc!R3LVh2!u{3g~L)yvM zX|6ur=R0S0`8Pu@*@C|VWlcTIyPHyu_#LK&Sm^JGW&L$soTBZMY=%wrsDoU>&!ob(aW4w-y;WZ1&uiK{THv+w z%V4G^RGlZbT?-y{K{mcTI{n^OrTvz&^5TtK!j-tsGXMqxBE6|e%z1%9K{WL-x;uiV zO>Tqx=Qfm~+!AalD}%&B-j*b6%}(CN_ZSoHrT0M{R@C><5^0^TsC~wS!TmZJeLS)> zIN00R=u$3`xWd6@gD+qcfz%w4HmJvZSw+@X!i|!E1~%1aBD(1ce;hd}4}X8Z^a^-u ztt}@-C;G@LE7kBH_G`|sqv2IQZm2|LuqKAZ8d=U;5Q9(tml`G)m zst%lX5~E?Y#M@1Me}V&jDBC5q5nXz9)#{O4fGgHb;Ss50mipVnf@q)FWRRxW+?({GvlWj56vo~G+8bpIuwYRM2C0;P1u@F;gITI4s|+ifpGaT(v>csz zYO6H6z!@z3YOL`=Q^Q&EL)*oNz6ajqPf2m_;Av?nG~QUaj9x$b!kGjH5h;##e8y&{ z{tZBYECPq3PWCiU<28qynoR#C)TNk0mdH*}(!wB&vs*U?@St+l2~@L7cl@J21Eco$ z9O8&$6ejBveWe?UXXek`%Q1aSx0b?hCf_!wrry4tLFWDyzqBdinQAAr0`+c|Ntogc z^ONZC)ZSPOtqpD^V+#1W3%}R(IC#Z*qfP>{bEL&dw+B`ehvjLp$z(}^w(unXacMHv z9q?u2XZdYa6$e`9|a$>$F)HQXVwjBfV8t4A3(s0nAI6|XU~ev%1DpzRwv6aX7ST3YoX&SQM%frs5LVF zzJaQ??@yX{yL-|Hwt~>7c+)}JSr8VX#vL`Uy73nA)HrTAaj&nyyoq>vp{1dDpFcA8 z60*P5fc$TMp5ScvU-t#VX*A&#nt&{8qco-5Bko#u3 z2vPk1CcI$GRz5#fgUsv#44O~VF+)=th^|N}>DI0ZS)q<_q_nGOG#T_YFl!^aprM4b zgHX8vbw6*XJCD@ioUd$38MjzOvYx=>$YatiGEtV+A%+Mov}+7CxLXAR{#T|i!#>K& zB}-l0#sVMf`SE`ZtL!K`2)nN@)2IEA@xLC-pig$KgC=-y%Wsio<9C;|46l%=8L02r z4((JS0cC7@Acu_d=5vJEEkIpxXS&NR8Rx>^-h-h0)lb6_9GyB@LdeGXv zy@xls_HU-6$i7(3a3M4Z^Mb_|gBbUC!PpOGDD`+z^;y;2VogZrL=17S$Ev9X^FxXh zfE8s-^QqMNVl_Yu@hFl?fSvU>FXsGKA9`O1RYOgRKUteBZ*|ld{!``^EdXG&9^9Py zlTR}8nGdSwz!dcn%+636&Oe!P20@cFQsj!%Cst%OQYx6sJ7r#pjR0_NUQ45-GZsK2^hmd8Fb&8tRiQYsWsa!FkPJ5?^8tv!0MO%a__x{uLYTerKs ztwwe~61;u$J?Yfn$0`FQdI2pJ4ee03heQ2_0Qc3(x_qFPs+t3bPRGpTdARdL8tSv1 zcpI6N-~Gqr<+J}r(6R0~n40}X5|AC%uS#Y;;#95(&bfl#WW2lm2>yTsX1+$^Q%?hk zLRMO`vBBbesCbS7%X94gJD$uLG-HRLwZGhrsyoPBmg^|4QxSAZay&I5+EI)~vg3fm z{aBjZUZH9KYji0%YooC9epkxlb-6dkZvqzUI4+w|HH01p!_j`+U?$_(@`&&CKA3Uz zt#bsr%10i`8q5(nW_D$<0YJesjC)%lm=6A_D4%fqob%=Kk@u?*St>F3Iq!xCiXIOm zvsctqVMhnJkoE2;SGg_K4n9rE7X*uOiwbS)^qKUGtz=rdTqSKLtk9pLSnhr&{h9|% zB7p1)L@l`uZ{^#>7I$v3R`Yx1qs-6MHH;319as4e1XLg1EkF43-UBf52uT6R{zoWa zK2NU3n(x4lx}&p7gQT$6Ry!F_4;z?;eO2G1lP5|L;m}_`5~r;)yL~G0S_^r92%w(nenUby-v>fZdUPcN$MUUmWV=Z}X!Z@ zXp@vFzW4w!Dl3>Fx|~1sCy-qluM4R=;cQ1D1S#bk$VoAeDW#Yipk~1YzU8LLT4O1C z2Ns_c*QCg+e%H;_FyMkbcVj=mDX3wQJK6ZuqjDWYCiRUDJtx3Da?0AxON3Bn2&;>Q zz;qZdgFTBjG)-b2yTo{I`TY` zk`g?qR0Waf=Do+$RE>z;_hx)6Nz(OKpj=ay&senbQT)i-qLMVIGEkl}6Ip;gbi807 zp7Giv<2V*m2u;nL@jJJyTZB0Q-ZtKF*s3|bs)60py!RD@7OhnqtQEv7s)$68W113P zE4oHpQ{9WrtVwc;Zo*IP3z#b!&GqrsBz&Z`z;hc+a)o`!{T>WdN$fR5sZgxqRpQjk z3$sne3Y#}HPpG!1X!EtufkZ&&e}l3unO%(uhp4*SUY%O^)QOW+E?V&&ZV#?Np7o@M==fVi3!5yW(_y)1{!?3`;McEbekYRES|$A1$kzAt zb5>b8UfxOxd*_G@)YmQ_o@LhvvtHqf5cAsS)GOHr-1C_!{W$u}=YecND|%aqMa9ba zXuO|?odWe>|4(jtt{1r8*-(NAA?`}>S}$u&Y*CZOL*XW}HCAJtkNk~8DGXG@vJk7X!hT$A0c;9r5puh5Y5$!&-z5G|O-(;4*nIrp}!8Wuoas9}?&%3(mt{|@- z#=rAhyL3`pT;xSIQ*)Og|5$N92=k-FbwsgG2bdN&4*BMfS|2^zf^q-Yztz8aIB%7> zp05z6V*0rm?Rp-Ov%>kor~hGd9ee9myp4*vkkI4oVf}Z)dn9)80Q{K+&v`IlZbPNZ zjb0B1zNKYPuU?|`ygqN=oZM_TczIu5%rw~Y#W&vCuD;v=L?>ET&p5rW<=3RZw95mF z*C(Q17pB5L9OAMowr~yW@A!?CFsS=Q2g5qd7S}u>7kn*@IE+_J~%;LMoB$xynXk+W)&3J9G&9`@5iWjDf>}@Pb z7_fu0b!TdI_r*G(ie)V9Q>vUS=<&PHy_MabXsE7Q;~%LNZA(3W2j3Qc0RFqacV(At z%Q)GdWP0D(=;HDztEevW$Nv#^l~Hjm%@#|5;1VQQaCdii*8ss~2<|Qi*Wm5}g1ftu z;O?%$-JQqfdpGyjtTl7in(96!yLMGq*Zew|nu>Q#OR+q+v9(cRb5zaFGXS~@QD(B3 zim|08>Z}%cN|h(v(mw^(;{8WIr=?^ad9#~y`-??E*K}v&+4P)DshP3%$msrR4B+`jqmwogj}8(w!%HaEPFb@Rr#eAu@#&#sEMuz zGBaG}c)!>XVZ_-J<`xfd`9Un(w8Jez9=Mek zhXOX5RQe9izaM9*iuIBf2)slSI$r3ey#Cky_TsMe3Wm>*CxQBc*Bb;~#jcdUw$&8e z&pl4GQM^~M)*OWY#V}0(UGQu=A}N0%=qTydx?d(jN=H3a+afthrq6oyVZYd?wG1rp z-tYfMds8zMJi9PY^RxKE<2Z8xcp*t;tMB|9=PEz4%N)ml>tw9!6lMM_ra)R(k|<|n zk>@rP<`m?oKdM43kFsRhk+NaH&)0Q%8!V2R*So2`d-lJvXPBLJ%dazrv%my-^;O67 zEJGPese7n|6y}Yga*fAlw3lJoVMTs22;%)miUq>^a;*R|3a@sQ*rY4Tf#fMKmZY|F zO*Lt$s=Y&?oXPnvOgT3gZRnF|krUix+#)1Sct?&uma1B6IC)c2-*Outc!EAvXO#ti zE{!(qSB8G>mXQR1$L6S(w;mi?k0Z(Rx@q2wR|F<o+K-UVtGF) zw}4&%^ev(qqknN-i8Ix>D_q3Nv-i(W6&ATp#q&E&Z%qaC|6H38 z!Y}$z9_wG7d%n8qsW_!+u;DOjhXrKfw3Sh{fKWa?Ltu8>qoOothlQ)GxpH-8+j5Q? zo-=DksVYa5vp%M-)>Gmc`eTQ$Kgqw@Js6j{nRgUNt5aXY`?0iNtRh(KJu#Q?_(pDryFuRXW>#w4(*NUo=23_bn^-*(ne)tEo~ zbmlu1JdG#z?ubeR_GF-}(=rwGTmcU9`fm$guadsNu?BesiK&OpJy+b2o70VJO!N@ze&7Kb4{0UP*4J@#3HY^D?zFD_zt%97 zVLg?A(uCV;XAvp1Xf1Jol57P?uO=u!=T6g zE?=ze@xa;NF#=YY__S}{I3P^|-%{pI|3dKb;x5B_=I>c)P0G!7 z$%~dtRD3i%u?;DJm*N~y_2(<(5-oK#!$*k%%{0kF7%p=MCTMpPgSas{#(g`qVpdc` z;a2=#=iWcXRXG4}?jdTGwI=t>>$0>4?aCaOkIFuqBwS~Ai@@V$fGc}BCC6QBjOz(x z%5JrLerO=*hK?eTC6rt8Pf#U?xTWCzCsL}}bguf5C5!X{w_jlxA>1FGbB6wGTL%$Y z#|uxqPo!_VCz5l(RvUWeughOSB6dz!#}U~w+?E2VQLj#eQ>Vy!4!IF`SqS5hpUB-7;E}7I!(7)l43YJW0CNx zju@Vc8)eKhd;6-j?n*Hc)LF!j{4+d_I!OPJ**a4%UfIs(KuiRp z8slJ98bMNW+U%c&9K%YL3O+~PP)>p2A6+SlF$aMsJ#_U9w( z9d`CvTlu5g@0@br%RGX-Cpp}!ge~b??T7%S?!xMze9)>y+^*Kk70~iDBlWGZgzY2q z`&upI+suASwD0!L1AICR&zmmI*PGR+%my02dJBv&SLogpvu7L_t50;?Y5-hOUo>vQ zkSIS{8&geW9bZe*^fz*WcO=w+kV;iS_Nl_CtkRM zi`2V&0OAb!T!}w)f8!9uu3bv9W;GS$r{8B}`$NbMWRyE`_JyAk3WoyaF&VF;g2+8Z z^E!7$0!-TVL?`8L`OXJogs2(&43y>Z0gBTJ;M?14#Oz8%7(r5H>emuqa(`-M z8e@bAaRZ(HDWpv5x6p74j!T z?zZpBO@!We3{M=GF6H{yYq{~z7zPNjBVSmv?%a9J-f_suJhrVObqK+%=Qj5s9TElq zZ%t1EYm3yWV$Wo0U~U$RZSq^$_B;^907I1b2VqHNxgH@=%bEPbSa@POr?rB_(Ua+m zhY!x}NZzVg|6y?t@2oBXwqk}?EY8rROls2O@YF`M!SqD`qLhWP;WGwfATJW&j}RS1 z0I)Tu_JGx)awu1WeK^m?L8saXpDhPAm+Wy~x(4vpiJ+^(VjwsMfq#zQv`UZ$ARPgG ziII>?%ls`c--$VYVLgmAw@p@G`Fs&T$~qYrVH!a`YJ#Y&;@26(3A`thbydSu)pqnc z^}Ry=Pri=9G2zdtSI9!deVE@)E(fKw{l{)*MEt4HwA6u22BQ`gp7kme<-%6`P-Sj3 zo-hVg;5bKtb+>Z8E?WYkGp|_i>#bq$Sp#_AyC@p$lxZpqJ{`(Ey5}GTL);j{T(~+l zBK%!xEc+KkbFZWn{NEha;cI$$UTvOkcj_y6&u7=Y(?_9y+S99}bHVRQTsNDz^{sF& zZIg(H7-*;GtRT%sgN(W4t1-klH#J`L#eZ~F1OAPy1dfk8ma=Hcb7%)nE=D;D?IRjY zzevY>RmQM4HEm@fq;dSS-1;+2F-`wB@)U;~s?F1Klw@!Oh@~gKZ*5_J!HJ*l76%Nm zAPN5PTU>9?2DrC&wc5{Gyb;X(u{i%bok zBA%DNf75~<+U>dj3iuatZJ{EaUCGY+~q@SjZ+H;sq0`X?Nen}nmiDX{7 z8TiKz<>qHT8T3I-%|WZA?VFNNY#V-IN}UxyU}0fWNE{bc8h}BCc@V2Xno2=|O++Y3 zw|0sOhq-qYGzQCmXS-ot;RVsEG{#6+e0u_0g)`#2$g)lv7d7%%xj|7SCF{G@^B}~n} z6XPk_B-)XQjwVrk%nFi@dC_{9x6JoFhx;x@A=u7Suh}lbyp*1)RHt*VNK61pQl=9$?yHE)V-RP1c5fxm@7uKJKB1Pg@ ztz7JQM~w$z91dL+7)!kZ@2pZxJE2s?HX=LwwrmABAlR;WWJnl&((_vpmN>T6cB+PC zn4F_{h2iF>(qOb+BZib`wF84gdEgfZE_$x* zZ*I{`WP0?o?^C3;*tggkKbL9p9`hZKALI8oc_~Cjei9j8*B6UnweRMe_^`#XH<$=F zm2fOvLc2n~u;GbSO{03L(l{!wX%m5lywITlF8q~#D{6+K7q*eJSF#}B_5M{2H(oa8 zUdi32S%Q_!#%^s|tY#fdl~&Ky37eEm;aNw<2pDK(Z^@8ttRGEyghj+3xj(y&Xn*0C z?{pRFI$;aU$LL3cxVE$W(a7T{oDntIo?H?|7W!#}idzt7%_IoTYi`WA_x@8BXLed* zuxhOcku(~KG|iy@wqphaA$l5c3hB?rpwclm12=CWA`Z*HI}FP&M9Tw*BkHg?D7HS* zl<}E|;$UQP)!;|S^x{qN0btLyh&2Er^F#O88r4`N66Fuq&P#%$chC-s(ZC!TGB@Yv z39BQ@Fi)!6B{Jpg&?!S;iLDd*^3vQzZQqSAR81)Fi>PKCuY>=ig^Cd{kW|aj0*WN4 zTI+UWon2tVyI{ElzCjAVgSTvr68@G0g?G6Pg_nhq5i|xO+lA3)mlNV%Q0-pk54Wq& zU|+bG5f>PclSOiEZx6+rY~#EjNC@0cs@xILBX?M zvU+$4^Hq?2o3qaeDBuV9weQ6|}HuncwamD3Df!qpxT?0ilFT}Q61{&Lssb8P?cUeH6{${jd=8DA>QY~`tZ|3m(tOFhm zc?8T_=j&LiFV@bH_x446g+Ywa4`C&BD8-I?Ubeo#dbNYJw#yW4EULtX6=bqK58qxs zN7iv*6;4cs{Ih4H-mn?SI751tyWQlfsYOI*CoxSl=<-*9?`WSJ_uYY&khH$D8#0c2p7={OD*^)R2JS%@Njf(^Zi;ZS znK_)<2oI!t5Ap8{rbB)sU69A zkqAfseq2lquiLe}L`5O)zg~_LZK6*_&YCSgNHaJ!3IwF|2+ux=BcG>{b}hAf#D37N zprhu-uIlJbTFh78Upv7wV^4zq_FxZL=s!vs6a-H#_EWEJ|LKC$!N5(&OnZOG9ge=< z+Ckl(6Dj388TmH|l8~2$UD=jrQ-PiS)8*8wG~UkT>sq(EahGzwKbx>|=QQ=~HA1?x zoS$q@tPg?MHVQ2i#fD|Y_Kiw^garK#G_J$Mh_z-|w0j~i(>DW4A4|NH=3n$j{F-Ol z!IVCrx!+hQ`xHrO0AUz+U`+r^lPf8=lR2h8$nrN7l3hj{r>s~cBi8CME|ktQ6E_`X z-a^hkv7apgXrr$mX(o#XE3voMz((UL{~2xo?XZ4m2C5&8f$4kqX11{nu+&!N|N z*ueBn^V4YT6`+jFF{rTL)xJ=!%_`2tUeYH>O#Ro<7 z_Dh;R_J=k8p(DrVsGlS0DIEf_93N*pbB%Q&$G_sZ*0A6gG2~uf&9eO-?c9#D6I>>+ zaW}&~PX&JvAm(jzRV9uEz!;-LZ-{TJOT4_A+ShrT?mVsL>8k>GyCZtn#_NTHbX>4G z>N#%?wA6n}D|F3K{_OZ2B>(P_t90j%yG_*|ACObMSh6;J{P?5?8qra^mQi#Z4a)>HvC_$evXJiFlAOFnANG5cOsU%dXcUIrrKtjFg^KaMD zXz-1Tr}X<0htJNdvSku#@opX>y}|_ByhTB}PSZUkp4-^BzU=}^Fq*k>(nZL0UvcVC zu?Hrlh|-FhrlfDtzdZj$Mwj~lE`)3CH2iEpq2rlh>~lI9Glco`-4{8Tim7G4P=x@ii2X&fqAiaqO3SnLhrUuQXP5 zy$NQSR6}Z>ph@kW?*zqAr)_ox@?bkFiNfTes!~mEX#xhmBC)C|`l&q}8;@Hbb{fF` z)gQLTD#ZvmC;Nyn1vo|OgJ3HcNoEJ_UZGV2qf$(AXFJ`(>XdyX;SA{%((NCNHKwyv zpw;6`XD2PsG2Kk7+>qo5ml$U!r1h%0VFkLDO#@dN48)a8-a{xiM+GvCsD z04@I0w4DET1!pITw43;1MGcd(@`>3u;!D_znZgU+M%1O&xvZp09So=Z_f}$uf~#vD zSnL@W?q1){sKB3uSnvocQ%Mwaa~?X@#CDA(4>e- z#7|QcYXoBDVEt)9EuhW*JyE5?)886P;CGSbJ@)^B!{i+2kFY-bjxcO3GW*@|kTvS_ z*`gX;s{@4>@$me7CDOqHeu+-Y^Xbvxh0aDZ(rTHQNdreEo9%{EUZMsjP}^&gbB_AN z!~FauNX&!=M8-dQffRHd8P2Y7@$x#$`upkl^<)&-RZo&|%0-f4&uspzvGu`IXRPc} zNqmsFWyoeZKtzUd+Is9dIU8WknJ&W6?cZn}?Lhvve(sy)sN*fE zR>Roktu5FEJV2O$06>(#nN)M%&hSLjq3D&=UBRlQDs$?}kzfcw`G|Euk6BMd_u>z| z!vX%UUX1v&57>5Djo6}^Wo`BZ)J+h*`Zg?LE^O^SKIF*7WGK@Z_$v5nxBel}oXxQz zsfdQbbEp>TRX|FRsLE)hMk1H!=sUmg6^YD4!(38epGm}<=?d+W&sfs zaTTePasHa>2?{28%pr}#i-xD`HCgoN!mfNjpAQNxHT%2PK*8Dw-n*HQRl0uJDU+SQ zDdF+rDzq+DRk)mcNLzJ~fYH?0<9(BUsUWZWfJq;J{z=O9L!v!_j+IyRoft^``jzy! zSHd*8r!CG@cC)aF(5>!`vy#09P};ftT%h5qTZneG!jJph_^|Z5@t(fuSiLdK@d;BzT#1y))I zDbJJv25uOM6}WrjYurjc4(y?AU-X51ogNJVt5Z=R(r+6el2XUbAsH%FW}?&8h`$@k zT5?Xkj-9sl&YunVU+%+su|&}c*UZ@|T@b+LE8BNhGsO=K%bcQ4KApALth_4s0M`+2 z`s~*tS9o;N)+N}sYwlvqqsucUw>k}@m9W$TZ_B*sin%ez?WK%lP?}xX6JdwOu%nzF zQ|kbU)|Typk=v6-!@g0grjhn=&4tGErRwGuRL2g0^V>u;C|6{%yN~zbCU|Fr=$&C0 zJJGvU7H92l59u=wW{n549yv{qudGJRKs#&l^9AlRuP(=Y?~sa(fx&iCk*2ba9z~lE z8noyTB+A(^5v<=^%EjK+NT@${g0b3h=c`Vki!4ta9TJNkO^7!_5f`huYwVea3E@_j z10YmH1YNxI`PZG0w_*Q*Ghp9=`%pWkII47To9r4OH0#;E$p2KW3uAwRo}pwC@LqKh z*5zlAlP^jlXh53KIBo9Ct*v={SS~IQDV_afQf6+BF*LG;lbTnieQEintBptP2H-#D zEAGvC^muU@VM$kKHF{3Bli|+?x*H90@3yH2=IJZBEbeG)6z4omi2SK6%`- zE&6@I*c)p{PFZs>@=$#r5k?w9Cd}_ST)!v{V0$Il!Ua@Ig*~%~DHp&rAvqM`|3aW7 zk2s3JkaC<*JYt1Lqf3qfwa`I786ezDdR8=P6p0G0b?B_cV zQ;s&i-n}=*@dVTVi*gu_kcV}=dHN|#G+o%-gjTh~+H~h}tQFcx-~ra3oV*m{_2|;2 z8F7=vYCpaEpjPobc7FE-R(Vu2bKMBOSqeXWZHDSBW>&0+^Ngg>Z=(m!+H#=bX3pBA z;Mshes=DXX3Gm0yeHvttS^%b|?l4nw9i9SZiFv)n{@)nF zopX(#T)%$uzK=ck-9%I{%}3J&6N+g=+)A$80vhJlgn?uw_P4v zpyG^ogI5GidRjMdfUswC#1A|7u| zJ|P)?aIJqY$85^ekLab$X=!6l#Q!+utT zqyH-pCk<0obRPSngfJ}+QrJ)pkRDieU{9CEb|oGbvM246VCJSQYgPdHVp{7OHLab< zRS_3yHV;D-z+<;6(()4)MWiV>2k9*(?d1#XLcRSJWM&s60UK&AII$vS@P_Hc=Zv#YjA_#pqZ;8Up%YShGOBaB zt0V#8B7b8K_AN27qFZ$|#Z=b?{9|%p_L$=@zxx*VdkZ`;c&0fEo{?oni=~98o)^E` zLK_X1KOR`i*aG445DR>Wv{m;^3!LiZlxHmb#QW#sng`6JU`X1>CB#+RK$1jZi6&sW_rG1(B)+nB ztG?%$>Z&sI$h+sri|sykHvo+oVGWw3T3eg*E($+!p3)afJEW92j7>!p+13N$04>3> z*MlT}v3&8Y^Zq)=%qMs96W2>HYSZq>Zy$JRvJ2k*lM!mU1*=SXDLLQh@(n!1#?|qu zM3(bC)>5#Y0FMu;!_5TkUN@V?IYoSU#{{~H16R_LOatwY4v!u?s)KnInrsLK#us@b zDS4oR1T5kNc3jDnJ>(p@0$@NR-T+<%vqBT&uZavXD-Gtc7aI%H(hTx2tJX5s-`$Uv zhY?IE@|NIFJqboWeIej$@w(c+ii{1zc%qw!X)+Ft=1cl;g+>}Z3v|?S{T5S_w#e*2 z?LUQP4Gv`87SE3s8C8xQjUw*&n4wh|9Uh;*oe#cz2W~*}xl#t*SDy?aO^2|Bvj^T!N-jH35-vbl z21w%_Q+)pkLRU#JT{eoz3qPH`l+^Dh{Ts%_?j`J!S7;jHYby>VGAW0@Hx7$J#F+

      tR2|4Jj%c*H)YHwJw0XLwOY5bZ+%_k5k%sN^y#6%;3p-UvNsB#7 zyj~g!=X!bDH8g33*i<0TLmOb4uvI&xplr-)P^9>JQI2o$fbBpP)8u+%W|3Yv#lK=y z6^2H#WIuw!zZC?C7E)z5>lB4H4#%=xcApil;8`p%<3P@W zrpvUZ>IZA{1IErS$xaiyO88&JvQw+M3(YbVKW1t8kFKxQXT{A;4JdyLJD})d3=hve z-S4^FdJqXW<1ZHycA)`oQaEe<=t*2g$A@!rbBXx%n3?oHGA&1nnW=+Zadd7@#`2j!mjwYlunMTQ`W3~2WA3O|JcmqBWT31hgD8L9N$zWnV&pmNY2qt2N3b2-gFU%bDJ_z5 z#uxxP5=_H5jcl7bZG;chNvG&+1oz63OX&q3@duYJ_HL*wS!$@ZF7@l%=UBK2G2-7R zVJ`-WlIK!#q4Y~2(0zz*0+B2R_^cq9i^La^n`{it}Nxw$}s&&Pwm4mH_WEY#7f z+JN^JG|@0C`{1{XaIFqqR2J~?X*cMbREsgG*P}S(3o2P)0O&g64)1K zw0)Ad9MmVzV-aVcGo+CiwLMsOLVC&+VEdGZ)XGZK_sJssOx?C`NJcqJxCu z?{s?@vitQX7V#c0Diw-NPI}@zEm_|gpwYh0nxvJM`+eSu^QNz$0Z<}PUT=H+ z@Cezxnu=woM}j6DF$=ZM;>`fLm~v-J!&inCL{CyyDNd_A66p2XE8OdT_v5-(8I(0W z`>?-WuRI<(9Y(O~^<+0eFRU97Qr;_0e4U5K42O3SG~=){Pv?lipln~d(J{L{{5yO! zK4PLW%Y4L?&!Y2#z3>oAEf9S5;VtdSFT@GOmZ4IZoMCHtNEC6*WQ9vcV1HqOcCU8n zNL6L!DUDZvnN$;ey>6RolE&KnI9`=hG65nUp5t&B;@{Xb!oq$II!kTUc;#I48j~}M z#~ktI-KrS1ll{_SAZJ^$wJ%OozepHfb?=d!>2q8YR0C6=2^l)?f`6&0vG7pDF0&wc zS`EyF=a`F46%WEypP8t-aR)t+z4O#v(trM)ilXn0WBtrkaSG+IKdJy_Kw&nCsguct zbj!x`s>Mx#}&47+X(TwtkwuL((ZRNkJZG7 zZDBv+U;%Quu!fU2n!-8ZyThtz{G+0_-mIMWJsPiUaBR_|&0JM4WCCx9@q9sxn5iat zaAhb_zuouqq8`#xMpA)e2gI+}e*qUWdjyU9BWO_P)mb&#=6!rEO7+R953mo71)yY@VH;GR7iu0M{?@saHYpB&;Qq)}D?Wq_Ayqa<}tPPHO?WLNX<- z!54^cuSbK#=86Pk4@!|Xgr{JW_}$hdfj zWYFj~D<|bSaD^bdX!^;jleX+I4F`UouKEnpzh&z17y&NI;W2CLiIZ(}d5T$Op{~C8 z_lh`pA+-rTg9 zN}^6g9!G?KBX~?zw+3)cn>Y!yUo!QHb$tmZ@%2kP^{={A30lo&5wdZr@&N`_8~Jo> zj`Wn+ApJl3rCL1PRWxiu?8;%B4YwBu?0O}9DRNbZHHExoXh468SDin?@cPZCO4?Xj z1EcrUDTQ^47nD zzL+mvDG~#i_w}c7@zr!s4j#I#fbVeBrNTMIX6Oeeyg@}Xp#;dN*v%@=HIkEQDbHZ$ zC%{r^m!;RNMN?Yjt(?YBA})Q{{HCZ&4Sz;55Sw!ENk#nDLVF`|OJl|6vIFESf8x3$ zd{Om!(&8DK1GP_$xri>cn>;XahiSKH+&}l@#5uCjWdE6YE*ozi@9GjKz30_wjkO6cFcs>y_4Kq{w!h8bFqgAQer47GHqHB$aGLq! zy%zP)!a?_=a&5K1FS#N&1Wj~Q9 z>*Q+9$Xv7mI{ua`e>EW)Q=IMO5R~ft>Xuw>^M<({@EC4dO#@7Jlz_9Bi%S=g1KxYv z*%M3M8zSsc^lP_VH^U`XL#!G@e)Rm-Po=SsEQ+Sb-}P$Z+IFntN$d{2~o+{ z)eBTP{W^`q`V0L+{@s!8EWND5^>Zq_nijtVlsmS>SA-Mcv*QD6c5OjyD7>vQ&nY^s@Cd_PfL_gOR4)>*ciQZhmCXH>iZAp z3A`2GE5+Mp4?(NuuQl!88GG&sFSofAH!bqtEw{-oKOoG>%`)O?$8wdAFj|Tiuti7w z*#a?XXu#tpUm~nT9M8;lH}O>0R|@;a#l~!DxZ}$gRgAK1przT&)CaGkzi~DFtP|Gv zC!7a<+Qk|jwPsNM1=Cue#Z=Z$iDv^i{lU`Vcg0_9~NA z`kp3&_Kq@*R>Pt-i&z5{BgCKk%jf0b3%sUK#T?ph&59$2M>|8cldw6&H=ZuB)T#oH zkN<1ub~lY4AIk>)loUF$a=Z{~BGw+3pk8v7TGpBg^_&L`@UP3ot^1UWRGm5;^a>s3 z%<}FS9JH;!&iW{>q}#*q5FF)YOQJ2=&Q$M^5N_&TI`28}hqN-i|6tYK#^pt6QnAZ3 z5pAFZ7fFhff6en1Yel9FQ~dkpm`905=61!|c02Ztz&D_SdbwEwioGvy`G{CK8x*>M z=hqJ~ET#lLbEMV4Uh_ZxfSndO3;oq~WiS}6{WN1Bx4+l?^&TWS_GE>H@$l3} z^9`$(A9&ifjJuXiLwaSd18G|OoZFW-cTuo3Y9=s?{N0&$@SOApFK@B~T6Q`U&-0n; z3v5YVM;8hMW}g_lSLAWdB`V!X3C)Z@O1y9i`%Yu&XN1&{$rcx#qA?#n{l`TxMz&9XhoiTzu?g}IUNa}TvgXJcwN3= zzYg?c0q+8JoRXsndxs@~{ZG@ttQo+s9R=}=h-)MiT&@eY3|PBwcrI_pYZ*{z=<>n4jK+a6Y9 z>3r9z4#A3n4Fai#JeM!0*`9vk;UnMY8%O6g==2X`qk^nmQpDwU2JEpBFA7eDPkD!$(`N-M^#Yo`ipA#S^_a1o~2AbopfGUtfemVFN* zQ;4pK&OwpoW{!aKZK*24;FIl*#>x}b*YM@_W7DV?r}0Dj=Ag~k7U9fX&{Zp$1HEA? z&J{x)f@=i&)vS`#fWoqk51?LTrlLkAo=-w%iHN3|r}G=5!t+0z_?@>3DKz!S@6{-= z-19sc9yd4B$84L_c#o^CPOy=BcFChwc5LXjc0h=DN3h}zmhebTk57+0P|a6FEBa7K zv>P*!Zy*3)v#ZoZZM=E(#yOqex`KR(A9q2b>SF{@>qob7!*0*Q7)%C0 zS|>m3l*F6%YqC%yXx$v~l-7@CBp3Z5SM#*}YD#ZRQ7|2ZSdA=3WS!tQ5Mc7JdjY6W zj_NP#-6uhZVZsl;#qcS<&d&bsXvB-sDT+R0h=l(WZx!F1)Nj0Jbh6WG`UP@NX9wU^ zu&La#jAZ^n9f=S>hfcXF=bwh5+NqmghF9K)zB|$XkqO*N~+pM^T&U4SB-r+RLkP3(&HiU>CX1o#lI5f)&Ava9cNBmb1Rvh+o#fGVW zTA%zR!BH%h(7`wJ`i$h%e<4d!`(lmYkVwYr*bjj^6xx9QMEZiiRBiJ#_=L z33`q8-rw?Une!f24-t`?y{d=F$r^neI=p*UD4RUbk4A)r?*P<1&IU32tmGC;VK1DG z%wy}*+$L56gyu+8n-#D2#5CNo#uE$4Xrnd=W7 zJ9EbIvUDfh8ID1&zxr3~3*jCF`5sFmZk(%>h@TShrSpw2EHj6C4@rVq2v!m5I;Q1| zS~xvgQXn_9a)AyWv*s^HU-fR@vvlr|v9X2>Tc$gpiQHa<_#;gys~{j_DygEy)rSYt3pXMy0)wW(-QI#ShW< z(oz>aC!5F>#eXX@oYgmd(==92tp7A%wE`whDZ;Z?P%d*P5kXcj)va0j-77KGa^xEk zV)XK^9)q-tj64R}eOltrvMXn4=7UzlU4AwmnjJMlvppa-=T>*ebcA|mzF*96r24Dv z)$=GcDjVfFgBNu1?HNkL{+OUcjnSPvuax0O#qSKn+%Z6&Pw6a*AHxbM1xBTwAMg(` zeEi+s@7=?|u`7SEgNi;XWbI&gvtJ28mVK)vGt%J*2Dr1+iVCOnATBATDXCeNpisLa z@6%}<3l*X4pTq*#xpahoqi9;P$=2)hhUVhSS1MdA{`nnhS)Q$Za6hO4egpo?(S2E$i2kE@EV_P>}q7CHpf6tawoWP?S;MghznI zlhM1cDc$t6WHdTG1MqKj56Lw9A*CFh9&sfMR)}%(KIWv&&mF7z^!pvvB83oaTE=qe zgxlEnaB~vy{|blu2@5+!G!Bhj1X8eh&joTmEt&&35UF>oL)?6HK-p&$!DLKld4R&? zgn5t&9%6kV+X>ItAYq1)lIO-FHWd`v@0oViZTIx_RK=sF{#cR7@wjBLYk)$}_=d43 z-UaPJIGu-j$JV1+vr!J9wOW99O0Seu^+i%!iUu@S$-pC4^~ve~<&^Dq4Ysy`kBW{Q zuiR+Oc(~llXMjrOn86Ut(%%hnTx_kW{@hDbbO)|Hq8mB!prdjp=)***iTlY&u%O(& zRBJ}|h?sG~&lGQj$aVIQ%-5KVJZ~`Zcy4s95~&$Mw8K)O0l9??mWs37p&%+=B9Bvy zgB~YKBv!4Eo^}r@Pyb{t2v~l-Y3iTuXHG+4iwzyzPjzVyskw$o4L&PFz>w3360!n&XoVxl2!ine|M?8geS;{&sR#UuD1+mTy~1mUz;6fNnJ>?bv%0%o zY`xzv=8tfux)v{dxm>RthWb*-$1S0~%*%^^)&6XI^-?y)9|@T0mKO;(8`9nMPJb!J zjO6F{bX_WhUREb`z9P`wZ!dO^>|Ji-Ds#HR>?UwO-h9wAVb)?Up%CXNbQ9|*rAC=4 z{{c!l5=CVAU=jPDd(Qc8VMny49%>j@aYX5>D8%c7MVc*@tsi-@UY$<=?DkPK_A-1Q z+qeZd<5kPLW41_BHLaL$#FV>AMX^H23!6NbZmr6U){E7=_4y@&9+ouq)>M!fZI|@= zWfFq+GbkVgnY0u+(KJwfT7|;odlou1jcF-A+6N214l>4nDRiUA7Y`%U!5l3$pECk8 z60=8W_w(&m=f@zxgQx6hLkJTH9n4ztRisTiOPb%b;XnzKjz(2TA7klnQYz%Ehtn1@ z;TTkY_{|X2$C$lqf74DD5N25(ycc-|wlm-;G_$_u6#As04uy5r7${ujfs%vyk1B#t zf0)h*d%r(N{_!d)St(OlCW2_PjB<}eI#GynfO@JlMJ|zY;R`ZZ5WxH8Z<0e=M&28Y!eMz-KDX%AIH}Kho7FVMN$UHL@-Xo6XKcG0K-a*I zm>pf(YQ4Pmd!j>mcdZS!#y%SZ4+KvPFk)>Ra~{7(2%Ls4U11ULczT01h_`s`)ydG_ zVO7WjtRCr^aE%WadAoKhF!m+{ibldssw1a2`>P=t&fJ0mWU>2x-kYwO$lTDPyA(!qZ67;@|FP&%AfxmDJ{2k; zN2Z4=b1(LCy~^32C8+en#W3bzLm$la@XYzMoTc__-KPHDCJw3h3qeHC!@R5SlOaJu ze&DJCAVX8}+C=e|OZW2l_43d>4ncOwD}hAFvPDALgnNooa(MbFm0&TMNm~)!6tjXAh7K0Sci~-SzaG1`y!mXi#J{}U+5m7Y z6$fp~@p@4n+*i=!BMu*zJ(XV*xAJ@D(0@^SJ@%KVThvN(qVhETr8kJ2^~i(s66Rcr zDa*l#SVx3Liht}&*E$Q{y9k2dZ+8D0WpD;`}SEV(_CO?8?G~ibnS;pUHta-t~WB zJF-UlhD0qLv_HFOP@|Bz)LhrJEFt5o_Pq#5H{(?A{}AM&ML=+_L8g%u86NZ}uh}qk zazu&@y7cGPGDqVQVIse*Ne-{KI(3=c%PH?pwb0foyTup-Xv`jj-PtSHo_ZONei^aHD@r9t{`%tajl99 z1Qht7POWf@FW*5fRj}JW=Lit0rhjVXyLVnSGv8ep0%k0pX6eyUTgU=18&Q$Hy3h2* zyx?!#0gxh~2U}wmZ-DE)=r-;}jY_4DB5WFoM24Q?d>Yck*AkwTv>)|r{V6>|x_`ga z6mgB6hu&fN`FUp@-)%2T3yy>62E{lYd zBa7siGrU&eW@s?4MWWKMQT1VOuyuq3Rcg$Wykx*^XYZDu%%Ol>WFL4!gGO zH^Q`5BQ4P}1Pak_I`MJ}W`td|ArcdjKE`qc!rob}6aisPP3rKXL(JExWGFq(cE!Vdg2?)UJ_v9BCx!I01@ zP=xYs9NrGkaS713SgIBw=x#ae$9y}@*h|Vw!u^OQuoCc7_Gs|f+Ce7uAY1I#Oh*H4 zSAOw(o$$f2DmlC(8jSFRdz{ia9d@ya_j*87K6H#@)3-2TjJ3}hp>{(vr{sJ z<@fBVgAusbaHS7!ay3q%19QZJq4`SmqrG_1!Q&|F${m06nfdnK9v{5=3FRx?QdXm4 zuBMV$aExS1jz)pDnv-biCY>NtN`P~f+&J{L(t0?I<)rDLA;DSYT8EdDMfp>`#SR7s~frT@j!#OML($8KZ zPe`(sie#y(PKlu!MM7A?((9O(qjH9^egBp=uDG?xpexyGfv@PT9o-)-!dR+;q=`3} zopn`Q6N`Xi243qJ9n_uq$CeR*AUU^QpaeeJOA5VchSD|n&zJoY*57;eGxVJ>llC^9 zVul2%!8{I21RF(J-CG=LwXLKPS#Sg)B_>$WzdZZ(e#ssOur^cB3)Z<5nQ+fH$E!4m z4{$R^{Ugb4AFXl*f2BYaM|htYRIW)7Z#`ctS9%A0FUtT# zmTwp}esRCO7)!x@u-PqLu*SX;NdB2!G&4@yyMX=I0422@khIfrQmnQCcDH0bKG)bZq`uo6FM3!%oB z6Y>0b!Q5h)|LWOt(OL2mUIVT%px5u2W{rVfzw$;zW=S+B~2jOMVv!@39pHbqkcUOo=u$Ag?F2kum4x{CXH#Pp2 zB7mN73%6g(3)j&|=SvllzY-UlqgsrYny7Q5C}|$Nh=)~vfMx<{bb|jDHO797N(Om= zO&Wt1v5Svs&2l8R7_u1P?T5_Q`tg|kt^*7L{P`7xSqO_j8gpmzN6hY*0eq<_ss4KxnXAlx}xO}7#`pbWvV zfNtm?^4XS@(iG_-Rwa=@j1ldNFbJ zkN!w0$QMWD!VlutY%U6Co!g2MMUdEBfisk&6h)D1XxgnK$CIY57b!PYB+LjI8EcWj z{0-zjo%6@TY*11J0=W_!eV1|(hIjpsu+3q2J)>ig@Up03 zQrIVL4l5*TM!5&^NzJI@(`A6YSR+KD|2*fTR8UyT#E%fX2>e@sjl&alzOt3g#hVe* zt{*|*$4;gj`vVzQ{8xI+l1CGaaKLOlldUHHa0}Dgr-{rjN&1J2bAuIbx`05*-bTTY0r2vB-!isdGpWI*=Pp%Q_oKD8JjMMQZne~F3laMM_Mxy-eOm7cg zMz*;>BTE4%y zF$q&1(w{Or=m`W%1yV1m8%a5vfH%+3Ma^4=N^}ad_&k}2q9Mm3N4Sb3BR7(NGYxei zMHrr<1RV;R=>fLcfZRjBrQ^e%FR|q=1wxgn9w`K?fFu+{)70}_4|I9*?a_wnnEukH zSAfpyZ*xChm5#htu+szjaq;92OLWo_LQPYbQjtMbr4&U&Z*$lDz)1nR#P$`vyB03= z|AV$l-#TTY(;sA;fo{`1SCadTzNr#lWzaAcyFE5+Jhlg8l0`r~m-iiDUFehETN3Tz zbJMHji#u`1U+GvI4+=7(H0YK6RHa=Nj`jy=`(PRy>j*_*{!@rtxP7c9QXN=%n(NXL zGRkliZtT?7WAVJhk093M%0DuKC^C5=zJbU-mh~1g>NlPqfq*?y*OkUYt^~Ah#nM}p z7AfNFT_Ae~5~ND*cpN-P-W$XDnp@z~m^xdT%Y0^P?eFHgj?Eo{hc!7F@WNl@=;Y;v z_*p`llV3ihGw?x*LS37b>iRjQR)9A*2)ueF8 zyKhnD+pL0wvA5plt;^~cO?*dd#91*dkNqj-JrH`_J;3PKPzmx=qT;MR05VG^L z=(z%17ZF5)$R2O40K0b%i`q8o`ub-j9#jUt*gsp{8g9be538&v;*#ugAyh?Cs3&ng{DWemx(0F zCZQCV2!(E07V4!zt}?$|A%>u{Y%fB^xYP#YgAQ+92>rhFnU<16@M6&=-q+p z;P4vK!c{U-s&tbYLT|JKwTkc(sc{ZF3mK~ArqwQ{#wn@{G5;lJa;#_-@syC|puL%D zT4c!a3)p0%o2c?*`^lie@&4m7VpMNMF=Vxsq(HjURmT;XYwZFGm9oN9@$8yAazC|K zqxbyi2l`0YoJ4*XZ_HYP=8+`av|A6g502_mKS@3DElv<+y#nJ2!Qlb&_5oPE#_+Qj z4u{KEB&;ViI2V0kW!=dSJL-%mOv9@3jDcc6x@<5Dh(6;WG~e|>=ie$ju1G1%CM(T= zR#~@TRBcA$*PZy!7=xgGTA>g;eqx04BgNfUHr-H>34|l7`RzG5f~5AVW~*}^j@rW( z*WLKXi)sfJue5ye&r8VWd?HI6UR<@uR?mSh+Q$XK?5#EJ-Lz*AK^X{J5Pu117PyjdnUD>T;oT@(g; zFy1Y~4R@G<8o=qCs^{LWntFPTQ9!0Khdl|o=;&jQ_x_m$wrE@AUg4i)*xRU$J>YtZ zA}3`GZ_zN1HE}D7Y|ilmXXVRLfSh!{~1TiSNSk7?U(Nc!F?sxV5 zD1&4oc7OaFnpTOtVJ;^uOg*fXibgy^QjJEqGOcn%k}xJ_*%0k6|0R4qEW^w{`xQ2o&u&NxBgDFd&$%aI_5t4eBZM=2U+9k`{{ozXkTlz*S`W0fb zPc4o|Q75T7m*Dd0MwTlV0k6dfcO^DvudR)!DHEVOkV(9({Zhnpz}nD0xg<y6Xw#Qcpif7+k%we;ZZOy>J$25q}DZY z?2(U|ae$wgVsSpUKFk8pclsqiQ-NP+7%$GR0ePbpm+|t0x?mzMLPW1aDLus2>na?3 zMUh4}IHe~E+~BIGmGSKOr@y|@`cH*cL+n*CfJRgf3RHGk*#tD!iG?ns2%mc~7^7(9 zaK7nc++Hi{vJ#w2I^Hr{r&JA(az=l}GNDs+*5+=&-9UK`eAN&j{@w)j0X1@=<4@_j z-tZwM;C%&V6~MCOm|lf|sIATaVZ8Oi*>vUs@qCrVDeX zBx_Pgo<36*wlHIOy@xU+R97TeTBwN;?9-@HpYs#?gyM}Hkb%F!QjH`lp_k7d+G>^( z`HE@71gdyde`h$dhx2NEvI9%w=(6*ozF-R>6ooU9)x#{(~h}kjl*hQQ1~ud z5kzx%3iR(XCfj}|`%x|ggx6kYC_lQ7^l*H`6nwHZuc5d5xO%j*PK1PFiB}#3I}@SO z!Z5^t{109nFRwi`1JLW0hvN(tbBu`MP6YZ)zn@;4-Vh@#e|!q}#koWmD^4lKNz1pC zAB)Uv5=T8Tp|VI=65NLI9$FrIEEqDl*ts9b6ny)1Ng5EcoHD>2+WoocEF&w&<#mJ^ zUO?9gm3Kl*ME42R2P1I!uR$eJfLI!r)JEAPeL^s)HZ_iN8oCZ`8`|f`bU(P3p#MTC zLvjxk{cb`GYl@go^X8y#p%`cuemOk|Wh3eXRxx)Z#<9(-rR3mj7L$X8ie`(alk3=W zhi&CYIso4|ZFYTMizw^nI<{k_JPDIfTaG8c6ES2|c%7O69XMw&2LDr%@Aj7$#^3~- z^oK1e8%ktNA`Sg&O>ZzSRq`n>Q3de_zoOUyHNpZUyp2l@3w)&+FSR%qZo1@MCkK7m&2luzai*Fxc0p{euH@#Ino zk+$@KBdpYsjo?U5)4m;en&%Q~^S*7IPpHEh#{&Bbq@b;V_=-fo#7uW<-c8cuEi|J0 z)uLK3xT3Bhy?`4H^JqEunYKOCNv#YxkmmZO!EsN0AQ&_whOD^PXW0@-;S$BFo)k_? zrKH_ppH((?5K5yAPA!IUbM{ZQ9%e2{MARG{Mh$@C($TT2onV09`SixE`bnQ)B*7&i zlz)JTaE?9h-ouSofX{Zid6Z1cmg;$}a_9vzc|*Z-^;>?YJRzAH{}vh4oSOc? zxLyaxfhOtCmZ_0@D2FtC^QwxA@ak=O#5#M1RpQ55d8l}H?zy65=bzgFjWLbdjssBKm1@TQ=9wPV2m<&{cNQD zEv_O-ES@VmCy$W_T0z$EEAL-J<-F%ap;;_DFbgWMPj1S6_1tMWIJo-t_%rYbzmdlQ){aYGY#H&Ti>(Jh+q58FJyaC5 z^+Ho1@$RMEFZYVu{4iHhwn!R)EjvW>2{gO?Nx8eNZ;*&aZ?2K{-rGR7mT#1u_AlsuU#SEUKZjcApUM zJ^meagW^B4s-_j;_S#jY^$%+GlFwytlyn*_+90>3bx)Y>m>nGHFx35w{l6XmTM8;D zPPE2a%HHE#iM(*q1$2KLk$J@X5!i1u8ca{kp$WC^jB`w3?33l$1^{}d_tBSFYf42; z_Auzj=f|>#xiMqAhRgox*aN^m;}(dqdQhljA@qYlHA#Pyrv&}GJ2=8(hj$ZY1>x0K z2kKuI*(QC$ER7q&uoBm$oqDEFqQa+Qi@=Y2P+e!%%0>EXjy|ynsFc)FVjTR=d#~g| zynEeNF$RlAC>_>_1S5un~}{FRTMY$OTr58ol8H-sbLzwi_# zX&HLV!78tPu01`yORj3Bj{HAiVLY$(z78>9`z5;X)+xI7y%9OA_<`x>qV|5{$+5}j zmo?}hB<15+yCpysS@zxYPwavxuQj5=%%}G=8=I=7Hm^ZsgfXwr%(H(76WKj9pq z{5yeU43gCurizjP95ka;AJdQmKq0`PzQTa?!doYi@zrf*!jWDi`q81W3L1xoH*8w< z#7^@@vx2%}^~f*azJ#w>vH-Js0(MiL$C#c2E@gj|Z)0wn#Vk+3Nr&Q~dk3hv05LRJ zYN)hy-H*}$t}V^KlOe`_v9cysQ6f-+-o2BO78-vRn{n-qJ(yj{YJva!Q9i7Nt&ii< zTKBppLDOTOkakCZ`?7X~H`c27IILDOebMJ*o8q?dEF^X@+?^86k!XZx8oGv5^6#XV}KoBB-=y$Tt0M8f}0NML8V z$gQG$Pm?QgblGR%Cr7{n?fR6;;;&(TuhE^!G5D)WdOl4#{%Kz&j*Dn@XKz!*)3*qo z&eB=iyU>T*KVWUnzz5C#F2R2>L{}juO?60%&iRM{SWBNtC?yPkSFj@&FVw~oux#B1 zeE0q3`u+&zZ~?LwT|G@Dm&o@n$=ka#i@{bMwqqn!U{Sn+?oYwNtV%tEC3P6w965_4 zZA3kKD&DvkkM3guqWIU&0$ZW)W#`nW##M{|&bZ^z<7D-zq8uU0mBDogHP@b z5;DZiVK<>o!cfO_fWUnOoCj6K!Ydpsgwn6AZ{fl1M?j)1J8iLJ8W(F=1p3<;_ z!Vfiee*r<*g2zR``);S*fcdVNOysMJs^tEaACQHqKuHf{z*%Gj?m=V|T~K7z^3(P0?unaiwh9 zB4qvB+Da^e6edSW#;=^tUldl0&0bFi0f+1j`&PLoPg5!C6I$sdv|W5!9MO0q3~{N? ziywwxt$P!v&7M?EZ)zCsjX}9yhQ7IftwfBH=|bB)!gEU`C802$W*u0Qb^BfjGbkEj z{gl^Sye{16)gN*?8Ye;(g87iYf`L(-rd3vcv$S=uN?LB~XWTLjN=z*9X$Ih&jj|%) z-*Ev*sxht?wy>G+OX7BohSHkvOU6XZ?4sV)tj#)EO^>p2Ck++x?t!kQe7tpg-UXc) zH7)dI<$GnO!>)feh*QZVYFGtN@(aoY#ugR()t_hu=LnqnV{9jQy7#InX1UIZ3ax}( zhcbmtx6;yF!2rOFS$KxugM_3zeS*r zks*aqp;eAT*PGY#)Mg0LNBrmWjH=_xN%gyDQLMMTv}}vu$%<;nlQsKk!IxbkbOQ>O z#k#*IPRj7MsWUc-BRQ#uoQrpLE~?~XaGC^XTO*V*7k>zeqqas z```#9o(I>-hy{w#;dbBW52vd{uvh*n0H2cMgo#nPT-T=BCu4v88KdA~U$o%w5rV8f5W9LT6Ewt`Td+4Qy6>#QsAgd51Pa4Q zyuF|8S{7$CNgdKEEuwno+%rC>CobAyuK~-ClqU`Oz*xpwt|nB)W$X18?4SZIGYql& z(bq*`KIu1OVNr}pXc8c52 z2}Q};K`?!08Qk=ud0TMxVF9>yGLMxI)i?~d|J6o#VzyTI(VS0}$j3!v*tUUHr_6eN zdKT{#>7OcV;A27yMgp#P_9kSx;#U)YN|V2z;GqZznH)TcR<6eS+Lb?Vp3@M= z#CDv-WNQGw)<@TWF%x|OzD*Awz|Ub=?lp&?1If|{D&dGcm5pFKd-@3|po@%i#T?3Ay(j-`9s{tj8JzGVR~KjKi%|ZY5G7 zb6xY<9!;&7HQ#MzCm4DFY|i7qLK*=eaev|p>+A7*uZN}GpG>$>1+ik}YQbk4rMYW= z?-AlRdgFda+SiK{X<7ZJh^N)9bA&NxTnzT6K^ZkqqcjMo98HZiiEM-$-Ay-=V8Xb# z3Jd?A9qw^1_y+n^<1jq0EF&J(NW$hZykzW8k@RJ+7!h*V`#AG0EtfH%6KxwKnWh*l zqDJ{V_XfmtJ%r2Gqb++@b)tl{ip_e21eZEN2l`1+2I@ ze~;Bo@E4JMV3Io$dYVt!ofW=C0Jx7l`d6V2u;=OuEft=9<_3APsuVgr(vXA9+!a>Rn6jll;AKAn3toqfatSobVd%4!LgdwrUlm+R}bz8#bcFuLQgJw-1 z-IIEe@|&~=92#gAJglIZ*P&5Zvapq({%}M+Lz6n7E~0k<|BIAbJlQU86)~yaC2#q! z1$7)*F6kQFNstfyY!$y=|7{N6c^*$j?6r}@RG%Mh`ASBQ-xsRA~0D)=Idv zVFZpqHScID3{Wrf8g)n-6KHJN1=|ny_&lAMV#YzT+)X<*yG_%qly9x--lR zUt!p&dgA=G*o!hrcCY)#7L#cK!w_W4YeFM@@BR3b5MabScE;`D4n*KgXvOteBCb+~ zP={qcIA>YF6jP3=sL&Pq&jJh;%>NnZ*%*wz_pl*OAZwJnlm@q1GG;KjTd|4(9FucX z3qW%Yvi7+i)KCtp4ukPhM+LtAww{rZ^KCN{Ci0K<`(|jwV&TY*iE@BP&u!iK*_FEx zhHg2%k(-=<^Q$%Y_@fB{*1^9nyhT)OFwp!SHrF2XKHN>VkY*>3Upp(_Qz8ep&peqk zqqmL*rtkPe_{ex3GkIWJ>qv2B@3zgq8W?@x!UZ2-c%co zgv{0GSFfEpcp+1Xv>}!B$tCFR_4HBzn*+3eRn+&9;@Ku|xGn#tGM+F0%3+j);;WR4gds+~8`=4m%OtAsJ9NfiM8>xxR0 zGHeN4pYmHI*pt=b!JuV7`~8ysW5VlUr*4y-j}BxK1BnsFsM5S)l>5J^UVaFY3oiXB zGS}6V$|&+`io)x~(}$x}g1vN^z@K9}BaA7ecV(rfen;zKEUNKD z?VApM-q$A%Uyk8OsP0@|#-;~kc94eG>Sq9bS4=XC9H30B%=^dfqw^S}PK zyJ&fR{~(0Cz0Nmu#(VWpHLC;}CRSZM_N?={qH*l%n44;~!_%pvzcx(xm98q&h4Ud+5CW zYm+TWQI4l54gTIy3K^yGu}${IpE-6BrtqQSE7*q8O9pyrsC4pR$L)4UmB5^px|dlF z%%+-#aenrw{?rmUlBoxHi9+KW%N1o-356uWTp{{jdgldZ=BfV4r5g>-A5VuTH{TT$N1L9S1C27ZHdrgzc)6C&!%j})?sDjlx zvxpdE|BLE-qD=SS!)kkjux^x^#(I-FcJJQT44{vp%bH3HHgsi(QxCGDzq;aVHn^cn zmFi=OFU~Qs+(sy$>bXUCnP>{9BYcVL!`LchxIQ{?L#yqZ4XH`1MWE@-dvnWvaGgje zWx!B&i&(Does&C1-~Sgo6OAoOC1t(Il|kmXVCdmla53Z#qRb|FT}Kx8ItNmRC6JJ7+_iYk^@i zYFO`c*CsATy+~&5@nZ7|-)J3Y8KpLW4>`CPge|q{$m<@1ZbszD!z@*ouxe31EPkW) z^Pf6~USbn>{SvT(6GzI3Ud- zfr%E@LM8MwPz4VcPn`Ty9Y-@VbH(~7^bBg=J~jw_T6JgQde0-TiPId$Uy7k<6B68w zQBC#bBZEz-rvi718Ra$Kg(?)o`hP~&EQ;d$A{yF>68W%7A0W5y-s^Vxsbbeucop3) zM+d1ro@jQ=ZK==OiQ;v6VUGh%H%7{vyyQPxdgs8|sYM`AN9W!2xH#J)ts{Ei#)t5z zoDaL{nKJ3*v|^#ALr%0dgBNHpmWH$cg)IwK1>R%HN&>&Tp_%4onLU}Gl7DS7g@N=Z z9ZTc4_UZ%&$^@V7nsLi+<9$k?|0&CMnCw|pQf)fhTZb&5ldMfuJ z`Tf!aMy2tdhW5LSQwHE$f7P4xEr~_*8zz!lfyTp>bm7fK>(Sn}w^~%YzMe(sUu%CF z4?gYq;^wb?dkk>Nvgr245q+TQ`H%qX?U?zo_B*vq$YKiCzK6q7f^)5n`Phgac9l>) z{12*;fqjW+YsaQZb^%{RZ)fHfUC{0C%j+eJj|Xnz>4m&HCvNdTYW!!3Bc)cBdvWIn zu%H${g%kZ+{Q1JP9*J0Kxl)W(ML+$f@^>Yb5Qt^uJ@1@Gl9$OYej+4~TW}5TvS|rs zcU}BsAjwuNoEmRT46kW^%YaEsSKcf_$7G|EEUli>DGkPu{m%%Djc~?~TgVRVibgZ= z)s7~PN&;?Z1o^(j7vJ$}?bGth2hFCK;wfr7PIzyJ$Aj2-$PY7p9aiKnx4w(!sD%onI)T+451(BYUJwhV7wR0qzwT&LbfWH z7hbC5Qf-3HihCm>CtUgQS$a@bjZ0hinpe?rzcIwLDj4sd)2#ql;*~69rAj~(GK|Mo zIE^|lws7FiZ*A2V)5N)98Wcy%ly&ka>CNXM%wDMv25Ad%EvNU@JVYZvp&0!hm- z+U-s>A~#FCZuU=1DNxn0BrJFUYgtY&VDI^cPVJmd65$dfLXWPOtt`F33hxsH7<@(L z|MnwrErN6%RX4kcwsi1&LypVIyEP?Tssz2`yCeWlKVfNCcRNg0x;|hE>)$k~`(&)6 zjD4}CX`(gVFO9*)w|J?h|@ zlAWyffA@zeTNut@(>FBM6D5E=l2x**|CNiFoAc0|n<-Mjq6~dY&m0QUnrv@hxt3Vo zOQRx9bbC%{#!dgfBTBS(=U_x$uFlurQ-*0S2N+h#_&!(0au!_{m=sYt=w*# zv3s%ln(emFm)qF%E#>8h2N4s~Hmcvu3e9=4EO4spdTA7;BbM}>%nXV|W}d`4!8NM? z%Vf7D=-jJ=KY*$vH4I#;ZA2#pw0HLi&~A^RC*OF>*EkdsDiqbaj}Z?1(7y|3W?A2U ze!n6nTMVpKmpGj0?&mRDrnEk<&3Fh)dXmX4#XE@v2zJ-O*+f6D6F4_}?SftUN1%>Y z8#Ur7s3a5>a^ZPMH%s(KiMHeMrC0%tzPu^bW++nBn@2ydJrp6`jpyhce$LjX@||3- zeVnZ*M>O|kEWa+gGo+LyP-$|9C1O;xaXW162M6Mu$-y3o$t3*51D} zV)z^cb4Q$Bpn_41*quso9QsN!kb+>lf>d3UvK$>?WCQ)%ec>B+eRgED8M(dSBepEd0j!XN%_7{(S=&#m2 zgA*}g46~gQv1e?t3vW>(arpnx2CNN(!bq5BA>X63f4RCcC~Z*k4$|s|Mf1ueV;Ew! zJ77?>d9Dug_eKBb?sL=Q97Gt_GhjfQd3NMVUd)a4V8GkdHzWMpqtKBeIfLE8?l=kuMjyPuBQ z51WOV*s^*qCFo;{e94Iv3kqmBJH!h;sD7yEiL)RjCiF{R?*ip$8wF!0*I$&(p(fD` zQv!F`y0=U%j9*VG(WuW-XO8>JqXh}LyOjTb_fLdLAi-7#i;{ux!_PiVirPNyprETv z9OL|MILx~nR(!eBgy44&YT@F{MJxD=c z-5GWF`;Y!>5xYtFAyo%wlY>T7!8SdP>QT(nLSk1@&NrVcVYC@FAWZ98h1w(=wBpf7m36Br@3Msgh&X^=^E~zE4t?(`s?|q z4KbF2%boIG^8)v*1Rtj?h#2+lXXdkMsdOjcb5T;H0!B6YaSVg19qRcq)N5|)Fz0yyv1`nS3_Cx(YlI&O@+%#dP!9m#y2H#mxI54 zJroIp_lHu5s3Zzp5oiAdX#xV_THE8-xo6K}S{o^n=7$=f`Qhp5z!p1Y$)&3pQcMN# zCk7FZ$9%&^jH}mte-`4dQb7kud%1FIj&Af#S$OgVb;cl<3$jua{0bF?9>}p-&7__! z#pp`8EaXxUGMhVF-!lJB*aeHCX8@I7gK3pTVLuZN2+;NuWZ-a27@WLuearex7}nl^ z(ksM*4R!eX(CaOY9VMz7r`Vjfs16~3eG@pZHs{!_716@1wC691iA4C8<_B?q2x)>I z4*eZ9B(zooHa^8V1}@H zfEpK;80M%5V%FC4VgxwiZz}Z-Ls*gEG*MH1GFBVG`pWkBlikwU*&tQ!{p|f$?&A8B z(OtTMw>Ru-^e>qQB7771wY?TmTf`h0Cf5#w*l?-fQl7bBq5A3to)7ogQG z3i{HnE`}-oHl3B}`l{$ar(4~f@`UDXE(DS~w<~0>zbEKEAvtFtv4SM4=_g5mr*URa zIQ2zKnkQo*DfQAot7?=iD{Fo1h#@@ODk8;?;t4j{H*6n9%bX|l+V7`RvNccT97FA> zA1gO7z8l4##bfuHa{wI#yoWw4991OFb)P`J-MI1^Z#td^&SSS`32{ z<@wwjGX8978dl71!{x0{OCyRf3C&e~$Sd&k+~F9mvQ0Bhpi%5h;#qOhUCdoHf@F4& zNkWo9r3*68F$@Zh(6OXDmmKCbi{wJNm@v>LjnnsxHaF)lXnBllR;N| zW9RKsHmjFy{GRN~-^|y@;lV?l^bRIWhqeJho<~gZ(6~X2JN6E^tPesbjT2Sn^6W>J zOdx>u@i8g^noYv`;*bYCrv*oaWQ1?<$z)bh1`j^Xh%ctpAG8n*Vih?C@ctXh<_c;_ zIYq$zhjXG7D(a|Pt=+0~qMs}8`GndYxbZL^$=yDTl)-ujH~^qFJi2r$p|+QSxMw6Z zFXf0<>!7y3ar~D+zMKAwIw>{7k!NN2@)*Ix_zc;8E2iMgvSK!SH<^wKv7Im(7FBa{X%%t)^coIZw;u3> zJJ}tTFQlO9Z*~>?Okee+e&*>5zNoTY$*Js>-?pL)Lx!T)ZATI=Oon#S9H-_qhvtSi zwcwgAe4t_;j9uKyl&(5Wvrts&2+Q?vnjkl%n$+WieO?FjCbhu+SutrYvs>h|pk=Mm zPOqbj?uW4g#vB|iEh+y;TG$~N@_@=%P{vNo7IYIK30qx*>}~~(YSWz z!U171Bp8m7`Gx9SQ&W9QgdHQ5pU5XOI=N|b6Iz*RRg2OQcAIw>=mxmY;N_^eF1lMHpuyQECuR?!^C%Q<(_OM*Xd z9kYti#~{l)9Q`@#A+yM6ih4ZUTHY?^!sK@Losi&-qT-t1uRH$y+-a#V>F#UlYyO{D zL-_!YB)f{JEe3!Q!&;jTZ$kPx;44R-reTsj(Wm2@V!$dXE``^v6_z$2)J8A4puxYPB?y zmL@sRyCECp1$a4z@)1)xWzX8Da*R`Q>BmRmPNiU=3R&Yl@od9Zx277Kq-O!94+rrc z0k7VeEGE*3r_W0S%>!0h(qg3^(bnT&tMD-+4Rgysv*Q#?oH%X+GcV+~zP@;(aLkll zJQ%XMaDGiD5+5pssF`i)gS{`75mRfhM)k%V<-_f&Ra`Rb7kd9d7CsxdTZTXAVsgA1 zs--#PHO=cIoy6A=S-n^3>0%{(|8C^#YnKg~ZQzc&E|`Z)neJt)87t_O+LDCxkjrc* zony-uTIj;_F{8v(SJl~`O_#@2BBgfWN|sp5vUkq| z@suikC_=i3vqTEr#Rumn#Vxmwx4wWgE0;_y(w0wepHs>?xCUo0UHrzR65W-r zyqU|Q_g}HD_eStOd;&C!nM zcSNEEYR}c=F?SWiI@XXZffLxAv6bIAkYAvD>Nd32p%V$g4(^)1@FKa#QuQ>1ujgGI zZVMqH0)%G|umU|v@-!U8g%V%mu^+UO$wDIa8fBbb_om1UL`^#G3dB;W7SG=--@Rdio z3yjpq!X1|AU5r=QrZMm5+<#f|i!VlCASvd@TAHY(q2U3>m^*%GXDUm8)^_Y9JvJqekMw$GCF3dPXfEMXJ!2`nVXo`jUur^; zMUOSSpU>fZ*Iw5ud$#pnVSyR{dSLyi!5K+C}_owkD$;1~CPC*YA zk-G_gnykN8YY%ZZ#I&Af9zZPNC;H>PLFDHi#KyRO$z}OXAk?kqcJFk_DEUjj_R}oC z*mxSBJKNc43*dFkkl2KjT}0WZrfIccurqxzEZ6OBXg>Wa+g&+xMT>&Z#(8$q(|zvp z`dUOjeeG>KA<36Pag>dB*h1+dA(yn-UEm^%BEqq^?jWzEq~z8bLLw4Ty4hl1F(Ptb zG&3BU%Na=r*vL39?Z}gRJLREKVW<(t{)1X>B2w;m2|{8J!jnx7Mn{cedLNYeo%LUE#9ZC9~)m^ieECHTUbj&*YmIg_8 zawP#iq`y&M9T}m{*XS&PC40Qeis@oW;8y+dO77_^klq+(mj<67#xjgsi|aI3cAC>+ zsEK0UX7WKjI4K?qe)J>h@%TiyS%Qm=XAY>Vl{jBV60;y;5&e5&0L#vNUK{wg5Q2HN zj7fe?^2>1&(MPFTF5LxL`N7+G-9K|&dR4irN@`FI|@lnKnV!YZh>C0a7} z>yINzPlA5HdtiQU6aB&D@%yvh^Tu@#@n^e87NWjpU;r9PHe6?%H=rGT~6?aPO6WdSKo)Q?0D6y)m=`Px+B>BhAM< zqmozqreNh|^99g?Vd2eyTlV*v5DQ0c#_(q*OHSFkGb`}KvvLnLU<2euLN_1 z93oDCFh>~u0P9T#8#o_a=F^iB=N_fYfEi}~wsk=W!FGpqY(AQS^QZhhswJzs6d!m1 zj37khoi5A|8e(vQNw?+5hTMWf{I|V7_~YIP#U+1e|AKEogXAEmtj8BE^4AJV@+?_- zlOMZQtgy%ElxD`f`@T5O(Sw2@@X8}I8(w%N;e2i#oekM2V?RIK!}Dz#LaWDdCjJe0ZOPB)zWBJm8qIW{r=vZ2zZx7~-sdgVP3aD#aB z=6CcyH7Dd1%>ExyR~c5-)`SgEDQOVt2I=nZPLT%b?yfD}-HoJ#Al)F{Al=<{4&Ct` zx!>jfg?*mA_N<9_-kDiTXG8vdLUcnf7Nvdj3Uo@{$w3+~Nu%6=V`?q$)$dwGJLV1r!mNzLZHJcf@?k;9xe$Y<*dxV8O1n_xV*XD z_KO!0^ZTGIhJ}0bGVR0X<{zfZzr%dYL!ZS1=%R^fNL%O9K;+X+K~>$gZ`D6|(>mqt zVbNiD>3XT;xqPt*8sX!z3cq~87K0u+6a}w3Xv~pQ6WkrY7^jo^Qbq-lB{5E=-%ymI>1Cyhi}mK*qJKg7 zdPg=EB8`2wEVeeyR#^d1m(R7@sQo)C)udtcZ|=@OQo5U8m!B%iyeL>@NOkTeQ_VuU zmMcWv<>>JFk^@y{NQ7MXCt4TF;=dRWjXpPLH=k|Hp=VA;zc)SwFK@sM&-c#yM&cDn5y-9dYjPwc{qTdctF=!F#V9&qLPF_gBUVLuW=J)XTtP&F&5Rr{}RHylvV);si;2J)}3n zmVza?bu%rKOf&1{hNr8Dr9(nzQCl9vQej^6P%Q{|Mm*(40=CFpT_Oj}M0$y?a_3*l z#K!>y7RJ;t6xXrG{F4Xev*Z|_3DHwbs>$7bt3B)5Ovg5|Yn)&hcP*wL2rwTM$b41WQUtrb%8Axb zlif|G%UO72+(8`P?t6ixb`1%vzk`@uhoNKM<RU6X zdb?TJRdQh>#M?A`wFfrpj@Acj<3AY|^qQOJYXP(mqx;*A#ZdZTM;Y&DJx%i|ql|^e z)M3Ifh~1P+DPO3`{Z$T$vA?&r?rVnQUwem8?w{a|Jw&EvThK|nljICes?Am28Z z?=V14-zN=efaIJ$i)j^oInv3J@VLXHDB(h7tN1l_r}k+_qhMh@EeXFVd%WvaCOWs{ z&tRuiD|`(Dmx&b zPf?Z+`Wm>Hx0vlvoUK_JbMUKqM(aJ~!ZlXCRFyt7XkA*KSuc3}tohdO`s?TDHU0G* z%`325ev!o9+N=t+IZyZoQ?q{1W|J|LB9W_5wj`01Qi?5wOr>bp1ox5Xvi50dtaJjCZP?M}N6cGWu}hv> z`6l$oWw!ka)?c(Xy3SUVK{U?Wom<-x1yLl@5p@$h4-#~QJuwjeIk5rz9Z^rv z#G<%jAiBB4SDkk@IuhWYTv!+}u3mnD+cE88drm zn5{jn-lP^4!B@CXrkT33<{S{ZtR{SCwUKHdPqF*?(`K$!LkzQw=xm|I8*h|BvbrnW zXZnKGwiA3Hx^@Y1XBHKTz#ZiMrSB^`KfE$ZJ$-o>mor}xA3M&JVXJFAal!dJdB4&y znUVp;?aCLodSyh%V=i#k1B(_r5>&p_9|_DHdUCPq7KMS=B%UXv+GEn?S-+Cs8DCMYml4gWApF*q2 z%K9hcfZ{YY;Z2LUV1qxPopTs{VLMzE8;MFyzCeM7*N7gPn_>UzPTOy1<>3R-PuqZM z<9O){q8YYHRud-%^meFnMFdD%^0Xh!?_Htqhdn6tmy zTrt%Kr{3L$T{&c7knN=ZL<>_Q`KVq#@dKw`g z+E1g!CBz}i9Qwe|@{4PoM!>&+3X+he6DU8Q zv@6e7@Ug4dlwalgjM&J-7`bxF3CsrtxL6m04O4gApJF$Hz2>qxfk~3sS+gK(iLREw z94j9(Pb9sfc>|f`g~;@eh(ugF-iUqo=biWfY(=yrE{ZQ>o3mLal}%jcL*PZ^A&473 zkmwuaT(`nYA8KB@(@q`zm`O^l>3r~UX50w$F z_x+O?)IcSn<&YMq*&5J9^ERDs5W21f^I!Gzpk0ByaQW{Goz*EUJb)GKW-LFhDIO^B zJ6()!TaNj#q?0$`db~i6UikChqCcE#Ji%FS5``9L?EXl<1F}=H3G;F-l`?O#MU)?K5?8aInF`bhc!;C| zu+1-7xyuy;8bO35cs<=b%9_Hc<4S!^eE8kh)CQsN290^#x!>Xt< z^p3=8XCA1uyov}lSkGKX(VG`0`DYz7Hqq2QA{E?ZG4VyHu4({kSAW90Qps#iNr~>c z2CBV=0yJ$VTTPPCe@*3OIR}xN7jd*j$ztw(tjRWgcE}yAW8?{t1xG1-Z zFx?9{5Uz6knW&OSgz&kd7+V585IrB~OVWQrppIydTNeNN(VQ(@P34pHI%aJVwY_Wz zNu=8>eY5&Lsl|!~z9P&vQzfV=N}u(ksA)#8df~Y;M=6esOD&wL9_l8=Q+P@E9iM~q zCE_H=uIh7v%3B-+Q_1Ars~mtGd2-)>vd~m{c^6EMNjiv9XNUH$vc5{NiOabY?H`5s zO6qb&js{SE6D4>De2iSbkPROQxHwF+4MsBc+=PT@l<8MAMeNUA>sh-`a)5DqDLbl(e+SkVP#Km%&N z=ZRYEug7Ws#MIhhz|C@$nuoXcpnaSZ9{Fcs0X95TJ?ACd*~al{=RW6}<4Bf)Xbv$G zYU$DWli)_orhF6*{r2;cXIS$mD#v(}ZLG3;PA2DjJm=(9mresBvXOYLDOSbco_2x5 zn_qYsiY>RMh)_HlfWM_v@hI_W*L<1r!$ACeUM2cgj0b$WE&Ukh{I_)J*76E9%A1+Q z!sDL#o(f7EO|jIYLmJf|me~a&e-q+Py}FEqbvJdq(eXV;RVgWjn9?CQq6)!ERSAFX zicL$g&(pj07)A`5a{noGD2JQ67cq}z$)YJ5VCDI$MiGG6mP?v`iKmkKyl&Z~!MI*m zr&iFTa8g8^-A&sppKOz2de&q=Ov zJ5Y-c#&J*Umfi%d?d{3x>I3L{)i&y2VR0XEBXFBM>6=ZS^a}2*A@^ zg?LXFBG_dPLB-s|fX``W?qg^Oq=wVt3H$C@JQa~)R36WpPJk!2I$)i96khF)y{1<9 zPWuvxdrfWCVy^in`=(&g8Zyr>Z3I{o<$1^NRAu3;4P5tZWs;p<$rlVfE~0(i<)f-> z1r9;X#D#k7#_QwL13>wpg_oiB-Mej?>D8e+j7dyGuTiK*4VFB~0BvG%5b;)Hb_L)bFQY!%VJb>~j=I`vt8q%x6-ei34kh{h zP259!1!BmL;{RQL?>5WokNB?eiT-jY>vr?eQ~|(+=7P&ujn&S3up2L>1hGSvO@n@| zQY-nfxib4BMii>dZr(`Ks}KVXO6eknO2L?=Ozd457ygWd={BVCJX3CkX%c=Kd7X>&J)i%5Kj(!J^$_I(RMZV}IJLdPeNs(*$PB;1MX=`v?Gr zQnMm>(Av9!8)i!kLQ}} zZ_j z{A@1s+5=}k9`}&_p_4&@A*2<%KN}es%lg9oDaaLppcwd2zjCr4SCHOROv@Ur^H0GQ zOVf+S=DIqlw=6Z=YA<4+J`ZF^)<7_V2z@5MYUU(O8kR zMnLp3MvZbh;@+y|K6A-b87 z!#w4|M*m0>cQwWGwSWWKs6}x$n&pzS@K$()t6kpij}6VYyd~dRs8TD0_3$(+|D*44 zIZ`ZbiH9I8)chY{R5IMTsghb>X%m;QuyUDcn53S^TywkV4`fVGIUEfw>5)ap{$Np^{9YqU@<8u%QVGFTb zYuxk3y6798DUjurQ=U5S1=lvb?x$V)=qM#GGRQp)SnFR+VZL=P=$;Bjb0(g1Jl4{~ z$i7++?}N2wZ5nj-{vv0q{VTzN`@177udrU@IU2gg_qDa_tH5dl|Aycoyr^Zck>LNBsPPH?8#SY&2i-@vSLO`*c zjm!#dH`Tf;$acyPE%W53zAf|u<5K+%W-)1Rwp8z~rS&_!Qd2?a(;T@tY8tifPTW|y zpxMBcL_MYn_`^>Ph`^<$Axh}4aIb*t*uj{Qmu}L=FYz}v>pZmV8*@xP8aXb6B0V-G z{<31J~O!^AIbfiCUP^sd2f=9OD|iRl7VA{2Htan6M;m}34xV?YY_0)U^Go# zRWFeqRH)fvdknkVy+e$S4mWsJqjugZ-rdi|pe?{6Kc*!hjguw3dy+w?p9T>;6tYq$ z%J;LG4=8D|r7CVR!vhf$KUZ>1Lu+!h3eBLWS&`~UUp*rkJv(aTHPM8izeVf(_=F%w z#8qnn=}H{nS~JFp`e>shYFlVe?aoYUN*iYlty}9W9>ePnX2Sa~dWdp1&_jHl2XCmp z$WucuD;n1vJP_8W_Q%FvTb@EmnCo2m_5^VAY`dV|aq+M-Qd zO#YgRZNeOh$Dter)#s++ROvVFF`$}RI5ryMy#~iPv*k(|h8Oc{Imhvj8QfbTfHhna z)pDok(|W$u%R}htmxG%^iMR!ZI#U%&B*nL3K^X{xlT3_TOgLj$H7sf6#6XWF)U$)9 zPt+&wwKgCQs!ok7C!XU73sza2ShgTcOe(N}fxhdPs=;waCh>R&M`4J{_VNieK-!~>VTrqx!tU# zQ};kq&8LQ(@7^pwpw0kz=jC{0SL#_fz;Fde$!{k5H%%#X(=Wg$FG?mCibFW6Tzd+$S!jd8Pjh=S%)JvSEWlW~{)V zxG>MgXBA7aGb*c_Qj<3{#L{$ijQ{aDZnkl|*Wq!yNh75d1=jGtUhmA6!;z2;4tSni1ElJpzbOzowhv>y%D!4vrDUf`iDkgw_MMBZnR z!jBzs#?cym_P1JLSrW(CLzf{5r^)CT@yW?TUFiyowQ?}w#pR{`$ZfGvCpKBKDDbBW zaBu01Iq!}Nl6{oHHM^_D9pc4(T*g*UoAgvJmop{Y=4;KMq3v;OfdNDA8J!Vc{-@6g z#>UecLS>u=wM^qQMG44>`Ni-kX#EuL8L;{@j$p@`1bKk&nSGO9*>OL`-gVbM%x7qm zY_>XZ*111l*M9`g&JH^w-Hso7E)iw!wU?z9A66(2hGZ#JD%y(V{#sjv}C=G_$ zkQx7J#nIL5g|y;$6AK#IXNkP|Nr3F;D7UAcAzGewAjKgL{q;?^|KNZ2{)^aP*qX%P zZx!n|m4DxHs1D!0U7~2=+nGm4#soXY8u#04@N)C@+Guhn&)ZyLM|ELUeP zC8Jg>7I1C&!GB@xS-wP>n-iY>r(RWKV_4};Fc(6R8t#@1FDO7{Hj9AX>=tugVzJ%O zLvOj-Z}cxXI591@i5uz)j~jxJ>?TwYlD%dPQ%6*aE(Q+qxW5b&KZV_rotla3GLhVs z7A$bGRoE=PI5h*P#6MziX9TxqL31lvWD7l2Ie#-fb!lcC6Y2)KPkog09~WUduyJ-2 z>Ym%R-!zCahSdywrt)5nuyby#iE?g0l63A$#Xy|atFj>`zUE?ZbI$3&1licn{4_gG zM6!s6A3nMv&~FMOYV}byeQ*E-sTl)Q0EY3&kF&Os_CnJN&=R3+1%SCENXR-~OjTl8g<^e`LAEns`(wwnP*}pUV3rVeIB)ycvY*pnWmAPl^N8i~jN3 zaO7DJe#H{I(^`?ZM^tkmT!$}akEXWGP}9~lqpf%PK)MQg1V6lRP^a9dRu*AZWvMF zFOp+%6_bzpP1`IL4(%fUso|esVm-*~_5P*-oNAPA5zbCrob_>-kCNDIOKsW-*feOF z-QP!r{qrskLQeYIZQ=mxl<=)rbY|-nyDa3XI$~t1bHi-9(lxH4&9RM`pIrk@Q4-C_ zJ=kEF>w|^=0sJy+D2J~SO)!yzFDx8J&LruvJLL_zCfwvZ85%m?+CbBe{zs*f;RZX| z5(hs){S8S82-4@LSwk>6@sMW?BkIIzgxtTPZfopd-8cU2HM$*Hcs)&)d`fc#|DDpC5ye=X~%*VCS?(P-Xkt;~Um^6zOs3r*U9ro@}omD8ft(*sC} zEgjO>EbQC-&0sZe|4TWnIp)A?qH|yf{964PuYT-eY~7_%SjnQi)Z&tOyI0j{(Ue8G*R@TELKl)_dNTE&DWO0)Qd$+m+ zppQt}`e&-KZH9H|DyZ}9P)qqE0X52ns^F7m@7ntu75?iP^DPd0wPS}|GKRfykJ6wcRvI( zm7gPE+=~r@%R}7uc-_Vz_$%39?|V^}1;xiK*W%HuqG`g`;=GrZ+-4vGhGJ{ggtMkp zz}V@~W3<0SW5_YFnV-hM)ILPM*Ode3mq!}2?Y;Y5tQ_Hxj05M<|R^7kf=<4 zr#&Yc>S|r+=L9PIE%r>n(kM14!f0I=zt@bFMt$@~n#>4s=#R+{5~dC0K4Tce=_V&< zee0y$Hg5yHh><7q>TXU<4X2QYV|#)%NPodMTJD8bmDkduJljPD-)g zCoJf9f+uHWEN%EuD5yv>OpHA+l600JmD8I@#3iU3I<|7+tmXv(!pZ|^H*QV5IGZzs@XyFZ~DXcj`{TpOpcb3bE0`3soYjLEI9P12B-mcI@9nZ}hu@`wT2N^f*5th6a^d}v;fx4OGIaGzNf z;homq0!?$TPt%!NcaqzzvUz!@!H0C(X~3^e1Vk7*TJHi@22RK#Aw>?#g&p}d(LhE$ z2YR)bK7v;y+bGOa%Gy&nTaf>Jd*;gJI79uWl zj{F`Dug-A^S%$?v1;DJeS%Xc7eiL8UO!QDrP469_Iz#=0x^0QADk*GJMX<`%J{&S( z#Q~fF`)JWZ(Wx04+ngR`N^7ie&oZnVEmwocP_1)rF##L+GDo$RuGtaZhOr^45l$8x zwTRlxexXWi67j|ra%+u!-YpRW z4VcXPvftYsG_i|`saL{J3pyqQp)w$K1|nw$A#=nED2PLSj$w8r4qpEyc7=2q{G1X2 zzXK!Wa+{*%NTxtF9(7~*F%x|voZ7ldW82lPGTaE*9ZX!X2FYOx))tSbSq&?~9EPp- zJD&`{G&Zda8nh8Ej~;!G%NeREp+|)jUwjpeMJ5D zS&NqU@tMs5Y9DGdJNX7kshffkpdq~KVr(9`kQv{oR1D`N+<-O)Cd>b}HlD&sGZt8lS9x`}P8W&7FHhGdZDgkC;Q`18)GD)7q z0RAA9%f`;uG*aREVDR6?2_h-1wIrfkHpek64+L+?%roI;UibuY?n|UgNk}%wA>rza zP_Ck0L7sRPD1Tf8IIk%hObU^waQzq<1x!M_kr9magCPpV{AS>e&6MxkrSvx3Cl(s( z5u$HEufkyoAzR4R+1guDD}!LZKcsi%!QcORJFpUvfWlT4hb$!3Q$a>Imlh|JiArcM zxpzPktWCaQNgG-t(Elf)?mP4|&+uRaPqP^gPxH5l;MX}aNK#0usgfJj17(5%)ddQs z;j1dsy6A(d{{i zZAx;`)G7vUqzxw%eSN|pM!o2Y)|O53PD54DJGD;nN#7I*K$4WUUnH??^Zu0Pxyoq7 z#JkD~m&ppls>jw?Ha00YQGcx46AErreCA-X_|e(=Dtr=3-@fiehYmXjFJ*KP?3#qZk>nAF-d@uJ-qf$?xXPFW+pQ>86pm(D8)*9-@H3S8hU*sSn12h9r9Y zIH=uCp1_}u9nizs3+B7!oYsfc>+AJ#!2NW~Q-^N}xLGar^l))w=Kii}USmr10y~0j^V>d`+BJ_z^_T_T# zm$umRYpREC)GKpTop+Fi9q*}=FB{Xg4>ziOk4I-)pbp3v1U@{>lKvzgdpxfPfTptL z*apkn0&*$KchRdx==iT{`XLl)1y6L?bj-W%k7GNCQB^YIRTWm}^50NH66(~RwatSl zHbPBgska2h+m5%^-w z1pOy8*kNIO(#^Y9U2%YLKsgz`pd!ywsY61C#LE6(R_psWcAQk-rsyF;hyiw%k1a(x zoeuXlQ|E0n34TK)Pc-Udc2B|?YOXzX%-iS(0iR2Ae%2246eu_g6cpsgMW|@I$K#Za zMr&Jw9cj7zN}ep(cG*DCZ-LjxnGKs?08R|J(7v8NS-UwenhHx4|c6s}RhxskLnS75| zwwHmB(F-Lz#YQTp0=TbT=*!>i>jw@?q2UI>OPtY^BV?@1$R^Z^JkHlC){};&9bPKJ zY-p(VR5!i4Vj~v$(2<>6NpBIX%30XD+v(sw_1pr&i34@ML=Sm%tAjE)XpqL9H|q7* zJH^n04Z*)$F*xbD`@gl-?Z=(Z>7gD2tAgoT(e*tD=YjqMcSK z&gdjfWzd6F!No5iUZ3AQ8HNo{e8Gi4zuR|QV#D7=e2P-m?+1rM#n;>w&sj&21f}=W ztx6T{pj9psDFw4%GwM1;TLJ$asZ9)^g7622BO=i$ZADzgIS!5NITTeDB`@VpzXq;ru zX6X!4>#1<)LO^}qlc*p1Nsv8}hU^LPX#AU?t1dQ@Q5V<^k-2s5Os8{3Vj15Oprp|m zxLJVN`U9E2=&PjX7(S?7AzVm_ItnH^`a_lg1!*67{d1FWp_;&U+9#|ILzv276b(08 zW*Q}WGi2hhki>O)AZ7119%c9oo$d6iXBFn&sKeL@*Mx%z#>FJhoY3o7Cq7UcWddO~ zx#uE8I*sOV^(KyC2w?7z*AM%+e2E6Dy>qzryPu@IW0JKNF{`^#c;uDMYoYeqcz)f~ z4<8`2)Cg4xze!|u>&kuy(v}sTC^|xh<|y;jq~Gq6D`Hymd{Bt*Kcz*bsrcCC3H>Yt zq@;DKD7F*yze4yG-{N!C^*BQQ>+9>oNHBiN%{}DkhQ)_RW5h#F^VJ%EKg3Vo)vV<- z{|MZC6`c+qs$8X0_z&zPC5Lj?7A~nzW!eObp)j)uT|-HfD`Ek6VqNgF8hT7AMg;RO z_6j4JvjtaYrwgf4dD*&A)?eC(RN9rYM{V1a4@mTYi``v$yU59Y`s22J1FSvnc#70i zwF2f6-lu>&>dH#w*)GKuW=b0SO#{mnWng@V`)i|Y?`WC?OfL}$&adQ_b29wOh-7)p zP$OUd4KON-k)|KA@Ls>1SQp|iim3T=gU-S!Xy*8PVh2#FvVOO(@#&_8_6A3G^1BW8 ze;YKhK7*tj1E4%!B91iv9mjE|A(4FWtcqvO4rXR_Sc5t2OdPQ8nmjTVl-{%>a~?_7 z%XS|a2cMdnn7@fua%ZM0xM))UC7qg; zO16v$|O9%5K+S477GiBCrHMVnhM;g?lr{%dae`k`7gJ1_~m51Hsu@i9$&Pip+< zwjq)X*I2gbkY@MLk##u_m>dftUa==57i~M=g`F-a4&rU5J1GScc}VYa z)rscviHoAb&_ouis$0OZKAVz|N1j>T-xLwNTBH*7Ibjw4A9<$4;}jB>`ayOhJ{eL3 z{tNnu?Fg5el#~rI=6VPz*`BMV{nbT8##Wrh4(Cii-($C1D?YA~pk#UL4fIYI#07op zA!C<+&H6cjD|O5PC|6YFxUS;p=ows+E6~+KiWKS>!U!P>`X(y zy|dH=gz^a-3G>5347*Efu!qJh6Dmv+K=!lu6Lew?J*cQFpQ_dJuF=VErTCA7WDsM-cRx!{-X3s zyctYHdd&{6$on=yf`dkPCXR5ciQvRZEYKe{25KvN&p>`p-yN1Qdo;_+KIxoZu?Y%s zFzJzS{`bJbt_hMe>e+s6|F`VdH>s=R9kCZ0DB6ko`omXAw1%)(wQM{goyqX`f;uOw zS{dZ@oFbJez!27XhTnY}qjTs14s-!`A=`VJ*-BXr8J2s6KcQkTJ&h9mkp*%lH@So= zi9{kW(X66E-s(uL-N?WzJ_Rf6>Ge01{@A(7odhDE?e{(>#;)Qh_nbG8N-BuVrLdOd z+;o(F^=)ZKP<(a?o#zn(lB8I<56a8Vfb-=t_~CrDrPZx2N^#0?-=L{H)XVYl?j22S zi*%E#^<14g23F9{L3z$AxVkXUc~_<+SSQH*6e1m#-ldt_HvxDO-w$y0W1F09p}cUM zqKQTh*iJPZbTV6mQk&RP93SfM(tir9bAT6#wz`bV%3_H?Lm@!9l(;RbHOAaL00D?G zkUuHbu}O(EsTodYPMe14^ zBf(JE-#?Z6p?(KlQF;f&Y1YPMuVaJ`vqrZow$AXfA4#=^g%Z&?W)Z0WW_(=j>P8Zf zn!gsw{+*y|u9MpT!Va*`sy6UV%|o+FfDA?{f47#{G!!DqVL|qt%TY)t+AQQzNG{Ju zBb8>YQ-ggDw-vU7il6$ZhdG z1hqV_UIzx^XWn%Aua=#@1l;-T?!?$#Pxq|$A`hu45O$d9qh?1;z1CEl~4lX_snkkkej zzWbZPnE(9?<$`i9QGRw)YzbWhDy1wm?pQhl?!#G_O}|HPt z!1C$w_=m{5P-A56j%Ly0+RS$IRG097Lg_S7tG2cUuu=}VT^*Mn_636ZxMK@i?vIZ_ zSd_7PR&d$FLFvJ8xM{m1-c=1aZlq+2?GQ+pk^x2FTIxEgJ1?p9x6DxTgM zAu{_W)-gBNJ$7A5H~9mSmTQ@Ue<$wM$-Hc5F_mg0>7tkSrK0n_8qE8sliZ1%)ANmG zx;Cy8BX6wR{KB}ZJ>Ibk8hW}a0x_{lZA>z~n^D>oR6%B^WY%hJGcctZc{T+Y{{|&j zKTRX!f~h0$JhEL?HJV@qs}G7@|K|4Q{`HGt<%v*{FQBhG$*M}(y@t6pBm)+AH~bUk z6<~GXuqo0kVcuV^XuG84R9Im%01#9L02%fT;yc@s z(gV5C0M%foD)6?*0QgLA$DlLgw=YU+rc@!a;mM42oUn4SGs%y~jXp)(kmRI7J`}w8 zm1iGZdayI>!>`YAvi(j+vc;kYnv8z}HtFbP*ZOjKG(r$!^^1=tG{+)d>3EM`9y-gY z1vg(WS3wV;-FkrJ&=>EQZ~9UKpKveIInEm-;8)&&dm*D*Y(`(gJ4*Fz7p18DxMYio z!VwKWc!d$d=kZg6UK~d06CASGuM2(&`~lITrBPqUhVHES1EghzoKz-laak%yvKGS* z-@!U!kTp%9`OLK|1YO!e{2LVdwIioMcxpBeR(2l#`N>`IoyXuZ}LWL7}%KIA17 zbwAU0&SrJuYCVrXEO6PviO9IL0}V80lN~6$kkMh$A3DhY9~~B5_?kl!tHX%hm3Inb zfo8e^i!I^>1I04Az9>ZhRh#L1yQondIn!KpVXXsJ>~3y_<2(vOMyNNQJ4>VL zw}QV(_B+hnk6)w3P=w^4c)^aeQS3);xmYW)PW0@;wL%#mW9RMG1b?DZf`PU%JGgzQ zr~OA!-I(5mGBOj5jl9t3E@K|i!}S}MPZfRf(t%Y)VS}S@)3o>N7shO5Vwjw`3Q%W% zi@At0cB@YqOYOAV9(E!Iac*aoPE2$l zM>uAo3kse%St_s>MY@*HFMlRXCG@JWfokTE6dJ{rMrh^+|JhgIzxkah^U1!$N1ieT z;0nldZL()S+ituCt!@__ALRqWE@+NUP=5?DhXmu`j|q`E1xX~ug8cShlusP5BH^`j zhj4P){5##bGPrP* z&&QjHHem#TR}9-Ey%tomKxDrKEwQ#sY~*{btxj|$RwYkdx?pabx%bror7}zG;O4y? zx$8J(YsM=JElJkpkvO-#*{cUrruUg9^c>_ zVS@r?ceA`AcLV*`)o`o-Vgq_#^kMj#JS~bj^*Q*OsfSn_*N@2iI-`DM6p44&f1)DQ z)MnoJ*$YS^jA4w>03M9Kv8guQjIkn&Cit^2yeGeECai;*xwoenHZng=rbx_e{ODua zGnSGppq&_vJJM5fa;vprUVTbQ4V!>0vl4d8vEG~?;174E^}K{o6O%JzSM zv|rI{E;5keqfItWFCO_L5#}E&;*ZP|iqvpR&idh%wG+Ab=X~XX*|sA_39*-Z)E$yeMVIm3=auwxilwvQ57cvmXIb*6k9{Ae;ZcLA*AM%ja zMusxY__=0ZMhuxc&{D|EWH=vzS=?{{bQsu^J$0lCGSr@Qx#Fub_S$B@remU!(L#)= z_$ro|hmRyDh7cv(QHE>}WC-3je+#{SJsshDk+}#*c>>y?XlQ zo9n^tXHJ>cs;q;2X_l4+qoE|Yo|%2=^`0o>h?$aqw;lf0j6&K>&(~G zEs-;Jrm|f}V_`6D180Ry5Aifv!!#b2E`JFnsdT!FYMBW&z8by-p36g~dT=J-<#Oko zO?M5b?mPaDJUopOd9x)s@dtxH5qIBke8Mt0woOjD`{Ts9ysz8X<@*!u;2;@!A?$y{ z!L_CYt`PPj_|e6o%emJ?$-P8bMgkl|-~`><;Ji;uWGOs2lw zKiAAwY#3g;EP*$efsxyH5ZhE-t9CWd^LnVU%2;51Q%z;)3!58Cv!K^=r>HoH%;J$JYgu;v4^n9{Ex-7VbD9flX_zPjEc;z>$BZ(Ie{o~z{xx;Iu@}dOOJ%#- zGLPM=c-tf%FFJ`opNSU|b$FXj^H2+;8R)rWaG7q9G7`6r-*SEY`q>{-Yy|Bz`JQmq zUShRPX2AwhQ+=Zj4EWMHb;u~3TCgMw8OcCPC{)(d1ep;(uzhk73Qa%+ExTpSLGG`6 z4?~z+WJsn;{?(MQ>)!e~my-Xv4&eC#j>AOwWKAY?cjv``%8o@LXn`>FurQ+%qx%B*;3$8y zh7j^q%%RpQ&_~KhX<8f%)`4;`MEaRRT=8l?A6=m#oi}&4dpZ1lpp5yJ=Rxlg3a(A!~QKPhZ?nfl~sQe@=L74VWoj%1EIVLxaucCV6~e5HFXW zSIF-YaS2&rGXPnls7pDm=k5Eg`d%;we9hUf-HK6qY-$w32(fExRjhYZVH#aH0dE60 zFJAO4M|f~(t+dqmIj8Vrre4kd1LbM|tO;PWv$t)ydCuK$gSPSAJmU##SHNDEeXatW zW!%em4wqMV`uAQBBL#A2bbrevBQ2gwi;k_Hz)ksR?>P7j-}3+;QbR6~+vXbsz#Vcz zQveUF^ERJ7nPCFcDS69k<@eQfMPMqqmTj zrEA-tVh)4MZs9KQIme6U+Tv>{yr!E|m3L1DQYVlMONdw^0v_W|6BL*(UjRWM8u|-iWXHb?IN<&LR z1e_aQVhM4Jl8*pd}QX~!){^CSGrn%+Eoq3gq5N))~#2C;bdyCx7BftcxNu<7@C7z{} zEo4l~PLO;*XeD9G5G(Ttk4JuTxwR{JOo{wUJ~^|WqAHVan`a>z^HDnCXo>9oKZdp0 z3=HA8b?fT+*NbXhe7zAoeM~_ z+m;*n%yzZ~LHe?@s!`$9!9#)rtXN$qAAVK4EH7_eb_1+CNlHEe4eMXLhR7MN<9n8W>rKNCW6pnF?9Yr*Z@6T- zH-;waHW?@Ur-e|)nG;#oaZuZ2%7Vh~D)@Hm{~87eP-HRmu!*sq4|S?8%nT|6o6{H z@YeMfR9u$EotMbSZGJ@$VA1SwbT5^sx8_CPuGY*7sy;tmCh+dH@S-F|-=hcU9V)=FlQnFIm#YR~Nqw4g!u8}p72A02PZ z9L)HeK?e+tzIZ_u{Sv7P?;j_Yz9ilIqt66i?_w?37Y@yPVXt&I{|pe85*{QkVWNQ9 z+oQM$SE(m+yGY+s;r+{2QCqFKs*$Pis#%y(<5IDr9a)Km!s(<>n=66wniOFhce{)K zrG>0}p;M7XyH>_O+qax(&DxnEbCbw>MN*W5?r{}fE@bj`_$vG>wHj`B+FhHsG1)t& z_bFKvv!89pfy=8_TDUuCQqVRP;kHm!gg*tiP#2=ApL>|a!;K%Zd>PkBh6ri9J9jY8 z!ZL^AZiIp4KRq(mjwOZ;(}(tub?oOz!vA4Q-+tUA{M9)U3`?5GenaJ}TeSmZQ4R(f2(if(U{?}ImFnyr0;4n!XwXxv(aT44QswZuF$NgE2W!4)C!0b!jzLIp z3Y>=-8|>G|#Pi4^AN@0vqZgg4wAjnKvbt(}amnr=X^XcbfUOJPXSJ^?_>XyczS(Z| zqT8+txwt4u8@qO2Kdp1WtFifzHgPR{I6HR+ zxwB_SO9+7RX?^zmruyXNRexmhVKu{@6!7x8zuY-w^sxAH!Taf_&#!|u=jhg~kcOdE z=r3=_!H+F30(?IQU!Pv9+TNbx-wsg6UkBgrfAg6S|K`(~?m`iMSp{mljC%R*br~OR ztHjjctMO(Y0bStA1Knz7^+XyM>~6@AE-MQ*^9WFjs;;E^%{;%KKcOiKJMgu|EKHyh zdQz_W2>Cx7?}s_U;9V;tlU1`o`gL=N3Z)H$H(tc&zV?S&seJvwJcmqemnk7eI;}eW z_2$f*_EFe&5ZvsJus?|t6NTsv4mWxX&00nd`ii+uM^3-UM#ti7=Co4gPlF=QYv2kD z&b4%auP=cgKrW*EV=ulY&{ekI=Y~2YV&1+zht71}uRb1aRwyq#m38rG8h=ZfdU^P# z)6=R*43`-u*wLCE^+`2?-Pq7J;kxzwN++%{h6k~pDwHxT&WzNmkKzkT1PAxi)>rkv zkIIB^kYbe8d1OEXkWzT*!|FC|xS#(g>v~`ky_cRaT;cDwpt#zr;3$rvf>OPleR||a zr{>Dm=dxJUzCMxI)+(i5V$CP8)i@T=lt?dNZ7?YOPxf&I#)64!UoOQp1w4N1lQf#W zUS@O5OX!}EN|FQlhcR)Yv>>?Us^HzlQX9Pwq`kPwrbJ$8xY;Oq_zDV0XoN+zL-m2}cLe_0rS&pdQQZc-jk`&Y?9aW=@ktBgHJngdMJnUmsj$PK5*R@VzSr-#@Un;Jux5u7F>aG%nO)gGnlu+lSKCichlVPmk zr_!^dOVg)e2!p0VfWVlayFlpZ!QkV$k2tkn9KzZcP}pcI8BkMAaE$JeboH6U1RgaW9QS(+7@X^H+ZeTqhqCMDQBsOl+p%)Z#VdN1c!pqZ7NP4(K zG`arA-xU~K8D?#88PI5h|13%ycBMB{0cg&oX|XdAF^-7NY-46I5`GW-ZL}0vdNm6zs# zYo6Cn61P|yrO}11VJED9_@YZ&9^-fqz7qLG z&S?h;^|_;=N3($!BbaE9ZnKR(*`PnKC@*C@k7N7fvC8jV zjo-VSm}IfOm9TgHJz?)^npA!}=RFqU8+T(78UY)~%ZqVS?UmP+C3S`VO<)}7144g& zsTnRC-sW5+NQOu=qR8iK(7HYe)+3eIU-#L3X>?!k@FvySoWrjr+Oj&)Ahg z*?q6BOrV6XMQ5;BXcMHnae2Ex;8V2?A|Xd8(x&il)wGb*N-KOTr~4G1ms$!yy7Qv; z?W@c*I0^Pddc$Px`oWkZ`+os7g?wB1Dvpi$yl+r^BQ~BGpXl%O^3;~~DAu<%W^el? z+U+Ums;FTmol>$x9IrGhF6Ws7^Em6a;MiqK`ZI+ms;12O|$xq@SiTB_8M;10hj4ILj(%AI#2$T%6a zH4zS_Cyo5q>D$&zN>KTpk+u%^Q(McYv1jsj%;T#-e$KGO78>^RNNEg?%R0QyP%@-H z6*>xlNOsp@WRQyZDp|c!zkI?HSM*Nk$a2|Ln1!2&2S}pfV<4gMm+Em?qyCE~-|umm zaCDZa(=KRW?TKLtQ1JO&id+^MPammyvm0G9Yhot)z`BmseseI5d4lj;N}-aDES=%u z(@}MB?yY{YwNKv*b^WG3orSxQc6$A=n&usaln*jM;l3mLO+6X0p-{C56CF2=lMy zWePAP-$}z7F{mgQN3eu9Hov>tOZt4FqHOrhDaXIA%)<+VSFlb5PttU!mdGs0MCv;$ zi8x$%3iF$Q@vm;03_T?v?F~$ef0SB+mV9kjRsda8iUP&8w4bjB1$Mo!BAnx- z)M4o?QKebXh$CZLfc~08@wG*{{~>5a{K52m#dAFsz!R6|4z%X9%AD2M*U6ORciXk@ zK}ktIeOGH2`Y7G!#B6?OTW7~4dR?Aw4M&o-q=&?P^oE!9nQEePt>wpebk^(i>z1y$ zP2z9taqeS4is=tChnlQ@M7vpJ1ojUm^|`yjdGOKQIR6UEc$mM0(@p@74MyqRl;W2&sU`| zreUt9NquK}UvH@a^{?(~`kxxe^ivaa*;NCU6gYRdl2tsU&Ruz(8$;M9~|vQ`dQ?+5Ffb)*v~QklawHf5(wPEKu+TvFsLB0MjgZo zRnQZp+s_XI44$XDw6hg$fx(nhshe*$?VB+OhK1@mJ`s?Z#gN1@|B6s_{PMrqAMPyS?nj^0Hp z(yYW1${|#e4**M7(aR+z+gGnN*Cf+X2T>4_Jd{oVDrg>@(a;ZmxaZJPDw+d_ecC_e zLQE1N{_YhYKA3c^P}#@bbz8@4Dxu9x{2KGa>7(F>noyFti#T-75Oj4x!>(6U!4HnM z{D(hNS{3y(q-5P4z$_yEs`Kb>=#W!(2^~0KErH+bg|ZF_|F`u?1ta>+o_Rs zMZlmE-Nm*8)TV4ybdl^B9j@nD#EZMt32?^yaJ2J6))p-GyXtVXCGQ&fBypa|!sWgd zZwq*{XMMD|p9HbyNXp;#E}Pm)>~~AEzbrD}1MBM-I^H0Na#Z=U+tenz!DBg4{-sS; zr>a=RZoLuPQ=m?dnaH0wEJOfh9xk^SxShM?ofH*8;g;BH{NL;?Qi{PwD%OUx0S)XB z+O+F=cm^u&hxYmqlXmn%zfXC~;!UYa#&#>zz3cRewXZS}qrE%WngTrZ2=|{pSTG4L zi^R~)Q1>S!>+>3PQ;z7SL0p?NBF$Xf5l_5dnEZA$TCU5Q)^5jV(*rc2@l7M7-P?hB z9YIie#^5kCC}c?=ojAzOwDR`6=H>GI0cJGz*YmH}t%KLgdH&O)$KLfPT^(5_rML2` zY3Cb9o(bCXO>9!%BU^aL^$h@tR52vRVOMlCVlNUQB0Wq8Q9cWHM$Ut!3S^UM7fyFRUr83Y51IR=CL1kE25Xm7k_#3j&IYs z%hSir!)NYv2aPjrk$6)&DMS14_iWqwjU0kwx@wHB&*{_P*2NLk%VaRY+NRzuqc&9K z>8-e|To;$D!sok#u8Z~Ci=ehwYc;P(ShNW1Ghvwd zWZ=32^1F!w02>x74&~Bf7jW zo~J(Q4-;t|MU>L3VG9s8=1~Bvlu5Qs`S>5p%LU%CwDNp~34O;F9@5ofl99 z(3^jh#E3p`oE#>(=9`n9ROZRwbpz|+ z8H3r;>xQTgO~U+>Vk65&U&Ql%03ZT93q|^v)<22ZYEH-24hI`dsY@wk9^~thE&S5i zg{<0wfxeUepQhh)WP&tp$_ZLV7W8$DN!uHIl59Gh?0lzOnS*8m)f(4I|BA!Id4>bs z7+LSF(!A?f+?tNH^R^(kB|WDj(1S^07+x54*-w+V-D-xdc#uqyxYmH zc|Qn-AZA@3_dvQxL355kvw3x5-v(4>8G(E9R%KMAJo3>_lo@K$)^KKLP`6M*#>&Ve zbhmE(-~^3YL^viym&}B19trz_yYX-0?UnC#BS_2vdlcz~>f8H;N)6^V;jsK68e+6_ z+BULkppmF&&mP>?WqL|A!I6uqE+)m;l?U#&iBBGhByJmC0rva)^+xYRBh`+u+}t98 zyZdAd8Qt!$j+|eG5~v$F3)}a+#Ir&7yl%hXuN_-(J~N|E?DX{P%%Guw_NxXcL~s$+ z71iZ&ABhI2*66mk(}wcIfQE>oiZB3M#@iThK)L&;%@G!@Ea4}(TbHVw3au~qHwSwj zYTDL9c#KAV*Zb6R-e{8A+LB7jGy>@jEa&^mNK#!!F+Il?2%JBr5QDzz3=s$kY0Jcy zmI+n#8((OZrRvP`YZbHTB(u>^6tv@z#2oAXIQK5hyoDD*Yy^j_Q@jo=PlXR<7Tq<* z1bCaBs-4vfCL}!InV^&WYoqt(x*V1=Gho6SiSSlKPBVxNtgDke;jQ=9Hg(G@CdUWc z-`BW&6VaY-=T{zJn(O$61k=q)QS~~xPRvsD0= zG7HKRt{{H4=+?iMNduDgI`k^aGRSq1g)rqMA4e$OzAN>!%U8!w=d8}Z7AMM#;Q?L5 z3!mqiZzPDH{5#ey&35R~9&c>vBaR%e;S5>pPcw$hbhkd1AnAsnDStB(fmU$VS5n8A zW}V}TU{GU+6a0X|*)ui#k)t=60LMfkus3HRNL7WbRJf#zc+9d~gwDb9&J>_;zqmRQztR z_-WjX7b6&{mf>9we*Y;OVv`SiILY*#-#?;Kg}=N$>Ui7mqJ1QnD&sy0S0UK*_a!Gq zMdFx@E!EDIOd`jI;0x~_QTTgN^cjTIN8%`@getu8(Arc&vCe@ThbF0uF8PdzTKXt^ zK_bhth^c8aTI>SJJibDP8ZF!n((iTA>2>BhscWa{rNK`F4sxm=0x_wvBb!O6*cn2- zP)^TugfuxWj~Oc$9SOCj5+MUJ$~hgU=aBXS8j7(O9hEWy`Aw%Iug+5H%P&7_V^E($ zL2a~;(P^|12U*fs+s0A=6KbMW9bJ)PzLMSI<;&YN|N$U9v*+45o@PF`>g=c zQnM!_$#xoQsgPY+6MBh8WAo8Pb;K4D)lHzwSx{Fdm7pVQ`j${S_W0##-z3K5oK1@9 zo9-*r%oq>;xRRfw^XrBWPeXLq+QQl8<>O2RDEH&b(#f!8O+&k6hry`M!HLCqub!=>RgUZ+DMO`ax9>kimA;ONcd^vjSnGO zN}p6ZT7YBrY)C-;`1kA5Yo-vqYx8p_Szz20nd`H_31{O@wH+p+aQ^ z)RPIXZWr>SNMxn_O0vr``VL*|2IBXf!eGMPtz$NXQ@g{aeqGm?q)X>QLwdF?PA%9w zSS{^P{vhYZ{Y(yd;^FA;C9xsnS9dBs0tGGqLsH=H$>-n;Q4GaV zLV`?${8R(%4>|CirMFwdc_4B|1twyzGZv#CvBzim0M4*XZ%A^nEIB{=Uit{v2@2f# z6E1Pb`Cxq$EY(KvMMasggR=poe_$Y@tU7y*9|8= zpZoC!l&rMKo)356MYQVL>3*zgSC!lv4w=p{+C!bLiZf&YcSblDt8U4xSik7w4}-Wf z-0C%&kBLduOSm{DYjfD&nRd$Tv%uWMraZ|h=UCYl;8Bt3w$kS*=okMOyMdtrtDQ+z zk4#KW9FTteLcc!Y_I^><_hXpf)+aOYE-IO*+{M)D->iOPgoS1j#7%m1cUUW&BL1Tv znABiL!4#H)02nPv4SZTDKQjUcVhZzEs|k(+X0rO*wrP4bSWr;)|K@EcpCHg!qM#b& z?*@kXiMH$=M8G%bRkOH-PU#nah$}2AQ=|(^VwU1nMyzab$YfSnItV#(cwFN{9!6_#=u%~ zm`LSFCUN9-*op~r1r$u!cMi%YCf~XDwEoYW5y%Ruj>H{Hf{rBCG&`2w9SZAymd#e@ z`Ka-TMQJ^(t{pUl;Mcw7!&26E+O7NjeE~zp`FRzsoo5ML+Mvhu9>pR6u_@%#d$DMe z9PEaOT_-a;0eL6=^LzH&%L5WxM$ng97OxaxC)hu(*~>lfkQr6CXGRfQ{*K?WTBlO6`2I7oZ>ilY{c;lou5I?1NN`#yv)UA)fJA+iyPQG+f_VT3%^mpsr)?B znaL+`ER+BkxyvmIsI8(C_q;Gu*;_{)m^$-U2@<0Es|tNM#gtd&i5)Gc1q3?oQn7>=Vx4iSv=ViYw2b+7d$w+yUkhZ$P)Ih zrag-dDHBmMkdLX<(0e-|e*H>p8G+Zt&EdV8gz0TT-68ceb$RmQC2<)4AM=~vFjWPB zYs?<(=dgfuL(7L=Yh4Q$OI_9Ko?#^3cmQP|sy;AL-e=mCLlunr?XNsSmOv0;44E=S zkOnq8er%5Ap`JeHN9JF%ciwp6F1F(>7w_%g4sU;KoP+X8mOj9GCNJBUMF=O)a?OW1M!vi-rU-HyEaFl*B&g6WOqx zYMal0A9VA;)Y&DF-`XK(Y2HF=SAC)Dy;qc6O=`tFO_09h4q8-FlQM%c>+fE0({F`p zC7Y65hs!uQK6dVgmSrd+)}0~~24iN;My=nFFu3lKMZ#IhI`!Ml4nD_VtlW5D9T$HB6+;ZALtFSa30gSS zHQlIG-3GPD%CVHn{o8+h-N<>KtgAaW~KTs=G4X*{j6rV)SWf4?Mwi+(QzMi5Kve%IVv#ZR5=_@60C%uT(=S1<4bP@EBfsnvtvisa1=8UDO-TDep}*A#(1ZfTPvwg zmXyUX{wEj?`msqJ7nML&_=+xJZcMulnWCuHyGe3Z65X$LUSu|9VjOFO0Q%*M!~$J9 zrt`U#r?JN+(*e!>V;v4jM)!{gt)dS*(g(blF9$pc%;&K80XZwnWW7BJ==L=oQ)@1ZPUEx@gd0F#s0s z>CV44DydQ8=PIt;t|;pAwVylanMl^qa=`2z%=zj#K}W0!aMhu*|xV+tvH3Fp}HimES$ zoPq@ixsFJ)hCbh6#ka9ih}qONJgZpZ&o3E(ZLR6Uh20Pmz?WwUBMLRR^zC zc6!~WiZ*}E+_aoaySwqD@w*)l+G=|3Ci{hqwd(XtwuBJZlnvl@{|UrDxuDtgh{VH6 zZ7+RXjWmr12fCUC8sx&r5;1Gg5T1CAXB&GdVL^9)PXcZ|~b}c)#mj7V@WH6zY z(RfN%khhhA28-0nL=euH>>C;!ynQ(vyu)rJnddclRG5mJR!HcSS$CcTp zw`F-B)NiMX)J^s0RXeD@cT{bCtiW!TQZ@k2UN4tcKSj!J=YF#EtpOvG+bP#?=E-xs zV|SIpSjaA=WSX;AURbbJk<+-x{P=zJ?`eH9#B@;4RHDVUpoyvhiDOb;d~LrUV_+1K z!<@j%tuDP-U$l-wu$YE7ma=dp6D6X4+M=>>zB%6SD_iiZYaiyktBfB3z+@u8AVFS` zjq67E&XwgXBud0Gv-JewN@JZbthS2f11g3wgchQn?ty|F3i%%i7zhbII+9+m4>dGd zcXyL#>#m>2^@eT>JKpNQqk)r6k7%T)9GcifI;_)O!G;!^6qj4NSB})?R&1Il_m-;t zwMRK3La3whrGNoQozn)Oms5}7%==Me?Q9cgQ`CN$kBzT8ZuVD2=vEPNoZ`O$I2p{f zBLBsM`-22(|L$;R2VobZw zbmFRL6wige*3v<+-j~QbFFMybCGWOQz-3SAAzu5%$xga~tm`P7x9?fs^zV#ip;ABY zM|;|ztlnNG-A+H8XN{1t;74b5dT~VW^CijhJugM>Hp#B%cwQT>o4cwrcqwPOTr_e& ziDk9vM!inIYQo-&dDh}T;NPn_K0)ea?$WAFej*-fn6yb_}0hw_08bPNuJWC%=@{Bun$Tr(|JX5E)Nc2Yq_c zXT#BZz{k}7$g7xnaT}eaTr8TQu=;#Ir5k*=$EO3wgYj`*&2{{==oL`AQ_HAKT}&C5 z!G`MCYHZ3$TfKe|d4p~MwL=0}rT4!VbGqpwuU$I}`2cel;Ww!lJFne{&WEC$mpdC9 zCAtsTwl6PRb^UqVU(T+GnT2(Yb)YHhz$9WF=is$468Bm}8BIC3!W$<7HU&$4E1>xQ z%gvY~S*XFI01_2Yf)((+_68pkrv&I^HT-#8yrsUsI<+c17+^z)dp4H`kp#eL*4JS( z#Wcp0$_;9%*cxYcyqlp*x5i&Q=>O_Z^gzw2!-eS2gW7ZFEP~|_+o$;ck4GUhQuU{3azytHd<`Qo=V+P1a&>hgEqzJgm@u!L^2G~wmBRNwJNzjN3-k{P zT!C_yS;4a4A3Da0TX8etB`;{4=rmFauj=CjZ34!cg zTaw8MmMR1qDnBzt`#Enyc^#)6PqxT}115ft>bNg|@uK*o+!eY+;xi})B1~B%f7qEA zB&b=kBl7G3?NX2beK@(Lx%-G}kKE=)`wjJAs|^8pSTdLWgJ;X)l**^!Epe6Bk**{n z^~HdS@-SU4CXMWz9Yar`^CkE_Rxm}HD2H*RZi>pv{^u_1i%p)la-R(`HR;38ZFIW- z+`7v*zme#NT$LXl8?HlXxLe_YUV0CB&87j&>q2CjN|!c;5@{P0)n;-*do9$-Vvz9=i(-!8s!{AXZrNIVe zlR6iA?T^_j$4rX2qvjT!OxY*hox9r8EBm537gHiA4FqY5qpzMC1*`>q@skeEEid}I za-SMuR+;8Msuke)_$&l`h$~L${s)sgC-|R$qgMwsLyLz%B06ivqa~W^5T(vTggQ#J zHgKUgTf1+lyaHY$VBZn^{~mn`7Sc9hNdWtth6ZDYs0GgBfDN*b2D zsDgGRG<(=Ci4Wr{x+J&a4wEOL&}LBN1G;;y)K4}Wp`voZ8>SiWB?C~A2)!P?S39JFmy zUEg4|Grs7B>)S#kyw=xkM$p)0RAJ10i1CyO8FvXY{awSlc>3$YnJMhU`3R&Y&aB2R zhl+OL#xg)W{qX%^eYQ}Wb}@dUwmB76DbjP4mTEg3O|OP6sP0=21fFX1PItd>|Fc4d zS@DbeNXZEc{C8XJHpQII>2=K~q{E?i!CvaSSG(Eq7@s8@(m<42+&?JmOLCQ=N*WwV_&cqXCchmKRE^+#ot~2c%^hA`n z@Yb{I#s`8xzZ&seJ%~TgPsbNE0_*BhkRLsHHtN1k5eSLUXtFtk6iTnGL_nE#tZ**$A7J{=pICN@vVDJ6 zwQ(_0*#l9;CM>z9)bbLkI1FD?bGKM3V7q=+`9cDJ-L(vV55jY3zF(J|r34JQQ*}55 z$|D1_A_k1mr%}SQyiZ~``zu1a-uKnm#>^X5U1$BSUZ^zt9Fg8oP$Hi`vVA|uYs1(e z=c%JB5MkLm(C^m}Cyvej_D=?xXzvgR;z`IO_`J6iGq_jFlNJ7bvDh%lh9-dxvUKG+ z!p(JnrKGGq=M^K}cMtckL_!=v?Lx$ft^pe1BV!*~98x56CrmYV`dU8HYJZBWl7}c) z3TZB;+E^u)g#2^X-nIE?4lI=( zF6~!bDVSNboq0d7Z1DC)&RwIQ5G+lY*bA{YR`_})JMC^ewW2=+{eOX@BB~-vKtTOT zh5;kWcDQ`+P2a-#Z~1JFBN#>HXBTL44;%v}DK+~nXs;UcD5u{!!m&U7&k;0_485XD z)V=+aMXziXr9qh8DRY#kBc;->#ySR}9gYeW9c5mtradb{WW%;GS=ed=d@o!=16;yT zgLi*`q{Mp_xDXuDKz;*&v&cHuSUvoTb0-9LA-A-Rsn{lMdyNOnS@}_B2_ilD(_ek$ z>k$`*=Z7AF{0|yl4(+%A_?su*z4z_l>s!Z2yFtHsZw81fsqZ+85~gP3`=m&Y4jIM9 z6^wi`6rLU24byh9`3gB_@F{?qOk{kPD*9xKaxs?!pztbJS)*C{?bB(9MpB67JXoR! z@7lQ9;23A=ly&v}enjmA`te8OwHA|zvkjkSFXpc;RZ0`sB;sq_KcBM9DeqmmdiUjg zqg@owUpE!;Q8cPUJk{`v1&xgsH1pLBA1`@^mTlAS7YqZ&mzxCTBnA5taISNU zkKV1D8P@Xch7MxbE&B4|#Nf}Tg*aqa9;TUBHnUqr;~m2!%euL{3aFzu+!N)7g4h8y z#yw7jb9$6Au-#{=_>Cgj9zBQmfbL+Jo#GjSE)A02qJc${+e%6$!_h#rk6PRe$LCH~ z#&=Yhgd0Ps(__SvQ2*L3ol4q+o7bENw?*C#iMD0FgIJw(1B7+(<+Xo#EN@-Dg-(T8i{t)#`feg=VP(R`p z7ber}SHiG&e=Hp(-1B2oin(oRSAE+9U#v=^{A*qtc9-_9G1Z6O9DxU%rSZ?CgKR6> zwcgKrjW%6Cr!6n{+Q!|7-^pCfn~(ly&2~>l$$-xDmegLg8ZYnntXG#sO{Tt=!+nz^ zil?C9!9s7P%7p8!Q8L}_iKgyVv2Ys#8lzC*LSn{9gknk~e>-_pcM`^4wxRLFcNPPQ~P2NlF$g!q3 znRuY#B6VaJjb_nEjw|6#RiqTu?}fac)65b0*kO4o@PbAg-Qn()RA^Rppe9Z# zx8nVu!pf1<&&96s-;gSoAu(Y^G?LS-D9Y{&E|whfMDCM>0lpN>R&wkHj>>Qc17KewLMjPC{by34Zoq(u)IjJvf zs*9NxtYGFQj0FD~6b=JHjaQ$`x2C7wY=xWVLnbPV5NrkR`q!^d(r_tMTBibSmQoUo z73(Q^7)B9k(y(AE8(-Q6n}#VUNN%ZUAMRsY9^dw>bt`zP@2dHo$UPmp?{8ucJ?`g-EXT>J; zZj|mNLULY-k177dodrH>JOw!rb5$HbdSs`fJxTR**z3Y)3)>z=@`IYE=d#Y-)kyX7 zzUM@d3+KiDqF2@R?Oy`kWXG;w2I%g(ysm%a+~gH13u~87cpHDB@+PwVa#AcBG}`(M zn)Lz@RHCo*WqmmgZp%4oine~9xA@%@OvKAw$!mL)_GRSBwL+O;|IG2>zOVzt+Ee87 zY6m)by6De$#^vg4i!vd+TWmX@tFAvB&!~U-z1Z_Ae5350TQ((4VqISL%fUmVBKj%E z1JHH$woFeMX5QFnPoCTkcb%+yg5DYQys-qbKTWqL>ECCdo(AZIC$X`mm{Qt1(t;{Q z*-vyY*MUDYqwHr@TC8I5OYNMc!fp1aOvt%Z%TE_v)Dn95bbSM3{(40o-IyQ*1yWSO zAdT=;x&W+i`yUazG*Kbb1fAqZyV^ZT!CKx6h!E98wTb_>Yx>PkLXkrI3y3-7TC805 z*5>8udbAvrE6d9&ZTBae7NBZPxo)A%U>|F?YRYCHxF{{VnQ4u-=~$ho(s}BxDda)? z?Bum8Ln`m^rx?8Ro9y=qL@b+awM{3|X<{fyYNB0!B7A~i!1S;u0-_=GeqgdCetCa7AwtX0QWBH) zH0U=e>?|Mj!(k;3B~ndZQNa0vHD$TuTS%a+C*3US?B-+!GKSKv&A45LDO;f|ax69% zug56;?QsQG;22%=^3M|1gS9{wrO&P};^3CiL>qIc0FeyR8N<>lsGAJ>8u0<lA1;>czY zIObqo*i!LNDLc7+YzZ9;t7Saj53a2{o{l@)pMHC3@|}&@(hd#LGX@PJ@j&c~umZ<0 z@9i&}U#z`sdt>ZlmBj`VqP82b3-)YIi_;RducjCZyVwRKDZbbp? zn#-K?lU;tA0XRqoP$=d)o~pd&Ko ztc#D8bvg%0+riw&x))C8Cx-iMV$1?`E=n2GEd#FRrjYgBiD5#*sMP~fl+bW2XlNU;%^>h#1o^ba%oaT)4k4moez1BTgP0=f z3zbq(->JT-Irm-;z?kB5Gr(bUw#Op#^mdRZ^oPf}xKOlz`_(wjM*Rt%Pto#_E0q0T zM#>R3Z9A#{a3P#H>kTpLG?Sv|Q@vnqBG|M7y*j$c2Aa>T1B?_a@ITcy!VMQnQ!c|b zm~?U;8RUHP?_oxFK3_@p0^XdS&OwBn^_C|?YqKe>-nK4h8fdLI9Ln^MyAPQ>MGFO# zMQb!nx^ATsEA|@tUY|%m8DXj)Zv}Jh&UEY;o9rcbv&ilY!>gnRWwo>HeiwHCx1hWW zMFq%$qQNHLfmpjS2_3YMIt9Y8aI{dzud!y6>v^j2xjC=L_DBot|I2!}U}A}-DD8m4 zQk$=6Gn9TtsALXW)gxB9TLUYnYU_`XEtY5csWv}FmJ3Hql5^nka9F`ZX$ox4mL}al zwDz5e#|hpl_H9l@j&*jkwuk^q`QcXmlj9}bx4ZV2la4y66M31 zv5!h70ff><@yXoouedIw+N-TbmJdM4S!f()ew#tk8j6eO{I2Q+ zGZ*>-abgG;o-C!ep=vzr+CRP_c4Y2XoD!*-1m&mQVY&R;^16sT8}(!Yjd>&q2}p}8 zR;p`-8KxWB56-=K3g7-hB86_Kl6(|YNX>AfM1CUrk^rCPWQHTmu*~<7wk|F6n*4&f0zq|dIaq-SFz&!bb`r06ZKG>?{Y-y*$s)!Lgj_jg-(K;m<)V{`8%ND z{!7KhKr@IF7w8Z#Y2btg08U@#Z&Bs` z*8AGzoG*_hX5;8=ih~V+LE>Yr zjHu~xfW%@@;ZG(w@nbo-jZlkSEKU<%EZ$YXr%gV6jb`}Pp<%HOR43K&>qGrN9cy3& z9^~uBpc~QR2N11x@9kVQJ;QZGGRLQUF*{5Q;Yde=QX-K3FU5 z1V)VycE48#9u#D7WxcW^h_{a-2s%-&5S#xY8NTLWS3<|Fn}w3^ zkRYvBh_n}6jgixy3>?J0f`GV`S2haRzxBIMm-7Di3X%kV75#|1*|Ac6=#|l|o(J-{ zP4ht?Sj7b9;|rC*h-lpRIdN^zNdw)!(ywv=5hwbr%H6}#^*6|QXybuot~(bEW&Vni zPCQw@VS&kModz(;f;I2%{^4e}3+n5<--GzH8%h)!mmm{}NQ)I^cBhnmH3nngEMdM{ zfwi>Uc3p^ldj(5Q_WzWNUaGO5i3tvVdY1O>NM^f8ReeQ1veTFV%{0z+_o^dMiv+_l zTFj!D%$JUejMunA0RJrv6`p}2m*}V5cEW2qy55BWw8RC}M4P`yPr?9we~SpK0EzV4 z1-2BwoZfaPhzWv{+{`Dy>jz7GjvSZdOl6_u>mlU)=-+Rip%uXQUJg8esjFvQ7UVKShWqP=JSm zsox*OQj-Op;2g3u>!_Y$yE0xQ3s7I}*y3z3+2ie;+PXygE#5ebZ1VT~3g!y!7&V^t zgb}OlD4BD@$UHd>CFIetV(~!Y9?vF23$kdqDJy*m_x|MxhMHv=zKK+<^rt`KjX{yd z1F|vE%V5L1>ryGROgW|8%^ElI5t0gtA+dglv~Bim*B-(rK^_16viD!Etv;(hz2=C~ z73e(2&_L%|7Z`o9yoEKw`eaSw5NBVN)3sp>xyW2S z=j++`efz=T43GGy>rCympkXy&(91)NUQ>cW&%(9OJ0yj>K>R4^Pb44qUa^&INQ~iI z!g(o8YHoqWhA^zKJCWS-9Hv2e=_JmmO2S6D*m`x6!H)!+|EFo85W$B@q|D%2(L@=5 zN}{>Rzb=!o*g8tkP*Y(PC#(jtDF$hnIhJ{Kwn@*Va@eCk;{Ytru4A6ZnLm0mq29Oo zP%)uLggmRTnYq0dHqlwvruX?ypz)WZnsHM=;YEKD#jMWMd3)G;eYk9VEZ&twRDBE+ z3l~|Z0D?3RC9cMP3~ChSSTCA$EmGRi-!x%E1(U_=;nv!bE@WcQzVXbrklY@AU!I`m zjX!ybM)zbTh5)LfV1x0No89|}heww3bL~nebS`ZIC%MLRtzX=q;5stWrOAjS_$WAi zcw;QSI&itE{1jjzbg&u^ALvqc&3H(qud56h$vn!!54%C4kMbCRqn`AdQz;w6yp%`z zEi(q)KT0 zCdNIG>1Y3j2>O5KUoDybQcUL0{F!(;OZoU}IU;mY{jHs%wQ)@r_cSYWw3gM8b{9mA zaM{lo%c8RI-GqT%{pVW=Ts3grmhnRplZy9Mk5j-5?!9x@aUwRj_HCYCg&rJo z-zyXlqy+wK;{-(F$M0e`X`C(171|}DO0Rdv%JsNn9^z#EFA5StUvvUa2Qo` z1sU?R7mIAvBahpHqv0(^4rVN8STZ7_VZn316vB!&-AA+{{vT~$8CBP^tQ!ar+!EY^ z1b2d4&_E!;-QC@T%n%4paJL}A-QC^YCAdRyhqr)x$lm+hA7{Kf&L7qqlbWllOTMbv zUEQ-@=vW*xl$kTMNOr4ltc1RFT z%$Ep%98EAzP#WUlF$Z+TkDi*M8BA1)kdoi>lcbQGlW?M3X4=Q^u_bI6PF?=#rv{DM ziqa5IbEz(dB7Toc&Gf1il9%?2%GQ~3wtvMvb4Y#dgv!2`tXsRAezc?mJ zEF&pmy@Vtfii?=bDVXt_KkJ*ESk(mavS%+roeMxh`Lb zCo2-pypKL=CZ`z*7jre@$v~a_XHLnFg+!Ju%ad|+`kj?gf|ADzyga#^`1%w!|D;XY ztCL>mnGz4LF8b3Q%QJ1Zc_iR+Yk)3~LSL547VAZVTY-_)2ZqYoJ<0b!YL4H2PtUk~ zzWkYOL=HJ4H|eKPg;No&3gBi4rp#*7=XI;~(Vy70y18JILzQDy0Evu4NI;FXwggJn zl~mc1)97Y>XG3UpevWw^KhCo%7`f(jLvxk*2;0!+zJCV0HsH4KN;p%ipVa#Nq8Y;pbpqCbGpS1QS;)=_Z;+GdO+Q+$F zoN1Zx}3 zVa&E?p-2%@vH5Nzh5n9&VBF;C0i^$(?gq1!be(=?*#HyrH`q&;bpj8bjPj%3EJPP> zM)_=QamUP(HE?upmwP|4`y$nIruzy9jfnKyXR1SAF$jqELSnveE8yYbwG{}*#{^v0 zA(KM(*f;01wBAR+m$7E_E)-%ehQiU*tIL6rEo-Pd(ZWJ(G-lRRF^#E?MWmc~Fm;PS zF>wTB@$l_bNe+ICqm%6K8|t+&Ar^$Vl|qys^AgqW%ckM`qHo)dLhQFgWhrUGDgMW(Q~;;T?QIfgRI ziXZE~4u@tsJuVLqgEt_)2<16N!p2^E5mbQhW<)S%a=MVzv$d&DZFzUwHDFk%KIs*C zgB?K$QRMYfunJj(MaT>Or=JF0fL0y-)6@oiY%)f>=t(n3ex%fIl)PX8=yq!w+~Yuw z!5&Lr-`Bv}&NP}?`oMZJ4qQ^Pp5PWICecj35J(S=9WhM5 zw+DLS3p)qAxG4DNa3l?6UpMEZ#KEx`$POv5G9{M8qN}2=6)b(x3L*HH2)ayU41#VX zS)FvF(*|1ogM1AH#=85!tuoI9Z^bR!bvFx(l4@R7T?JFavsWWMmMqklC0R?YuaD}> z!82@_sbgUm7SY}cg+i}9wETvo^EV(CC@t{5CD@8-x=N17DU@62;bS8?(GbUqH&N^})%?Ejn#P55;Vg|yp`(^a>xXgEB*ZG*|eQr)|ey<_&_r{ zy{;9|$VbO0Jh~Ydz+m=#BMau3)Pg0=-?)Jo-vCFKS*Gza@3)z1%PY}il?O2IepTq^ z-*`!bI%u)^3t2i0UNE9lgEFKcJ2J)ZXC}K>5{2ds`o9#vLjNs!fk^a3<=*x(5Qv{c zC{jKFlP$6_5a>#PI0L%yZel(Wf(E!BDZ+cW*w8jT4C^VNHB_#OGZF3^A6DY? z)5W>HoU6mVkt4GkTRG)T$>(daR2)eMx%Hjg2A*}NFIvvRZhx4gqB%YN@J zrK+`Pz8K;@bQ!a9vq5{|{>^^T!KIHrRM7AdoLiu&fl}ha!S4{B_Uq+cChh&1E7|DT z3mK~5f@5{aV#&qP!tXSv_G`?5S9{)ezQ*=U-Mq#rx}$b1}L{1fa_lbXes^r zhOd!fRCLbx9Z5U4>Cit#B=T=jmYmS>)|SC?&~*oX)th^7Z6%iTX$+j%U4I8u>V*fHd%~V)XwO>w>kvT z8yn1CWVv70(WZ(SkdqlnM&psP>REPMmgx)d%4!lZd*>F**fgfJSpLHi9g$N;u1CKwa%w-6@NC6%tV{`KmGW ziKX~}-!E**OMCYCqA2DHf@{A~qe3ey4$gEQgd4q4O5URd7K@4WzJV3dy0?A!Q&{?W zDf*J2QGEjymTm8dktu`|y1L^n5=I$BO{);~CVPY^g%kCnLX!@{UvkX|Tt&7}oN`X6 z2Tn1$v1?NgK#R|)C%-xT8F)q3S%cwSv1U=geCE~Twp|m^z(ST~K3vU<&?$16EVEak z0-Rs*=YiM3W1co$-F;dDW6heYsTDZ-u?ThH0a>mF*BJm$t||RI=z}JvIOiXF__~Pl&H@ z(B47FKl`@e!7Ljm2=-Xm%EC=d5EpWJL#(iKWWZ#NL8TbiNrAfE9Tc+7%ZBJ!u4UnR zY@X!zHb!tl6r~)10U=o?3kb=Y)-y{8pv7J&yY|3xIc4{~%w~26y=na>G-jZ`HsC6q9*XUS$QgYZaVK((Zwwx(h%G;_*A9|Zvg(}% zjkI;g%Ygf-C?pDaU{k)lA@cJ$=X*$M>uO5ap}sfHsIuv-)5s%QVi}ah%maJ0TWzhA zL!x9!M-bq*&u;D8;Xa-#z8Ek24ZB7akc>`x@M}j#{NzjVqC?AIvmU@w`P_1wXnR1E zv;##un{!dI5+38lo&=YB%ja~T7c8cW{Gl7sjrZFsA}SZ9wXqLT9Ny`X=&F^V>&Qly zZl;%3W&a3c-I$f16Pc+ijep*XkQ4A^lDJA60ljcCIjnEWSJbU|9OQztRvEW^4vfziH5eHB!=MWv^P&c53e;^Z*jvNQ(5ZJxoQcrM z%lH#pN@>1ijF!8#@@NW$t~{$-lK`Sv8c0syaigxc27<3_qAU@bF^#bf<7nrdA@8mm zCGY%&IOBp~;^1gI3wL^48v`Wb`(f(#{9$f*0;k zxcC$4EBsQa0-Zs=`sqT>Is-S7bG2}m0;w}W(aWDnf3BE~F2dWff+cd!6sk-p4$%27 z#EN|3Zw(@Xd0I)DcN5qPCyU?&0g&_6^FWCCTk^IsyP4^hSYshX=S8;n0VdVGN;+7~ zDg|j|3bZ_Zl4?!vcMwrRhOSUsJ=TTEj5#Wx4uVv>p=j5w7mE2TiNabR6 zUqU_h2f~^(AASLTZ+j0J?+(ln{oE<+$e06m+-|CN5znqS1)Ob;R;k@4%1uGLPk7`d zPL_AQ=f58J+)cWY6C_pNGS_HWBmwiTM#}~Dvvth3^9`HzcjvzwW-gr!+$RZ70|5-WDR4tIJ)zOYKbqn%uVkU6BgW{EqR-0*GWR zBbuk|&e427ZVu^kqGJ8XAG9_T!oq46?N0ZGv2ew_(M96gT~Uh%FS_sMzW{= z0ApFJ9;kG7yJ@RgpWwV6J|cI+ahdPVjgyTa5s;SlG8_vRS#!$&U?}a&FhGHR%YcoJ z{pUFV(+nEnD2>16esinskB~-8ydD02%-x9|o$OF7B)qHyq){HZm$1r?XS+1HdBjI0 zbd_nesy|$GD#+kI!+K4Id3CjS=K;_L24Zxy&lI&?{q#|`9c3a}9il+R{0=%y2$EPtiTSnO_?PZ- zL&<%yY*SGjsf$fy^j`O;=2ATDuT@-GnzWz}2|Orlm_e;dIKbsMru_E7ty!283wh65 zypLsOrEA)ZU3(4hH%Sb}j#qOrD?d7`7;L5bKgTiNNB-`eUF|}No?KC5&7&rrnuIT3 zqWfj;tJlZ10$NQzwN|F0 zuNR@v+YjLiL|kZUsUgB`AATwPbT#mLwKO1;oFUYJLULatdq=G58R^%;Ld2)Qh#o*5 zUlsjk2WmBmrW+LbazPX>{q^(+p3f_mbUBWfLA;-VHRcU6v3m>*B@_E6-1q)4%_Us< z*J&DWDsq2uGLiD zhLepU-iy2e64~o}FrAtL;I7p022X6|$i>niE-n4&P9+RV(}F*M&$XBFBR?W%wHCwn z(H`PQmV@cqMhsfdjINoZbkFqw-`*>FLJEj7YKzEIupH5sk!V6(LsTM6zPXRW-Cr^4 zd>;#@ghCsu-u^wj9(t%cO{6@4xT~MiAWim=h}WpOm$k<}~EIxJC zOqv@01~?><#(G>$BvzzMB_zOtOk-5;@R5}#OEKu>V3ZzV)8nJ{krhpFWBmFP_%ogP zQFt`CdoWEp1~kp8`^tEQ5vwgBSWNU2+9XvN_uR_I!I93ZI+HNLm*hWp{SAvmT4}x; zpu`FygWtn>Aax4PX`zo77qzxPy~td!w3loOWJ;Q5W*ik#4EmVj-B=IND|F94b8!Bc zUy);FkpWcDB%Dw_s;8hW-*?6-hIvFf+jjQWXtbYe5FX%pgHW&nb+O;n7-C$yRSn|Y z76tuoZTR1eSyT;p_jY=B9)G2_xx@*c-AwWFHJvpm-x|>AhakKBY#2Fwfo-atSt=_YQoEyVt%EERM>rr$4rv{Y@>=u90-!)N?nptMWp+LcQDDvr>u{ zC{_jv!S7M)ARk5_`XaaDN8$WesAF_l_H>Gdw?J8vyWt$HtbFtjo>8`~j++&*ZJMY0 z&6^9p4)SAm1#}tudwh4{`O@{%dax}!Z|6eo7;fKe(}mV4dmfU~JyPlFiW=SpZWq(? z$zL+;kw>JHNv*hXC#Vucg|>t)uEf`G3{ktlAGW`RzMxk6QK;(5v9#BDtv?7V5wDpG-;+9$rs( z?9@+yJC%mnS{r0jFMtt!Ay4nQF9yF!B1QY<;dynlu^SSW3d8VSRq#>q>o;f{E<6=; z0pIjR&`aMb0ZK&y4kfbk7c|c)a#f!_%}xw6gu}hfvL*zj%1sFDDsc{!=5GtO?TnoA zFSc{9GuCkx*OBXK7~;bO7oI&dw#Pr;#v#wO_yOiBASKz{kGEcG_fwx!&#SvUS1KmT zE@a(K?K#WOSL3XIhPIA*2?fN;F5HjJrW}n1=EhVb(gG~x3+KXMRf&r931NqC_&!TK zAwfMD!@hlJuj4~MqHD!suOqBM`^Y%SzV_;V#nxZ;F66u%R>Jblftfz*&`%5B zTz@Ni$^N)t@-p5npOAp*+wee4=TSM0w$mcX5$iKeF+j43gn z8`VXXllwSWRg+*4T9F31R0!Ws^5V(GtQi=)lz?IJLr~?g0$LgeuYz#9kdLr1vsjp$ zAv?y3d8T1m7RL>}BNs2TU@`o>#_rB<;FYzO<+NGrjT#@J=&A4o*Hr26}XgnnZw7&O#JHW^j?ncyH4o~99twZ}0AXuk7<2iERJ zLao+}OAtwkR^*HNtGM|Y!iD$hyITzv7IGEgitK>YLSVh6#IT|MEnhnRdewVGz6FDn zXudl%E$89Qeo5Kl{DGK;OgeJ~ZHB�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̠uf#LKZ67=yUZC7%A-i_0#E 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 delta 162647 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[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 z
      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 N0??stpFW2m{TCQeR1N?D diff --git a/spreadsheet/macrofree/waf_checklist.ko.xlsx b/spreadsheet/macrofree/waf_checklist.ko.xlsx index d1154f677273d89f284c1692b9acf6546fec5356..5bec80ec3177fff243b0b73830d131a130ec773c 100644 GIT binary patch delta 140267 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

      Tr>d$M8+Cj#vQaii-cTFtmsW?cf3 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 delta 128565 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

      QP_UVu0Uy8Pilb%1$p`W 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%0DS0C=97km)zK&Qwketa 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 diff --git a/spreadsheet/macrofree/waf_checklist.pt.xlsx b/spreadsheet/macrofree/waf_checklist.pt.xlsx index d5109a626184ce811f4c6b9239ee8787550298fd..c2c745cb1295597cd66f625029977696950959f7 100644 GIT binary patch literal 187706 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⪼K=1MbaD=za!E53*DnL=yV(*Ie8P2*qk-STOpPc*PnRX-bU!9f9B^`BhV>|Q! zYTF?mXWzTI-P_J_=7Qdjf@h z0&&O^9S4?P^{GcGVp2LBjH%|MU~|VtP6^}};)GM=5d4)e&?$6YoTYww%A~p{s_(J` zn52O`GoCSduNg~z9%$sHEuq|YSbtw+uyzw$Lk#2l$YxP@3ol}lCz+|u-d%kfO^=vC z{pFh|c)|ZJiB#r93<{DX0zS(8v_NJ_O#EbUK%EXnY2kj#jJe%aUcVOy7SA z4n6IZoil(D)$3$SyfYdz~;mcDh!L*2ar`m78P zk(MM(+N+u*G5gSHw>E~Qr8GLqj(z*TzO=fLK!;!{jvh48Vr2uTDaS@Yj?C4))A|*1 zUL@b6@&}%Cfeh@PYW>ZAKeE7TL%ixsD)o^2?NfOoon9W6O>tZ&!y{#Lp{&jJWo;c=n(=4yu8EKVoGDC(cK=0(=@OE%X>X*mB+aNHre^o$(?P5{y9PdIoZsdZY6u?G_hq;svTqilrT_eH1 z3(fP0fhy#~Bb&FbLRl6|I)lO`14kC^~Foc|0rf>#VV z4ao*x4s@OjLpWAhHt!;fQ3O;B7w#tE!om{3udJEz)m2i{;LY)^;7A*2`rgbxz0Wnf zM=n^q0MabOSp<@CX;M=yKZ@Nkzv!tQPJLaA<_wcyx#LtBPiRh+e@Qp=Y{1umRN-C~ z+qh0Tu&+gZ#Z3jCy8Hu!bhJEoKn4$!}bh&AWvzKtJI^j+Z0gnYZ<;0{fuUW zK8gg*eBPvr&}6#gs#d*BT0pz2BzVyJE!EY?PH1fHw3p(=WF9Zw>qOiF<=B+Ppm8o_ z2}Vc`EXbzJBklQtJH#@9T9rhnha-bZ95>PNG-Jj8C~+dLHR{&#OL1lv zIeK|ckM|2d_)tUS*Fq<%X*-uj;FB=#{PTXcX^@{+o_aFKG;#&;^q~F^3rYdO2HFbx zS+;vBW9A2#%ggVHTBepH3oZhq@4CpNqM4CL`OCp6O&)Z#)awQd=jSpw`4dNH5Otyp z9X;9HjlLjdEQJnrE-kVW-{U3Z7vOP){C^ER2|RV%z(UgYp?zc))i zE82@N-yEC~M=7VFk_Z4U0Znm8!mpzl7wwAYV=|qA2^Gd)bLi#U+aCxKv+s0uY(xu0 z(nR3lkf>bfc#uVVge7iA93ZV&=COw#DQE8ZMkAqjqyJsq=ipl%|-|ej2=EDlw}N+@TuM z%6~R}%h1YR9LP~?>;dH~FDIczFyz~@8m%0`FYS1OKf@6G_P!e2$WB(?aBIDJ)Mq&x zCH5)aYH48)jtj47!tHa5b7DyD4ntfO?BNw4xI1}iQwAfR!fEwsuO|BZoqJ~kRuh`u zcHDBxVD)Beb~i9#SB%Ll2Fgl@K#Ue~Gi}}gr>SVuE;Ch`CYVzz_-`wPpt1i~Acx68 zA!r0?i_8;$*|mULC59?=-&}uqK~UVd&PpY(-q$|9oqdu`iz1-*_~{FOj;7-C?Qrl8 z-3%*ob#2(VEO4tNHx|$I+t;pUaPKw-WFH-}(YR{)J#dxT6^my2cw4ZVAsib;MBN3l zip6*6qw)Rka-J8Pa2}=bTqAsl6i7?Un}g;COED$c`T+{tpFO!@-%~y6l}` zaRb##H&C=zn$Up62gt`noE?MAFZEg-xjQTVM&mqJq5@a+5 z|Kv+XX;5$B)=plap_TnQyGIPBMEw8TCeg!s|Iy1Ju-lCQo)fu2d*_VTNbyZDO#S9g z`R?f)JLx2`+~pDNO^M=Hfs;r{;95-d+tV~ zeOcQ(bSwns<-QQ;$A2Z?ol<{-)N%`A{VH*H4-?OD?IjSe(>~KdX3Ds!TDBG5>~Be4 z=V8I1Mkg>+AQh1Use=c7lYR14mExw~N{M2$-+h^%OKnO#JFJRTBse@TR-jB2c#Bh+W{UI{<47ttIjLMhb7M?xY6j$r;~!uyS+TCUx8Fujl{#W3~O>HW70z7q=yg zKWv?bQO#9sm-6r(0TO>8$8v?!X|;Px8FCRGsNs;}GG2I7!QgUM5Im)B(Z1p7`%5xm zh=C<2e_8(kk|m7eWK}Du|K!2{#KQ0GOT-dMl+d(6ztqb+UvnqVDI zC4Tk_;Dfnfhlun-&O0C$v$H@l+W|{U_DCjVI(CREGIA*Vx-T)ngc*P6 zZJtkl*=#W1Xy{_Y5_;Jz&I>h`sGRv`n=0Xa`ws|3WfS-9GK>!jsp7XlLfA5ehJ#t* zWEbERW&oRqkLh1v+At-c>>vHR5B{RAdsI0DEd2you*I$WsNuwbnWc3>-TNO1;y295v!4)w`nz80--;wE*oWwnWY`b^t@_v0{w zzWKG&eAx_Y)UV&oAE^ll?{y|%9@}L7JZ=@?P2AP#_BX>hN8q#LZ=&Lqzq+;tQRdcH zj>!3aj^c(Y){(dYW`=1TxfO+T)Rz*_AwM|!b`1!e5FIJN;W~3q!fNYlEnkIbZc6g8 zeHmr*%SzGEv;(4m{{D zG86wo%8LQ^U(ynxt-^po++y*lcjEDk`D@JoSDmh%YvwnI*t~m@vTJ zV4-y#BJYm*)M6~5?~H6`uaJ59Rh*ylpx!j@#|IB!E7Zo|>Dn70Ii-9(tLU589s}R} z1_~ITkRJ))yuu=?KF_r-_922Wx)F{57X`HnEaR1QVFv>Ya><=IEREMpDDAE&lgn>2 z>Ef+~tJRx-b$~YmJ5iIl)tedI7*~Ib$i;^*kKcEnfM;p`q1Q(QJH+<+iq{*F?rx+D zDS-Z&nrj4mXqJ^KD-PyG-KI1vYmU}J@VSk>b{Ch)?sDnvcH(yyQ9t1DZVQgn?a^fX zeEw|JqPdPu!NQ!8g7@6CvW6&Uu*_}?Za(;*(S{^NhlLZtf>>up#o|ctdj0|gq`1d^ zx0A9$o*>(KKtd0RT40)F6q0WG>ReDcYJ3ZhvOu%oS};tQY;+QMj_Fhb@%5NtO@rTw zAx?)r@Z!%n3B4`k?s&=9ccVGydR?_^TH>GcWYW9%nI|fI-UME@6{66wJu}`oXu0}B z)nhV_N7-XMc=vq$vvCX)DiCf*i~sj6AC-}1qHMnAfyOl+2t_@XxD*jVz0HZrPdcZY zt7F?z1A5FS;C>75{UTw$T?Aw7?o`)ElvfW8x((^$gGQWn;#LJNpWV#E`x8! zCTz_AG2__N@5QJ{vJ#N2WxEg~G@hKfr%D(ITu(QyTm70?O(d)obD?&h{}nn`RWPy= z9D(^Dz@OnV)Y~rgdx&{mIpNNP<^d@*TQ4Ck^fbUUH4a-NMEOePs5m$u7PjZn&yU>) z3G>F~TnC6IkiISnPSk7ko6c+Qd3v&4qHruogLX_`nL|?ZQ0X1+tA5d8P*mlLmqWOByV&pO4{_MzDIZ$4Vx$H6mFh0@() zt_Sp{?A9K7{6hs`urXqbz7Ztl>z|D_1e0H>iPK%3+DyEeu*tL->M-oU+dmj>PKN~l zFZdc<3wG}1XA#ZdnkRvTV5HFZCp^|9nYBVZhB*_bMygULDrrBU(_i+aAdEd>{jz=&Fr96p<1(e5Z~47Ewd zCizDLbd|Skhx%}E<`pT9(FGUf*|yM8Qbu1+DR1+Zr_^xuxjis=1sAuASr_%jxv-$V zWtqCNhy>_BuZzhL^S+uDn+ES-Ny0~H89Vz(LMZbskB{7Poh_A>np=R>?TkzhO?sa< z7>1Rc6n|5{AZXkh&c@sPG`tyHlS&njY5l>)XqmRlk;%_G>Nv|29n<$UWh)LU@&gjj zG{HZ?wP7mDVpY8o+K;Qb!s#s=agGRzO||eM9rVMt==6y#&y?;FU*`hL6kMz-h3T+M z?I?BH&C&wBbwm8`vQwEDDp~phI1Poi`p|A^IM|d*!VD6v?waG+ zGJPw5e1c-~jkj-4Kpd8b)NH9z61vZmq8^80y1GbW@ew6nEBI;kDo)Ebr|i&W0Oa@) znQ2X^Nvo)hxev?CT8wfUiZ>rMPnEjh|2PCJic-V0%CB%;LjdiJP)ehsqr&PB_T`6K z?6ETHt7!D{%N=-~sGDEj|BWr0c2SjIZKX97TV<>C;p5yp{X_Ft*`RN`Y5P@Ao# zf~xy-1x9d#(KGoBi8YGxb~>J8&bv(q&}!W}EN|3mkraRxtC6^u*chuau~h9LRP7{>VnVS`YQp^Y2u+eV|_s@(#~^lw=G|3fII z;qgP!Q+X)_^omu#U$Inlihp&2|0COvx5Mg4&5}pItQnR`4@GBoWl|*KHQ&|e7n^a7 zmuG#Rm?#GOSe$*xLL_-IGH%f$4!{a+;%K>*YKas1!_-CE%k>>=H`>r&mUx`V21du$F<@x{$apKaBXWwGve51vA1ZCgU z6xX-;aI?ox8(?@aHL}-rWiKWAP+~|yiJCp$cBuR2u;WV3B{2M^k>kBL*8U2@n}2fz zPOeibhUbbh`Mt{{84+3U6q$re#@s^PbTegIm9HVGG(rWiRH1BAqW*m$Y#n5>ueM*` zfnJD-J0}d(Hf&0~z6{i}-LCC}k*|z8$4*w0xQpe}wO!w_dzin|;HdjD=1#>`ezi1b zp@l0r4-~n2doqzHi_IrnqWkWBk1xftjvMRp%9h8*@=sUomL^#&L=Vg6dgyCA9e!P? z!m(#(`php2%NXM*YKragwn$)cKl_i0dEUQFYfqcF`F%vOWP8$>*`-MOUVDLDS4`N_ zIb-%2G)Q08BQ)lwA6@xq+s`_r1<~(E?H0f8HLai`3(dD)`ZKC?lYUc z&xu+0Ebcm!S7xOq5P!J=vp*Y;%n-rzZuMI`n8l(2l>x@)7tNLs#xOt^Z691s64A&K zNn{S=b@FC+UpA>aGw*vbRCzBg^{K zHuyY&)%cqfyr2BKvju_a(hl60s68s+4`esNX?{jK0l zmmz*_q=H+5z=@IHLe!A2dR=Lx6GsW3pd%AhsZ!4}1_u$S206lvZx~pX(DwMD6Fas92b9OmuY0f| z=0vBmb4u-x>=o4xv5&B0NI&(&YC_Z&DXa~4t~Z=%jK?z}>lJ{|BWQL|9uJLBOP@8R}8U+2xTAWD8@Z(ldlvhE2_t&rYE)UNV zrg7&N(LK^+TPJ0M$K`uSSR}==?GY=<)2Y)41&!69`gf>Zl5bVT{CN|Ri}xr$Xtb_$ zd(>%u9<4xe5C?FcLu8G(5hDd7|K@7n3E!|wH)b{i4-QjisD#iO^O<4{Z0ckRbHy0g zuap#7bjh7#%NRe1jQIV_|ESXEkCHFw0G!ngp;WK~-V29drnwmj-XFIcJvWl8=X6pz z8f7^uEu34CmI40tGe#A@!euw3T52HQtbdHKxLj!zZI9LWRmAA1~;%x-yxd#B3p@x6KTRXtpc$T`FqeT201zPS}y zGRgly-LwaNsa4lYswP!9S>P{ohrP1yxa{(`J5rC-!~DWhLxx7GoFfpcPVr`ulk8F4 zdVnL3Pe_3G^TE>(_qRK_1cJ`_kLW5tmxqy_qvha!)>Ys*h9ciH-0ZTGD%I5676Wyy z5qR5Z8TKjVV9_RyHIlHV z|NKMs6s0Df^2fJZeq|9_-p3c*@K7vvCm6zc15_f(C9LFckX)zl%=-@p{EAfY?u9%iE zR;d(T6iAmxoL4Ms!=>HjPm`a~{nSCY7V!4YtlwMZ{iA!6Li^ zPAuWqt`{5yqp)0+Nuzq{TgERE`EcGMpQim%Lp=fWMoPPBQfUf4DW?y33s< ze59UVG%k?b?h{Gdz%=fANGwQ`!F~242>>DMWAESW8l;;?jZrt z_;rvy$~kf0s~%!kC+a;%nzI`Y_`*e@YIns0@J<(6Q$g3tH&Vh{MRJ`2i$ z-R3<^((ZRNi9AB41Vy!256RPh`S6FtL>>jyRrUt&Wt8}~{zz5rKXOj818GjV3+2|S z#1OE#-Zj+17=pi=R3YhNb%{n96#D;kEb^j!0sxt}v4_^xnMC)KY{xI)&Q#I(#5qxY z=Adl{!YTeuifjj3ZRTx$e42QeJS_xIq0X^MqGx0e+wM*F|6}T_6UJm?rxUuknU~}1jz+y3F$5g2?6PrZjkg{`Tib!|CRMK=bX7_=9)P7NiMc~!aH7S zbs!q5xy5?O4z2|)R@oL-$Z1%(-yEaDhmaE}RLEhwN-|W8yjfc9a1KVL8IDbnrrlm> z?ShK4U96_WO})(f?X%H0zZ|12Yv7mFs;W69~%vT?Lo32S4bVTUMd2G3J9}LFB~e zGegku$?cDE8%z5|ps>w+ zcuxC)by!_wx=Bjz{;C;NBHDS6oB}9n*3Te@!QwAK!o_byP>Cx*Xc=&$yu-WMi`=oY zy1U?(&w|8omYnUq_infj$U>~NKNArAbGb~m0O!Mbp1Do9CXzYn1U4m`3jO$l1j8H6 zwdQ;CcY91Br18!G`@|j-7#ULdmfnvc_59<#Sno7m_Ot|La#R?1H`Et1io2;araKv2jrJ$fBriKMe#YfcM>?p*#Q(EVt&@x8+NO4$q zT`dk#aabi_;S_R)i@vU2v25fUm9!OLxg3~>5`|6YX`=Aq%FQVObtWX2N+1)In+KiP+qz_0!mWs%43{_(!=9jLCQ1JLrJqE3PS zkw9nDQbdt zikulfO9v_TYeIfc&A8p%&?twKfo?2&0<%oCTEtYGnAcd~7tt-%BjsW!w33t*`0SE#w7ZC~_FlP6L3OHvr51YB-dQNt`e? zWDJucA!1?4Vm#LWR4z|d?&-BQLBq6xOtEcMG&GQFJp3%e4?GdPOW8V4nE zwO;m;;ssd4Yp*zu)^K=TZS`#vuiR9EYZpJc@PS%>zMZ>;1fi)n&!p9N(UelZc#hQl z4t6&J`rG_<2DHP^;g2Je{7Ueu^VIM8Wk}4>dDLoJ>8zUv-b?D|9(@u}AiK4LU~%mQ=gEwC|bEV7ke1_^HJ`Q?P4k#s~k2 zW|BlyVLo1i#rM8aT~3z>hT5}gTqI3ri=RxlSl7(v5`mt>Cyr7^GLK# z42cmujGR+THSaB11mzoR#MWG7b<+zj1!-X+Q;MXbKJ_0>zc5eD+=z=rC)T{*bSZ1- zDJIVNp=pE71K$kUmp)`)8#Q7xA>n9+OVZr88OrT}**p4w7@^k&P!|K)Lo;0~R;0L{ z?|JIwXlc?5X}87@qfmY z!p?4d&{k3BuHlfuY=RAZ06wih800oK_MVXqP4&v&x0D3H)rf5Ru{(=-tCUKCQtX-s>p` z)7M(!a^dNEEFCC=(VSB>qFuF2Z&=_~h*`(X;*ABesX(4$KxUg06Si=6`_t^P%El6FQ*E=`zq= z@BU_`>?UNyiT1PCHrM^I2-@nZ&Qj2I!(vqL4yPo-#d`kCuZz!w$>2YMw<8Qs%|(hn z_iZi#9L2ouk1o^4%8N&%s{PfD#5a}?hSlR_FgWbvBvHHBCI)t`SYOXG9v2^Md>?j{ zJqMkLPtvwae+%9E;;_zT=)Y~=jy@~IW=0E!QX6+^wxV0hyHX=jul=ki`T_$-6H)&= ztzzNwpR9ZMk&Ka!??()5jw|Zo+9pRy#u=8~KMIPP?sb0=2y!_*-rgO&7aS)jxfdW` z8%MiJ5gMUms!N9jJVr$uaVeIpw)ir&O?M?J?r(nNk1HOc{i_UD0W{);OK0oBPBqx=2!IeR z$D}{vY~zqd`-2Sh@d?PM0--^b${J$YkX~8JH|x|N*TV*^le@<`HmuFIruss-lV?z; z7am2*8@>5%JJd)}OER@8MD7{a zupA!#d|JBvsl1=vDXTG;P+yPuv+u5Kek=fEqEd!C)n!F38Ph@6vZ!UeS5};i4#_{5 znyZwIKvWup&u1Zp*ffz2M5^Itm-g6Qr>1z(7r;pr`%a4n38F7&Qi#3;3*GXaF~5HI zaZT)uI?_C0THzIX&lD&^x}|gzt8QD6GY$T8*@6KrEiTv7Mf}i;;Mc+fSl?usNr)-g zfwPjQA|3D++fQP^VB3a!rU?foxvwvs4JYZm#Cl;l07%`Pm1oIuC_>+_IDVmd40Cis{KwCzLb$hkgnBp14k1-)(!sz&Su-d=+ z)8KCiFvDXrg6lQHvE+My-aLvz8C&15q2s?$yr@6~F%M~KyW^thpJI~2=X0n6pOXMsX{`|GJ&VM4wC%%<9t zf!yzcXC!t4)^|5U^OZ3J;GZnIDA)~s3(ncxdc;!Uqw-&c8{e=g{r(qF0}(>=1A#pW z|K#7yH3^#drtXo-h8$Oi=Y@1$E_HJc! zv&^2-uzy>e#9Trwue_QP!@*eCtPuj@{;=czp-z(aEz^>AUvX?qVO_Ny0^mOE#g~*2 z*BEsJ7uX=aL_t=gKo+r;A}Trkka&~$3%!?fhpsAdiH!qY)2Ynv9(Qykle1}z59Uak zd=$%n%nzHc@m20TGNNfr?{^&l0A*A+HiN@Nd@L_3PxuD6b2$xA`%hLCF{WNOFp32t zOJ7#wOzek?5yjp{c~8h#3Ei#9dC9EjdAZ1n683MI-NEUQ4&uqTPEM=`Fwt^4ElQQ&sVYsA7|85-3xi1<9l%6_-7nv=E zh|7@(Cff4}5eR_0(3exrBmSt|4g5|A*|{KO=WTRRJqZS;i{5qZ@eG0d7y)B~7o%-a zRBBr{AwI4Q#9_~JoHjrjLA|Qb(9->HZ+dmT)zjhJvU@DVqm!dVQ=KtWEuxAX5kY`| z8*JkX`V?Hzqx#n;xf+IZgXfJu-Z>jB^X5F(UYH|E|Ll@GGAqqMdQa_u4w8v_pjLg& z(w{Q<4w54sP!cO6g9I7KPpR{@Y+y46r1La{h%qQ>+v?1L)ONfKBkVgvYN+va{|qw* z-b)Px6pVrx=IgOm@l?ieIw$|@Xwj_^^ACL9i3518MKZ!isP1G@+PJ%kLxWVBR_QJ> z&j!KGI8Ffvh`?1LR?CEapZXRDsKG%BgwD+XPWRTtO6kaq!?p^d-(w>vfjKUEO0 zBNDPZBW$2xeTG=-Ois-29~-6Jm$jpBe^}A0KCWz%3LD=nmf(i8#xj0C2@-T&b6aYx zMaVdl?pAw3{Lj<%-BLk3oy@7UVdcAO(gYonFk4K$76zv1DJ$*-uOo!1jCl^Uak77s z5fC0AlAr!c#(+rP6f4~7Cv|hYcV_w;dQm{-OIW((LB6J7wecJ6ianJxV}tkkOxx}3nbbHW}t?@p9f1^PN z@;G%xkbL2Z{Y`*B`DmV&t>oOvtjqj~yViR_Ql5j8!2>L!_8V*7`QHxG@Khp(_S@lX zVb;&cv0+iK?bm%*r)|fq)8)aNhe1-^v~^J`W16J?qhkR2#!jp)Vtd zIEv|Gv)lPvoIgVu7iM?Q{bI}zvY*n~TYXrQQ+4ypoxC^q+Pe$^7kuGzQ@URK7UQw_Z6c-3pYj7c<)b~p z27hyW0aDB+^p z@$~M}l15t^h;f@R)?pij1f4q||r6qx90;ht!% znTYBM-ZrXq9Ob41{2W&miI1y@@V)n5FtbRHjV*Tw_8mc= zfBpLA@`4pCGjfZe;XEP_UsGD>nT^2AZe}<95!6`4|D6 zZkKu0#{-nXypWE^tINCQBm|%iE6;3<*1r2Jyhr?3zo*^TdU>0^b+xrx&dTsu7fW?b zj*MR2g2yd*7*p)BSO*(rXfL!_+cW6rX^aZd$X7|4BKPul#y@CA+^N1vbS74`3J7I~ z-Z!F0Og~aDPAIW?fp4=rf~r>zd6oHcLZ|Xiwb@|DpYmKAI#!(#KC1#cAuJ7WK5`-h3HtYsFD0E#cucfT#KHn% zX$^7yc-y}F{KI&vtPdB0$20qUOE#sPW(|W9W_7A7xnjJ(bnf*k^X(TfrY;qfe>r)8 z+2#+-lrb#3-!*(fCH9ctFh;w5|FQjCtq9&h1Ck`f_azZhEfC9+bBhs3ixI*x<5Lt} zmW$I02HEMeq4knSSy-<&?*i2R=`5a@9HO(La2IOTVP9?#7LWL)(BqT#jc50)=SV<^ zzBao#|6xvm{Q8_a#b}ApbrTR7$`oCxobab$d#hb@K~OVFgjrd-@bo&%w&^oc?bvc- z-X@P3!oF6g3(%piGnU;$9th*eK9#sC<%%uBlm)sJ_4c;Bd2y|cT7Wgvo|xu0J%$=I z6Z0{CfqjM=Edh@%a~iZ%7h4>^*FV!bksqjAvAe2%nU&n+CCQ4k#c(VHF+e{fRRJd} znuV4lxnI(3Z_oFfv20(wY(Zz=bs(k7j8cwKQ|pUff4~^k>WXw20Q%p~X$dje*QH=l zEhr06VE7sSRK^Rn~+s%Y3qIpZc)QZmodo>8?%}jZ}A5?`^x5*ZrEB zPOGFCbhj3*_%qUp>A`er?vt|g{saCZDvw_jvtxS>5!l*U!-Ck3~$8Z@49DjvFA7X6MC6vA06y`Tj=-5qBed5O1)=jzUeksghjMy9_S$hcfYM zw<_11wIwaoG{PPQ%_G(SMdXc7&|h#2Lw*)8w)9DB2w=trF(YU-^{Rs3n;APa0lpLq z&;JJf1Q-0sau&T-1HFo{g|a9peuMs;)w6_}0Vv|vLt(>lN^A!ZFPjuXN4-=^!A#M! z05&-=J+?D8&;wnt?=A6*1F4;a>P4!4zpj#|Z%P3s(bkeoz5fW!BU6gebZzf*{y8ja zTm6S6VAK!k0{Mf=ejEXE#~$6=#`5k#S@{8;9QoN$`EtT%Vnm2qY8z|L`9^G3!&XuY zcvr|gf6eAUtA|(ak`?KtK_`|RJ@3e#3l@7J+aYLW*{6gWXux3__#D}}#BF|JMWy4I z1>SLA*QE3NW5>%2e)h^)`c9Hdp4hv&o2D#RrqK|=Ms#!3npz(+Iy8cNJDsU45QF|R zEcG+iL2*g;tW;~+D)2xO+T3C6-$#sbS%}e*coxM^B5oG%b4Speo8kX2QHwLcM_bGO zMF@hd0FISv@qKe_zyX5_|3nWOSWXfT zB?US0nA$=Xi1*EPlQH&_#?X*(dMpTl@PA8EQ~(6I7TR_3K|r1fqAil>yiymH&YbN% zuW1qC@kCH{3Z+W0fD>9gn#>p}Rj&H5_w`-tFi1GUmj3&yl>9C6a~7hDw(ClnI}wE_ zEIkkw34_JX8=98D@2s=&jvM8%nekOqDu+~M_yyk!-7)GVvF6ww!z|4h%CDtg3rwa%pt0$!8-;y){A)NRt%AgzMAEOWz zq|>9elJCEv0j!po^fjqfhtwu8%#*`a@#b%4sfefl>E08K{lhQ9Omv9ukF%rpRJKb*LY@oA{ShezE6FKLfN+edjY1g?Hywq;QvfYx1e%o3Dv+%A7&TR%P&w z9j}pBa-I*dj(0%i=aUM@6zQ<)2eM-3BYZ&^?bC*PvO%eTRQ3;yKJ{04R&k(9)E}!2 zN{tr#z*NsfUX9#%Cmx9HZfR!NYD=_|xI~QO6W8d(zgHBK_lY6X~o% zgZrE5YO#lSS5^%>`cAfO{r^I=XRd1$Xq<);@Opi2Dgmg>=-&()xPp}r#snzn%sT6y zQkNeF^zglYaV%%kL9P(NEfB#QrCCU}WiGwKU-;~WsSNg&0|RbW97%IQ1uNMc6KXwh z&k5{KH&O;7ojzqSD5-ACW-Fr-HCirCu00sfS)WrRxga)LRH~`#@BjJ-q6<{Sj9-MI zC=d|sWXU$GY+r_6qEs$T9a?S(E9MVvkF@&CV#L0Lyt zK{x!jF;NsC>q+B8zWr?bLAcMU!1gL&!5dCywQ)vcr}9a=W+}^o{!J#8u)S_OugLLf zA{OO%r%HmPyNmqo>t|cd#@;o8xJ?@Gy=1ovNT-#W!#r^$u{f{du8p0wc@1vsZ9@*^ zCohSLgvd9Rt0ReID0lgpy13(5?{u{%{8%w_i$aD02mUI6(?hM$c|D5C zBv%jGzVMP;B&l zeq}-?H2_%rXHW1%H7sY`^Y{>ZLgh(uC>ZfiWC6&ojuf&nhEOXKZ8EhQfkeZ6ct_ae zq4EAJhQJ|cmwDkansu2RYweXnd^qFHihi+wkX}+A2X`-?LdvV% z*H?k|^;Uyp<4UH303L}i2!oaz#q+4o(OxLQjPq^$SRX78j$|SI64wkO31FfIQA7v!X&RS6g&i3?+W4)R>ocivl9Ad9lJi$F=ER*tL#9 zZ2i9k)3gj)9>*x8_^-!R;nX24%)PjGyr1xyJwFmzCZk3T+7j_!Coz9~G+W*}d7JOC zx%3FSAFpjii*P7I@E>rHw;}q^^`ezJn8vrpQECZJU`Xn7V8KFf)~zXcbz~pP63he; zrrN|QoPk{aIfNx1a;*)!L?%dpX?CD(5l@@8qknX0;3HY zYrpLb^?5!njFU-Yu?%Tl&GJ7(J?_a$1N1FRu~Qh5_~u3Op%l(*ak4ZSOQ}&S{3cZf zN45fUe=dh{QoMwhjVfpyY@-mQ0>*-4Uvi@NIx*&|C4(0${u%9^-umFsC|>iE<$$S{ zU#rWjfj1b&lIvXdBHx?zkO#%fcvRDMqr*Nvw+z$(_}H7;G782N7OFIbmvA_B^aQW> zl^LpGFTjQ9U~Dz>#rmiL0RBJFrV|=doN?D+g0ZL6II}RpOSe{tOn0ZKfw#B2OSk2G zBou$HTEV6j{!L3x9}nUT2Pdn7eTM@cSntpNkhFu_i6hMBl#Dp=6?5bG>VvHOKz@5w&I_Ba|A^DZDhbke&!FYv z11(0cqZeC3CwGL=m`S+<6<8$Z^L)lR=>A|Y&1Vt6N*gnRtvw{wr$M|gEfQsTic5oY zYi3gc7Rkyat;AUew*2+)Yw{pY!Iu>h!zM%brs#*PL+r%(G0GkR8{t<|o>DT=?qkA2 zR-|to@@yV5{4U+kbvSz;mieV#lYFiOB93Sb4Wg(j9v$TK=cD12%Zz4G?U6~Z@_=wL z<<)AGtge0{I8TBEi!rsi3k@wj+&siy70Iw!3ncXOmux9&6rNn!1uZcGLi;nuV7<#+ z2oWZTTnA4ER}&BxjLMTdb-eU~q|KL=W1DQ#-Ncd0{wQ+J|4KSuRcxTDZmet4tmSghhcqbQ;NyiU#UIsEE5Ka{ z8fJz%c~oqG(Ek-++@W@<=Ym|z!5jA3@;SkSKkf9PW(#gw`JhOIw6gqe8SA(}c zZY$=I_D|rBqcOwwjE=`06okQMjmUSZq#@Usj1KD>KmP3_nFU|uB@by22Wt(7rWU^~9K z)4?1oAbykcL9lFXO0gtx_0a9ce^tX4aXHt?=nDcGu{5Q~D=us1;-qITO~eHvWazdj z3jLV0p*xeuX0}rzXxtY6Djj4Y)`=aUdl#lfS>A(_`|c%M#6dx~F4`jG!UiH)bZ1dx z1LJET74(M$9A6(&0JRkBtB(jj`t-%5UOi0 zX!a0LNcG6S{-g@VKXK7jy|qo(K=*fdV{1J> z$@;_B-}W7I$Ew75e%$V#qxU7l&L4VJMN%KPrX43vq4dQy^3eC|(;OIPtd>4=9qS(fb!nNjxeIXL|(sH$}f@3(YBd46OE%ap#;a@&1G^2Yx&OizEk{AGe-YU z-@Wf!U=en(UuAB-&u(ZIwCsSiDbsC+vAG>gfadT?bxlJ#lzE(`VwRKERKK%}yCppNH*gggN4fw5jmG#hVqS5sU=^j{%7wAWEKHYf7y zTV__<)fhW`phb^Y;X{hol$A5~0Qj{$5W}j|jjcP1?Ii}h{T}pNu1d^LHBDs{iZhB0 zOq}fTEW9o6%(Ve!xkf5&L_gRb>P2z4+hKYE>HOa8!ne32Xi} zTW}$wv1(4lh@8H=TzRD+e!48lo$Nk5R$X_PnbE&(6+>UA>BHO?La1*DXDu5zw*|IQ z#IYzKEJFBg<3Rltv-}e}I-ycC%6GYT>CYu@e-iuIKV6>~3yrV;+}7+}N+H=D;B!14 zOwn#7a`ub$p|zdxW{?bjc69O^m|02o=|$v~1%(#Gmt?MO@0X@)K@fKHv6;%v*rxr#xEF)8iq&J^g)A<0f%xeC_u$9 zmMYSc`%jsFX#NQqpZt~c;m)CP8QXJ$6I^;VO1(1^ZlK$)a zR532zbA@IsTwQ}fNwpYODorLU8nLGQ6?|6BX=ZxTpck?1glpLAmTOX$eg?*W7+4G{ zl&cm~RZY{c`6bo}b3udza!BxT3HMYofZv-~ecBvL2n?QiiNF2zMSztSC3W-p88`@243%yYM+$_RysYU0|Tp0P>`7RyI*BSMbDVk zGNTO8C~K=i*#R}3f%hB?iT&Sk=_+564{9Y;#EMJ8P&^1Tb~dH8km|g0qtj4SI?3rM zO*1>ZHOPz8^l?;pcVramkAOX&cweG64LoZOD6#}!|9%gnIis%fc%}9Y`8nZJg&nL^ z3oicZf?NB6wqq6Q7c0hz-0y1zjlJ<#cJ@#7tB@^BOY~>F7RqPP>=fRLC-Ak{aC?Bg zp&Viy4aB||Sm?Ox0lnK9N5)}8RmbboP}o!@&r-QSrZrDX&CTGTKh*oopj7dqNLc{U zr0pKJHTU1*=YoQ193w(0;~3j=5XWZ+`-=w|c&qP2;h(6oikS(2mO)xqW|-rJ#jv18 za(H*C&c2iDW{LQy4tm^$sa}3b+ya;2Gz*<#=aFDaMq|j`9oDCDU`@j8Kg%aGq|f-=XF?CE87Rw$CK(|M4?&btcpBdcXAj=r(BH z_q$U9Fxz*UinW<+nl$9J!DPlv{Zm14AMP`NsIZh2ied4uR+E1Do^vu<=-(%Pm{gt( z^wNK)fOZInqiR4WriP~)TA8)+>&;7qk}QPgPd9`ifjBK{?6IQ3GMB*b6<-F0Z;f3= zlu!yzv==-M_&~cmd{Y{|cCon`25a7*L{J3?(>JW&+*<#Nv|=C(|I2ij03n}D7`g)= zU+b4g5y#ohc>W%ItptjUKuTd`O_{L*0=<^waBYZ-ZG&;7Y#6*K`RWWqdhP!m2PQnb zo)21P9OO8H*l{dBjqLfS+5#E?g4}+duO4BEXlo8Q4EmR$?7Q*=g7P*}iEfRp0ouqd z1#yrpiA;kpa4err^?FBr(ypHAoRBznHZM9^H-&+|Hi#-eGkgLA`cXAFvfJ z_dMs)rw=p4(hk4%4pM_@u?%+9;Dg!yJCN(;aTMR>ecMzShKqG_UMclegV>2`F~P^0 zVflHh`WWkOIZ5`Ul)reOzbWi#DGW?Se11wS50ukpwq-S4pOv*0nM~hsBYHVxFKf}J z;<=BD5E^hcsn8Y2SSob6F5!Bxbj?=vugr zpHl2|rlDDRxm~q|m>-Rd0L(zD38NxHMbf+d4gs#xd!lCks~ys0*>;j~Cnjfxoqj52zKkHx- zfi`Oc{98H^5~l&V4?6|-X;*#2_p%+wim1FSM(hoiru+gk%Ah3uGFPT5vwKWMf)r>-JT)x$D^aPb zmvoBF>%a?F`Fs%&;mhEMzPSLN2`R$MrAo;{45@P4wqslW=PyL@4K-?C9! z`^fz0Y5(VB{^?K7ywa2Hr(|iVeK8+yUdvoM+h#*4ER;6t#10ubk-8Gkw|IJ{0{?f< zBfHPT33IU;YC9QH99!IVZZU7U+1)Axl?EBAg{SR&2x7J;gd)zB{^7dO`W8kNs$tTQzI*w?z77yP}qG$-R|&b582+!FSFiF&di8 z%&!v8_+>H?_k)U~c3%r81lKj@`SRfDp+%k7{%;Hsl>imh8%{XAa?4a=Jj8t1B~XNp zU!W|{hY8)lhs;&x(BP`ZCP%(xu9zO~wLRzi}MboFhHF zZ@Rq))$cL#Nbfh1L1`ASkNJ1XjD?A}9rW!Qw2rBiy{f6JeJ>q?*0cA^Rb5UH{n$5o zW76pyWBFi$aAwWv8I%S~lv!rqV#KNUELGkwo5qZ$@RA7F9zT{qZi`44sFWt{@FR!u zPb812!j8T{#A-F!>IqOljhEA=2#J;opxh^Ceo)iZc?aU7-VX1O=L7#}7L}@!ebT3X+$-3e43nf@ z`5R^&VzHB~hAqur!KNA}r<-KgfjyW8B(Ulmz%zoX@V1Vb)P|UPY;e4IdJeI{LH|>S zJu#ZS9~@>PL>)vEpP+|bKwsCju83#n8>ew*&vX3|>a-lMOIJy_g)~GqN)Bm*6L@RH z!$*ul`R**rrz%(MJvNk%;oTR%Dc(i${+(QKEqt@CQW$Qq zT98eBjyM(ZJ2xzG>FsrJkxXT2yh6XGYoQA1|E{sP4#2n?LXS`}wan*U3<=gP_4`*^ z3-BJfd*rPl zg%Z@3&3~6<90pR?{9*V;%ZB6((3pc6b_04D=LsF|3e^g_8Ioh=Sr-gWV7_Vo;M~N= zb0dV@s%nWvf+8RTE)FlHjai<48u!BDaQM*FzGziVlh5U7FIc!dq44%KWuR9DWNN~l zH2UEKP0j`4*2I-Qcg!Uvt;HJ0@o*%b>;@+R>+g|98{kkjAM?*L%+RGbET? zVK2PtlhUw@65W_=0L zkZRr0hCzr2q~tPhz?t+KOl+>I+5R2hWo3zsREuQMg!1%wX3*f1VMCxG-z+ryzR3ON z&d2)2!`VuVAc9(Z?MT88|l)b#&~^Bm%U4tIqCfClZ!+(=9c>p#Tg~_WOtg}9G(|w?4iyke z8JDl9F(W*aZpSLy3}8WI2spUSHnIuC{I7f1#@*%8 zW@ilP9=`UqqfM7cyB9kgRZdLsPK4Qe`zL9c3*aWvzR2mntM&`t0SFm-3Fs~$!iaDb zeD(FMz&WZ1{H$QTn@+dIkRa( z@jl8mIXhRpLi@hV3EOm~Q#bCY3-)}MDbwJjZv_jUW;!ynf>kAaTAO~hx{LI?n?+$} z_haoK)eL=05#sbS{B90X^ieMW^CnhJ?1HOR4QIhuroCE?5z$BBI}TaD`OKO{j0lUD z6r?WzMth(Yo*8nmwU3rP92zYNzO!yti%aDcq@uRiS#XWZTq>P4qs|Xtx)$HIdjyLf zGuNO;asO$*dLf|&R${Vf@ZAmY)0l1o&(Se8DY@23OA3*}@;x05S=LyYmaPu0WvmOHe3XAN6$d4gH+AAHHcKIXQ9r#qg_;E!V^OFzd927rH~2fmNXZyes~HD6`B2Y*}+%HS2ylu z!*ug`FPi5w6(K?$l=k!=WnIq3pY}fChV+G%;nSQels*F*_Vt8H6R|X-`fqVf)+2;3 zsCQ#gwDn|}^5JZB&ly<@i|SIANtGu4RZC~#FJnE?e8Rz7rWIpFR%I>{J_CnH!h$8E z`)_%gh5VZKtYX=h-0qG>ecfWC%(ygC^4`v>#r_AxlAgDOkTSA^;rz6$7O+U z@~OjvTSYYmMRCtl%UJ*EPS{4)LK$DtJ_wUcnjpgD%`Nu@3M;{`N#9hk7IRcfq_>(R z7SBQdcZwG?M5lg&A~~;qj}FP731x-`$lr%D&M9lsC;&?tVBodwn({7J9-7H;;M+9n zmv)ML&VQ(?&xPboMh8SM0rs1kQwEjKL#dJ8G&$lr4j~KxU;`O6pNF%*S(`C7N)l1& zd_Ao-7xft15QRM8OX-kbjGUTk~7;03ws?A zKvCQK4?J|C@B?>6N7o_b3I)v2Y7oNGB{SFes{R&<`}}cOdB#xzHWH&vt_ot zE%KW0OEkjbn4>Ffq8Z!T2d7*#V$6t~wcO8szxXdckSg&YxK2O9b1;b5kE8rrB$~H8 zo_H_d!vLx_n^_|kW4hr-vueQujdb1C@;y;YT}8N`WISX?TGyxco;#zD8ugjn0wT6I ziPM!q+Dj-Yg~)Fr>=>c}h?%d$EXYU1zsm3{lI=o1S^U3S9n?Qj0nC30iSZ%U z|J{-{LMp8_?UNr}?}`B&5%=mbPEJFiYc{etyL8~q?P6ft?b*pm_;Sbbl8IWtJ*2Gm z!E^P`0@h;5Oa@>jW`D9XMu>8q8UG3@6(i%7&hs$B6$QHaEg*3lM>L&KvDF5zsIm%H zi*pWODgJn@v+b>#8(M6HA`rR0DT@D+82<)AncvPq)j>diy{-Ixsyi2zyv#2j_!+B1V9l|e^gvSMLVNY-?NR>ta zrY5QQu`vJ(%2=8Tb6~0A`dvWOHxuU-q?fq|d!982yifnad(ocuK{AcVJi&2&d}z#h zpK}3C+9E?!xACT~;ioEw$`NaCE&X}zB+X8-2JUm^=P^uORai;t78VZ}s&526zJ?Ck zW`kJMmDvu>R0eRpTQ_Oh2!QwR!pRe%is}=089fAFkK8HIg(DX1(&|)wpIQQ3=cT$? zi0^hl=DN|GN;8XU?bB+L{~6D5w-_DO!jeRgk|kbRHzDSx7=5Np%f#Bim>MlBGxWl8 zNQlxuQkDn(Ys(16tq?-WggC|Mz)NO~SDKv2wt%vCVH;(4OvW%@s%JVY$oAi{xms(v z&mG#MFNZTiwGzrS=%Lc(4Oxk|mK1m4JnwHT3`Y4~T~ zZBxpo`Dv=)B_mh{99e8mtapYKjNQ{cD+LIE!++zg$7Ef?-Q31xVC<1cP69Hpe#Vsb zd_J$zipIE6Hsp@$!)fDqVD8t?oo8=(Tj!iBBWw|87uouKo=0Wuyoe8wK$UdlHF>&- zY%I3JQ;ett5fxXGDlX|hHVkb&)q-2(dO>DFFS<4T1pNbYzz2}_xII_OPQi!}Dde5i z+)pZ4cj}yNBx0h7!uB%>7dy@oAkUw~M7zfy4{6qiJa2A%%S$SK`;1<1QBQq1Q?hqk z>D&|}9(O|cQ$lDVOup+ZwO1k$$XzhWUw0h;c(?`qRALC%RG#XBvIpBA2QG8(lZAZ! zc7$k`{OiT0EquGfc+*!XgWAPI<(vzqumIB`&A=63Rko!43%hHQcw-vGAt&@4RRnq2 zVko+_V5uUtpcFZ1B}O>da$MxS+cr$*HQ<<6W@sgSMe=Y%S#Tj}6kNlm1qUeq=ZKTc zL>b}c$kQNA%%Qh9DupAD zu-}^xM;nJ|vmdQ;8*p3yOAt~(hqPU_IYC{HQ|w4`P4U`Ww6^F3Wg%V|Rd&K;*%6puGG<7k` zcD3<2Dj!vG@+6L5S3wILaF$0R{*MBp(}7;)b|E3YDn&J511Be^sb+B;OHs(HQRv_z z)Oj3yy;dta=|TE8)akqw)P+6|Y8o;7?|4 zj0|z*eZlSq7}^s@Kcp3cU43qxCdicCm?GpYm&eKQWdOiaqLIj;M_X>`5xw| z&i{|7YYfQy{ra_9HkRG8?Ur4uWxHk9vTfV;vTfU1*0OQeb8o+A{onPXy3Y6LbI!TW zIaiLLRD4eagWgs(%MC1qNl928R9t=yxeT-o#s5G;a1=xmrV{is@PaMJh%8JvVOD6D zuZ|}Z32Pvk&QiBw#CppYqy229bEABZn0&AWJl9W1H`hmsdlXeuusA7xi$Y?)<46Z& z(bY=**8C+Z4%?;I4Svzz4XTu$uPqAc*v8>We!9r__)2ET!+uF3gJ&D=`9t{V)d&{3%q-su${q)rT8aFR0d(-xPk9 z%T?&%MPc2s+AUkQLuaC=4EamqhY}W7qbmI(ZOXb3M1EiUOJDjsvkL_iARO zgSg)|66ziKdDwmhKd^ET18vTLnUlCQoi}5+(Y3+RP4SHoVg5(RV)3KE8Cy{X$tDZ= z!Ftr@aXwjVVJnBmHRvSI)SyJ~K%_<>?q$Ic^54h0NPsPK3`yzQw?U7?q{?*Xx2vWN zZWg>7#{&}D5!L6N9Fvd!*J?6kt;;$|MZ3>gR=4qI=i_&Eab6q0%f?^NAeA1n-iX)+ zt04xZD3>ntLQL!-KQqcc(rbB#4C*0-`=z|8nx;DdrEHV57WhF!X zAuEJ9Tum(r8PR3;W6r7HQ@5f8JUEAd|9^KWq)2d3#GY6J4qlx~o7?gL-wZ@M*o~*& zM|pfNbA--PolagZO-fJ{rOC!1V=o6jmWb2zambpc&`*dm%N6X7IKrRHBNqT?Q@{sW zGU*eiL;80=1rDxvH_=6Wzena}%S&^Dc{pwKTRzTKKj=pktYS&{Iv%!2HKbfLiG%4! z(4r~6ZZ+pLE9)F7m9tW8pD{$MY0+klPgW*j#({`6I(Qx|43Tb?%g08=L?e>^SA%e{ zZ2CfWf>FtlidGy&;+13jt>994z$U<7$YXinJZ|Gl>a4%p;@bW%Ga6#}lKx;6JexlB zg$&l$fNj6W+U;vLwzJpy-wS9xsn%N`8h$R~XH0^*rd*vZ-l#q6wj-)9#MKN5H-?kLOA24T}Pf-#Uow?M~~R?adg2a;IsZnk+Ega(NE zfcV*32S3g7I*q3dxGgK8vg)*V2zE90 zA!y9lrVjqys0I5#EO(M}EbRrsp);q6e2cezkp$)#V32?Qst%fusFXRbQbS0r(#!1u zIr4rSJCxBl;L+nO#tM0|J-rP$9naCo{{g)`MpQ-B)^7mSqJoOmWY(=%d3?4&!ggA= zc$e%ez=Xqm6;bw*6nrOW1{G~}# z2c@8MW6qy&`8P=jGOD<=w5x+0fNKu6R#HYHQpSyk!VQj@;O2A9OL{%hvFY19pmDJm zE4*^|wlG!t8@~CQ+(8mVA-m4h*{f^&Yt=0BSC#8v)!%Ot_MzpF=vj}Ai#sP;ilZx< zX+rE1PiTIVLyEbXkA>_BMGmD_*XnP+izBwRGTqlIivYjU@81^l+R$4VqsF;956X@f zH`*uf?Yx{{z~L46;|+AQWq3E+e%w}Vbhazl8eg!k1j|Vod9C1gx|}?$$@hY-y0tqJ zzZy}pP>3lyVzoG;)Dqfi4R~nRumr=Bl_7nx!%E8JJz*GJ{@((Squ&q~9fno ztU5Ex@)3Dl+_~-xxB5TVjTXj!-QB;c5u^^*VwGNh(^>*HMJ(Q#?-Z zFD{fG1G(~HE)jFeyBL#1MUjV2__|xl@d}XJ#lWPyXXciNX?7Rm)yO!rIpt|`e z6X^p6F86A;7F-AR`MF^$&S!Z4nOC-`-`?62N)zdzeLFHi zMS03Pd-5U9Y=5jpPBWt}VU8Ys={KKcDpv*~dX`Pw;$WrwufpG69+(DcF?TAPY0)u03gX_&e z9xF+uhuSyX3D%WO2=bTsC4%>j-~GE4k-m`o`S;IwxP$UCGI9>T_}GwoD^AewGiqUP zeOR?hEyg){LZ1sC{+H~+l-x1)JbY6Ee19k=w)o}bke{R^r*@!RZB&26A;qcPvzgKsYg zDFQuM$N@NH?!GnqK{&1X5d(Lp}c4wU4SsVtj}}$%~#l5s9j}lCm|3I zAG>nbdo5>5bj{MXW#_y!ah>iB;>f`igVN#nog}8g|K{C!ss{=|{#d5f9{?U1Oh(u2qj~FMNL%H&du(C{wkF zXpe_-P$knFQGpGmX|J4nz}x!cypx~13bKVjFVu7(%${q^)FMxtmy09ck=3`2nz6o< zECTR9O9Sku+yUpyHaW~_cN%&N*4X|=CwZUbpH4(*KLB2z||Ro6_jrR)rLuF#@FI?*{`*LxMu2aB7~~eM~Ne;VEGc$kZqovO8Y2Z zRol736PtCHe~(w#H(J7|3i}3RX7X=F9A5jit-{gM&Qu798gWF*@=~I2CT<`8H`ih< zd{o7Q*c);mO}Jr{uB@%uM?>+;Ne3Awae&E~I0l{mg9=0luc>1&>iK)VfkFk*=k_ok z>|DApCD_ljl;Pe`D72QQmmNLSRUmcgEb!yd+gYl78FBNV{`$Z&@59jk@;w+?$JcYa z-`^HF*jWQ@mXZ%pEVDykyV9 z5M2fo=i!99J8xu9H~xCzsk{2|z!?5{fe}JDqtK$^XJA`N&IVtYB!){grZ?E#?xNpk z3FxHU+rLBIj&F|BPxOxbnPV)ZNVhfHMtg1_?c>f=EyoqG5~vX7ln8}XI43iMKKCIz zzE`_#-$3LMJF#Eu zhQs%p$W3@>*ZAHO3RIl@8N}laali58u&|V&hBIp`U|m<0{gXy991KjY7NF>DtDu`5 zlCnjY6s8(5$KiGE4AAL#ehyMOpd5WOLZsmMAm_pI!z$T^5)k=k4t_0IFussvq_RX- zW4VLTnM{I=@8nH6uO4gMjL`O@+%h(brrX!zln`kYvLDGzbY;=dn^kIkE=m|i$q$u) z)C#17mH+X%60Yg)qRjSGaXhIHJvY>38%Cb#+!%b{;&;a?TwuA4s~8poI-c_JxWG7J zg9fWr^wZ`Ig#jE0d=~-y81~ZMFg&Q-PIxF^Z&X8=yp||PGBz)?2h~1nv}R?L6Ro?y z%~lWxo)T&cYS$f7aJY$$dgc>&3Fo+iI{x2MH)Ak`#}V++0aNJOLA_t5Smnc|R{EpD z&^j}mJVf142iHQrziJwS9Ss{PwVG z5;dWdcy<4ug1G8b?`ej|RN5`b63CR!sa&PeKvZ|#;2n?pKSzqewY)a+d-{VnaM@eF zA*$UveOq_%`m+aMA$_FPRuRk#@A{abWCiza=r*hq@=^3wD0gY(_>Lmd?qRz_)P;x2 zudXVHzSW0d+MXW5CAnRt(Xh)mYUNV7tco4|?!){g{%Rv0HJ>tiK%1g zrq^PcDt&83xpG1@J+0Cv$5}+Lugbv+zWht$0k#-9p-v=UT_Zi8lb6TzX?puy*2L=^^fUD_&AId`l%tJ4*Uex$*P|0zTu z;?L`gGQER83SpBALlubH-&!7Y+^BSuw93<{?MOCd>1HARFkpWZOTdlYk(4|5mvQi$ zKO(hBmIGzxP7h*q0wl5vt(CHA4oZ(StU5ad14D z*)S+we@x6PC8QBUKVJygS_8?)Sa)>BVKezDcYy0rSx(<0&1BVK% zsLd!P+wuHI&WmYcV(rmx@s^#VA5Ku50gm|q%fYPFS-*|uY4et!yDOY^olVDQHZ6-~ z%z#eiq`OpP(LPV927DcZh(x=V?|*tE>Pa(kIEW9YYgTmp3rZH-k057HaUQtltWm9& z7`(80OkM53fg%N6%?y2oqQQ+&61pAli0x#re?0-37`-+;8CXVk)n!v#W(SOilj^eA zc*ULDEtp&L1EY>A4n!^IJWEFSQMnh&sZRb9KL1`&A;_{Mx|geaNQ!ewVHx2Cf1?7c z;nj_G##_nj)@*f}aedLcEG}DCK`s9&jEkz{WaUPwh3xarsEX|6;KTK-N$e_cP&Vib zm=}S&1bZCWCXb6SwR184@!l?AlPfb*FyaJfa#(SA+KoSoK%rBo5%}?JA^;-BUvO50j`5&0L3-8qSk9_7i08+0+#E&_i}pg4 z^Ug|IXV@OD!a9T`a=XwqP~^2GlOd`>QHin3f8p`8=puY2CJGS``U59i-qK!(A(P_3 z!P8v=6Pz0INN7-kPGThUK$=RX?jr6HhE+#_X zEcWx_FHd88Yw#CG$dMrXZa}YSI_mPYY(JI(a3c+tG+lq#^q+Mp<_bKkj=~@vi?~MP z_`)4n5yVB1p9k`OdU@z!1-3sldU@C)zFnYdZp`Cv$+lp;-N7)$0biLZ&b2r9ZU=ur zk5Vp~q;2#0c+zdKIw;hqLfDoa3E=u#d+-%LG&Z=FC7vj(Hy2^Mg~Cv85)XGPob^5Y z0Ph7g!1G`oNG(mlMMT~^B6U}U_c{SF7h-*TI6LSjzLM<^o|K)>Nak?35lq_Qel47F z;S_~GB;Js<;unDP&kH>$@>|>}9XY*3EXp3Pg3#JfAK}mY+dKNQMcGc``{mVFQ%TOw zF|#)zwX;HYFw6UgD>qj!Yce-mkwK2O>XC|Gx0NEgKmPqFf~UM(+CWbgHGXw42Hkb3 z`cL9JYSuf+Sc*MU#s0e&3FHZlynmZXB=WH?7N%8pDu7{fd#8745Vn_=wz6xHL;Y24Xe1Yc%LRtq#H$zD#&D|3;&IR#mqzXd>fs=hol z3CT&!{G%#I6;|$Q-4bif;iT}H$W^Q?np?ux@DPDlespRC8% zx#M|-SiJub6=QM-f6LoN7-U~NRx(DE4|awk06HzR1^QDcm2KP%y?G>!?v6L-yL$Bb zg6iUXuy&=FKB92=6#K$}311?}dh31btbtpEcYceC$iNR5#`k(EcJ&{ zRvdf}AxLE0Aw0Q(#=4l$ry6dL!krho(l`^c1DXrO3bLT6xE!JT4X*YS5I)WO>)?9Z zjkG7I;!GFH+lasO5`H^#jWHGw2o6g5DL`~QGETdET#nrhM4YHB~s{bqgawXfm>BuEDQ3lOzWR~=^nqoEW7OfjL};8 z3JUuYjB4wU^nyPn>qOZS_IHXAar>|m*zimW+%QV1K#7`#?uo^`C)yp#B%`W0T#WE- ztB{E4+rYHed$@V0%k#x~rz-GFfmP?1Kq*X*-)=3y&MeDbx04dq{_u>B@d)>sdEtOn zw0+Vxes5N!N8N%b>Ct1>>PAAmm3Gh)cRALA&v^6)WyN0#q%~4QX&YE#`x6a@^+)G! z%kpVbR6tz&XOZZ@%T;&n<@>DgFq91IjlySJ-V*}-QP2t;FIM#=pi*eikvNrX`&C|o z9F(mT_R_DoJsLunSs>uWnG=+F9+&!l8-6|l4$iFB17D^6Fxf281x@z>_q`k^v7Yi;T(LZW@pqQiFBxLKvEfbF4P)Q2-_$`)bs<4M4GjQy@6-i6j}Rg%Z~ zoCYlzmfXKLBMlr=m^)t#q(LHh&`lMdKgJbI#3lF9>}d}XZ#4&;D9dB6I4>CBet+M$ zjk=29J@8Nl8Ud8|k`vaPI6A>iWg;);v*jmrhN(dltrx3cz##_CWNBv|o?yksUY$Ti zsC~rlVt~3M8-+f{+9@<0QaH=>j&+5QQ|v%xWc(hx0HCx>Nbe{oHQ9*t#j{Rlm$Uvcu% zQK%?)-~Cy0eZMl3$a)V6v+alvD^bMu-0uJ|S%a=@2eCzWme@!G5%g_8+6B9&SpSqq&_!(Q^%h45jPOwz^mgB52N@o0f0Q?HC2_&vN&W%OkyhFGa6T zT&S3RcS}XY%Ckpjn=7>kSva`vZx1V`;mf7kT6`9|ESt$q(>#pN${Q(r^;-5|F(sp+ zIS~jsAlp(|1TH3N#_8-0qDM%r2GO}e!wq83b~^0gKF)`+Ms+ed0}|WWqSV{jix-X~ zI?Jz}zuP0?RtFN!098NDs6#ZX)QLNMniMES6v)D9QRDTkovhba%s?WL4Pr4-cUA9n z-tJ7@;ewA$5MeCb$`WYRFqSQ;8T`Y|w-F}(Hv)Rj@HQ4Yb3%$1$ajWOOUj zavdq88JyAdtf}?cm}uilRV7n1CUuaz(}xQ)O=@nT2T&)R9f27k5@P6`!AVNd6sW4J z6~v4~uBkb&o`sh^;-<;%Of+qu*Bf1tm4j5UmafsPoAWYxEo?5Hd0u9{J)*;(4wTq! zawsL@ePnAe1}pC76hp15yubZE4+`06=^n)!cs8?XiKLZJdDa;>Gy*}8K7rP0I)nrsKiue7 z2s`|qdo|(`ikkU&UIxh>i{Cv!AB z$+Pj`0T7IjL6(%6bCtkLG~_kI@YF_dr7_EfxFZEp=qe<`mA)ZpJ!+l{LBM~(=W z_ax^A1rkrBD+pgR4etwJ?G^C4e)mTfrl75k*EcmvkZqm(;Y~Q8B81eOI(f*qJixe4 zuJYQ6;pEyW)5B=s4u~h` zd9FfTaJ>s8!a+s;eS|0-9!TirJcvl;zP%sUD1U3>)wDSHT`jTL_gkTaEq5gQBRaqa;=e75AN zMLn=f^=?zI?q4bgR7g~S%sQHE9J*^0;#uE(6j{VqT-{zzQ_^Q0M0*+Gz5dwmUtvq zpZRkonp&*XR-ef4nYYQdp)-59t#=_`J%aQ^R6%V05wbl{$df5oDglN~oI`JzhGYX2 zwD-QvEx;Z6^k9bp*RvRV@UE_e1pKM*UDU{A>H|+_-sEtM(0}v`7H>((!d91D4fh9?8r#4c z!_Bn~-HW(O4qGTHwQGt4$bWS}9f3I#+87r#&^8>94JT)A8?_BAI5Qk$LQSd&X;6_YA-ni)4!HJ z=aDQa#gLH5ps0Q%Om)BS3h`UaRj~Y&EPu={hTBMH6tW} zC+$QBS>l@TuxVWH|MYU0(?F7OT{7oCimA>tVtSJ=)|&3YfnY0mX>w$qn=q_g2-+Vq zN)8AMe3JgH6i2me=jIc950LhdUu~5!`tf_&Im@ccMcUVg?u>{NQSM`l?(C-whms)1 zsRZ3@YCZ4D9u+m*z!-`h9#l_lG~!DoiZv$ayzm~1!Mp2Za4@ZRR`BqEw8WNyYH5xi z{P>|hCsO&aN(NfyR8S0mEb%%Q_q%1-xY0b)f?2Tld@iyBF!UQrb$7@Njoms5E4tOMl=`vJ?-e-N)2yDm^jXN!IiTR+Q*i~aB7a5SpSd> z7aL4?%M>kaEA`Y&!(nl2$(Fj;7>g9gDK4*G>T-_4up(B4!5Rb>#aVnZ#>}LFjiW&D*fQip{#k=& z3`Ul6;F2s}658b%K-Ue2_|Im^KOyWR!XbKi;KA0iUgr^QHWjUpCZ6}^n7WyrjA+z< zK5=}`ia;-kxgklmSBdz%>PE{91D5w{)a11D)n4AYihn0^f(_pT#4^cho^5rJ`PN8_ zAXOYBpt7ixt#>bPd@WB5H#N=6O*hsYMz)&O>W}Pe9d#}ZH11~%G@?jH^~8@p;;)B0 z`ZA$*C{~M)@E|cE%WH2p;QEfkUVR*EUoGyw4(46{Y+Fx=Ce&Yr zr>{wkowb18%8_lEOGLsy{+vdO^@AdcWRvp1|9HAE64lLhImI-|H6&FmCaE9m=V$+* zpYLSM;4NLLUjWJA%sXYV3Z{MQP~G9qGo~#S6HTfAg3wQG!CbfCtmF|LAqRgp3*k-X zT9k4>@g0i)Fy*Jkc1q&BC-*Bj7c{F2MVc-*IOy#+)7B88lU}~#*=yr(?x}G^C$kbs zTv#=H?S}SDy-)GB4D>HQ(Tu(d_e`dX8+xY0V)fgf+IpR>$O*TER>%gHBmNhk3=MB| z4KM0@ETwLis9T=Toz3yM-$t?4Jv3}SHxQ1h&Sd> zI;MOQ%XK*)R+TEwN%?q=U3{o*X?z<4@m&zXm{!(s{}K&kw7j*^k|AB8l0Ct5Z=Jj$ zqDezT>(=w;uqZIgA0uUZ77p<;7s$&CBzhn(x3Jp8hl%fT+rQrJwW0B?V?_APAV=O1 zvu8bvsDbnfwLwY!OE$IuK3i1*7}c!yfmwl{s`th}B{f8??SY9kRtHcHT_}Ijir>n> zFTICc4e5HGK1gpdM|m&^m9xhH_X0w>v%p1BlEs;R7Xf=tbgV=PMll*E$NdN7)@qV9 zLwsTRU;Xm>?K{g#7LLH*|M@ql7CnQ3IBWUz(7WJ1(f320l)S;6JwFmsb_Hw1u!4f? zXC@p01=Mck3N}Y^al^QG(@8_n`LjT6=5S_xRhqzpu+K|-$W}w%YEI+N=5w)eUe;q$ zlp(Y%V@2@~jxz;Ns%;OD{@TP5gBU}ARsp{!S zLtTfBwE`(%B=-UYK7|q%;$p{8-F#0=BDN6(J{s5l!-_l7;8aaTBd#gVDWms}+6=+>UB=a^`hXjp!Vk@E0bml!n? zGG}y+3dj_a|7XbUw$Cl5;y&&8S)%j!UC85(`?J~}ztzHRw-rZahk-|QgVuPX#dIOY z!`IUVNbaGDg^OyrtfKZj1Y;WNvFxT3-J6D|lm~Z?wRtahfNS2a=lwAeo?qruN8(N1 zxL1Dz<%Rk@tJZpA+LI#@qQarvQgQl5a(2F%Z-d*};;~69H_@nn0S<{wEx~R)P|Kbf z3tE%RwYLuUHcl6t&n9%(iOR<}H32JEl$$r>jhrb0nT9BawiK|)gRh#CUck{d_ACFa ze)(t#a=O#S&elIRI)wVqMu)qG;TW&eGREfb{o^Kct6p;t!UnlpV^Ux|zrR)9=Sh9$ zo%3vCHdo}NF4IEIY`b*v7<>JkcHxVdRR+?5OzWy(CdB52^_6fEDI()pR-92XWQ^&oMHvN3cM|5rj%!l!dBq z^@MCiydHGxkyU;JlHBd*sJo6i;-0f2PsoTD!5CPAqi9cB%s_iE`dcQ-p7tynCuG>N zZ4WgahjcuQZf8vWWZS_1aOw)B+zpt2x|WnJZ3CNpejF*fzNF;nkj+TsQ>+Wi(ZzXJ z%I)V2<@HI}ankp$MPhIyKl!|e69u5RJ2ui|*0(6YC)u^RV86KP+iYhUsZl z$%~ts*T+CIadBEqJX4MzLC4Hp){{lwNu3T=yeOTzhG*j~j6GR5g>gaY>7-d^)x(>+ z@|)e2+($bY-=ug7A>2^Xja$C=%q`Yxs1Z$kD>D zKz*m!=Dh6hl7T#RbCu6UGPU%rmiOUlVK#PocaY0s3+IxFt`fAAvzsm19B@0ZdyviJ zEh{ahhN!5+ZOer-#@y1Uw`T3D6K8zlR#qkcuZ}aj8^31!qT*{YhF_e?y9qm7MXW1N zOW?sQ5kllH%jv$({!(Flk!ed$$!6NO6NdE;US>YS;i(&<@qLS6;~L+*6Gs;5Xxyj3 zZr-b#6q|{NDZG8e{9sQepsQ*6x_1(CB48my?Dq7GvFuu#vkvj(33w8>S6g>Gg%P0F zICMG7NI-cl^b%dg?EPY*w`<}A(R zUVEy$d1O^X$j3<|?ny%K|7uCvbH>Yi7R`LEuZ9`_%@EDvteI=0w=nX=lp;Rt2B zYG3KxH<5N>R9oc-;+rdJxrIDJr!Gb0Jj3@G(1Pd7FfN4i(>UAyv0Kl8w0zxOH~LAD zZ+*%Js~Z+#Gyh$w6cLNvcT3S{tFv1%-Y5n)@~ZC>`C|H~%Yz?RGWtP@TiCuee`8M5 zjlsgJnXf|?LLG3bApiYoun9ZfDx76}8&kxdEa$uCQHh@`NpK-~A-}qtn0E<#P|k)R z<@}m_PBdcx@mB#NCVCqGZ=_bZ+%v;4KY_aw+24ycc-`Kv_NolO*`2^OJ>(p~amk8; zYyr>p_YiVP^;Mq;?yMUErz=H0PZxCtdso)#j;#d{#ccqKR^k_AhnlsqoXr`I3ko?_ znWv5oB{fgCqE$%OI#&_cuNCYrb0QnP=enQ0r#UHrUQE5nr<%hA<amnE3yK z*}O~x?=4Q;k~YG;%S3gikqqO zn;~hi+I3~jnD>;?und&=fFXLpx&a;N!y2{)4M8;+`{ytc2+~gC;B6!=eq|1ke0K00;Ki0 zLIAyic}{(IRt5tZPE~QfKXDiC>pD$c){K1wxbtqfzKhDA&C3k}M?CK)d|h_#J+d5& zj{o@muJ%`N>qVDFopnNV>pg*W<>$axKsF5Ot`WJ3wW!9%jmo#>yU|xJvoX_q7IYH- zKgKe125sPvFaU)IK>~+T;>$4Mf1?khmDootUrCKyH55uQx*ur{zc8a@ahk~>3iY26 zA7?^f=3I|q5@~FruA_cKbCi?AsEvB6b<|QJFTx;$6^^4yp0KUYf}(v{z4szA;7_l3 zDa$~|4c5=Jlznj$*et|xd%0R!fyX+UgiM+DTJcg&<9-}HJzs0QF}jmdYSigquU+qE zzcE?2T+khP_PnW)Eh0)*@$ZbS^@wy4F+r&U7ErD^1L5Qf2D7k?B(nE&P-MSI$Cu@c z$M&H&YZQNNzGfKu-MEDdhxM;w!vd_MF*#&nF&Un?^&H@mK)Fxwbw_>>Ky%fkGjfZw zoQ(}|Ro+l2S!d8(=j~x1i3nMm*?97tKL3<#$!D)$V%z~GYYv(Ah{@|eBLnh=KiPmK zikKmBNTl)1?sHg%-GaxeaQbx_usf%!TP2>jQe6L5LZ*EVSbOHKX3e=E)h$==o-`_eB#IU z9kEe+Ug=X{Iuv}4b7LmAMtBuBZ__{@xJIyCb7OAK(|T*=)%#4AOFUjA^Q#bnx@57D z+klsOksXV+p$^ApB`i5p#A^wpY!1D^`gLajTkgjVitH0K#X9(zVmZn}JFqPE98#%2 zYO^Ns=`B+-ik~^kFq4uWS*=ho6jKu_CBE{jEt*I*fkJ~wnU_|$(*O8+4pQcjg;n;4 zubtBJyE=tSMWvh(=95P^gl1={eCe^yq6^zuo?dPb>TZ_=C!OAT%oxnkUt1VwSn_ls zW-|J|v?TjDFoGR1!R5o%@+4W2y(q}3c@zx^@5>`3Wnb*@jO_GPpG&qT`}qHhJPhMO z!H)Qt!G;&^{pFK$hbS!I>NeRq8%#XvfN3kvl1+og$2^0-XO!tWjAi&oI-;+Z`^wWL z2{d1gQRWc`Q{;teZ-3OI$-mK;e~`eXSS+B$YgJ+x`S@N=paP2@^)QYPt2l=)OAoN~ zQ1>u*hWqxkJ2ZfFJ6;Hfx5>6iXbJApo|x84^8HP7zxLJCU_JklSqlyjCw~+5qHT5F z!G^;&K8cb?!=6O&9XnXw0$5&LeAFKHGZk+=s_-v2RgnCA%)dBqn^ne-%+fZ$Nr`Ne$AX*TNER#)U{+vJI#Pp(?R`}#R3zvnG*@71?h%ub z-yPZ4h6F}5QA zhKV9McnH1y>{~67UEbwER(81?2IV0>*7F?=>UvK8k0hv~8QFg#K;xd`IBsaiW2%M} z=sYnxKm0ux;5z?ph23M#2iJD;eC>1Sk|ehR?bB)fNh`8&{P&6z(<}(DT^1IvK2Rs6 zHQTDJEhHi~s`onB9grtI9n!*+mRzn(2>PzN|QFj#l&-`#9{bQWH? zroyKpe>Nau<%~lXoBgls&}{jIw0TmRwEC8JtD$x~h}X6tt?ZW{sL%QL*9B3}#`Sfp z>JB%THC+F-gRI5-V+FvJaUwf zvm=X=-ag+ZkLi#htby|hu(lcqp^2hoV}bXPl;cGed(zG+%1{6e z)5C`N=j3AgAy~qn$5`Niu3@-SCkp$x+98ovh)5G>e2UKX01Q53J4+7=CRdlq%d%paCZPMY`$lAN- z$7FcV&s#ludy&aYCY7M^QR@|Rt7kT1=q*a7w>42xrh^M*jV#ZFkcu3jT1qqo{((+G z4f}$un)=6$6K?c+o+I)_Ut;|3yP2VF=$b&QnY=fEG;Ss*J=qkSmSH z7FKBIrJ6>~NCx5mif{^bgp4M6r$OY(qK4Xe#woE*E{7s-ez9G-Hkphi#9Xk`j z+V!QnqoTzgwk1GztmXB(T+{_C6~t%$_u}n(*|P6XXMG!4{o^)LOtC7D+d--k+?Gda z7185whZS4Kw{P)L_~+*eqx;8`qn?qT`Kgh{NoK1J_f4jswp#Z$tH!7)<~^z=h}*=N#KPlcv+_E zE+NNTeOP)+Ul-8-J(T8;XIt=yV5f1UlXrIeWIn3D2yTZ#W)rmH_lhJWgAc~~7;`e? z0bG(~>-s1UPVA(pd$(Pa|FsU)%oVK@SN{kyt{c4alM@VF~ey`UpVStt4>O`y&_|j)jYB%rvvQud3q8zG_Lv;Lq}*6 zc!KWtVI~afDz1NO5^rNb^F(SUcB)l~_e6SHZWHI(#77?O#YBIXnmqyo)p-gd6;Ntp zE}umEljF+#8aBrE)-UBNnv15xV<1z-lku9xL_LB%A8ML~?$u@zTQmKp#LI%9d9|fl z5HvF`k&T0kvMSR2=)i6kYqtQamX4d6{itbo2hb;*Lt68N0##8OBR!I_uVWZyUmJi^ zQw3sH2$t}6cWi)-j+}Enb(p`vF{`USk|r$WlAL(OK)c6S7mq>OjNvLNERxd-O70*+ z%nL}6-j5l{ztZQX-TU)L|6kRUXJ^PRXfr7+0Q&7ih=~!@VFxf=F2~fZh{|60@(p1= zR;*2!d8_K#w$i6(&E!J^ITcxcr_r=cN z&tQfWrhD?w(PafG8ZAL;o#9Lbjt0bM+rqYJtWnbU^f*R)Z4w8&)X?ZTC-Z!#22{C~ zC5hSzQDlFSGfAa)QR}xlGp7F!ms`O&M%|1#{^0U?W*K4b|ZOY+f3$G&w*b~Cg$&QSGVX@3JF7-&(i2ke*VIj+%HX|a#a4~DDfJ{X&ssDc5$7Hmei<#j zS{KD+mocH_+Pe_8P%AZ7=TECYhl}7hGCHDEYR`}Mcak(CJgb;%;phE@Pc}{%*nCUV zilGL{@I#C$f2=tZ_P2PlKIhPLTG_oVmfutrxfr7Y((rR1(+aC-2(pdmwL2wN>S#*= zWoL9>p1DVz*DGg~5ovL1%M7751J#9##%eL_(kjxRHsO)Vo$lxNJD|q_2USnz;EgA} z2L{Hg z1oFM+k2xMDM#(rjEa)QNT1Q^Bjc!{VW#koKl`U^eFO^x-4ub&l_0M|_^H!a4mYX7R zy3S{l+U_&$gBr($Y2$afPo-eMy&IMtENSD;X5`~z^)eV=Y@ch-tUm00ES~S&ZFoil zkm$07xyby@r@g#gWUNuDj`Xx=d)o>JFH-TMi4XHNs)PaJeOo*z&2a|~Gcu6tcdsDV zsqcZ-lOJf+5ifHUFc22@>O$Ll^0N344zEm>e zZ(OO7?db*2$D{Oyt<{G6iT$Y)o2fN!Ptx|h0P!O=N&yRI+PtW5E4SCnVSDU4M_8Ge zAmvKTYG-TwtJ9haD$6GFo60Qc?Mar}VLg56W+ohp=e=Vg$}L*=xh4x}YNag|kwK9H z1@V}VCL?z~i7m<80e_+fM}%bVTQb`st^S4y(B52purMe8uxw_hEpjy){lOI2#-Y%! z!?BS|rx{>@BJa1}jtF3?b8g0}@fGJG6F!triftyZj4ixtV#v!fPpwY9!7X9N@$;Kg zZ}ZeKJ=hBufJ0O{Jilc*YpQ4H6K&wleq{G=6Y^!;-k(`9SLr8oM!Xz)fZf;7>xsm?R=-5C&gsT%RmlYgeF3!_tLSK~C{x z>u3{J+&aCOpPbr0wSz75O(&IB_glnkO4p?^`$^~b&2W)c~aUF!K8vFiwo1~kRQC>g{~%#MipK_ zAO;fFMN0k;Wr`+lAW4hf#z@IE2%N}NZc3`dy~1C4ViC0YJzUu}*AUJo3dhNi$0<8E zaqoWkjhN-l8mBKo{Xqpo64iU)wL+b|N_D?zhGF$|iDAffwjDo0hV(A}dZFXKf}woA zKMqwVRDM#)nrCzOVBP0`$CBW{f0ueoF_i+El||o2Xtxnj>E*g+9`mklTeHlh+Bm7& z8k_-&c;H@|J#<`BozoA1#rXxAhB>;V=T$!Eol1NY&=aALjnLjuNDH4ThsSBp`oJ9|%wb|FR`Xzh^2-7!$}A%}}f_S$ZJ$I!BFI#yyw8R1`H|NDELyNYkkc z_SNJe?z$%i;RxU9OG3c>@|J@21xTOf2pT|mnuWhK{cPq{|DNib-{o7cmSs8H%ZTe6iF0UQD9D zVS+m*$ql)lzg9onwcfy_31;V-k`X>y3{*x>QL%5O`2MxDp(km3U!1*{RcG`sg8{^U zkQ(y{5uWun7ES<+diM=N`8b7ZqV(|a-Z(Jv%9am~8Mw=DzZYtsgc!57K0cVHBTri4 zOAq|T$1%TQ4lfj}0|TasLBsUPXxo4TGSB!vV*7N}hidJg!(X0=$CN%jbP#ZiRHs44 z*}nUPF=oP@7Zb9bKgrjmk!@eH{#`usd8(e|*x6A{q{qv#vW3it^gxwWTvoX5^Z;$J&6b}QSL1o}J-i^v` z%UFx}>|iySuxQ?w0P5j!SoUBi|K&FMj{A z);Wv4@1A<*nVEg;+ev2%xP@7}zNJ{+#amvc%1`W&7EKHjH=bBe%#MiZOy^gwj5e7< zG@1@jDZpp(m^_Vf6Ux|{$#61-2o`^|w4WJnOXfwnm8I6@|c1pkSua6)V zyr$2?pe6tWFl-ovGnmK}uAeYFTc_VR5|Y{1GcTy8^xeg#w8qF8RON?XCu)>M<$px{Sep&4*jvbT3_5GKG zFj-H%2|vrg4%Y@9keuWM8D0-hue1yz>$Xri-b}J%s)JH(7T>~shTk3MG>!4yV)0nu zFL`3)9O-Lr_)>{_4r9K!+eFI0xf!ei$#3G~?moq!h$57XEb%5AOMX#nXB2FGBAQDb zT57z#1}_ORYkL*#Vu)8AErC)DdLCAU0qJPjdSP?{peObzCD&FHnzES7fd8vU~gZdjSKm@muV=r;OAjB zSkPXSLH1(Ae5`8(W504lo(vhwGJJpb1kacmHlhqSh>(b(MKT=0_XkUs`raXXpzwlt z%4(EtQE8H)UOktF&%35lw{4iPdyeVvLa5(~lV#^HH^xc4tCa3Ca!DfJ?_3Y9f!Ey%c z&P@7EZIDf^1=t}A489-i68v_?hVjbb<~Am`@>{iZo|&M}e-p+Ru2n$II&Um&UR%e8 zobY5pf^u3q!W<_##m5p4h^i{-L8;n1c3lb>PfFK#1LgNcpnxvG`KN38L{$3pC0M@t zYdW9g&esevCfN*1=e6&L81}4s+R7Jk<4I}EQHgYE8Jjq!%;k?G90H)J?;{Xd&x;fV zL+n&RrKf9`Yp^XsQ?ajg*@I*j7s_Wo_ zdkp|;aE^(qNlsXQ0@P2EXYe|$;HMmR!1G!c9Zwh&xVnd+jwl!l1#w+a*5Y`Y%ZFQp zkJR>_$XGAriYDD#R7nA?hF`NdxpZ2nbe>WUlC--GvbRyNzKVXImgs1=)2a4q#*and z=3ak}^~ReDm~`xlKUN!-0LJ24xe$+Aic>$JEe za1WGhH7z?@#=nZb1>LrqJ4b$Gr{?jSv)PB9^soP*>(%oXON3LocSh(%lJ4MR1FE)V zZiub9$WiO%wliQN?k#JRAJtof!>#?>$LX6+&^|iO zbwlT8p0h9wrk)1imjQ^p5)05jSVT9r9D?5#jPXzoBADGULa&g+noVw%)IKDeEFfMB z`2iYZHW%VxY6LgI{3eaNK($xT5aa7@V6zMmost0_@?*XuCX>&y7%ZgdKw`KVF7wfY z;KqY`y;BP#w=ZxmaZj7TUH6FET=J(;U0=71XJT5r?p}&U6?S-+6JV=(@V(#0CfWh% zs1Wr|Qa`w1nX3#(Weu4P4BhBIw{HoaO2$S-xC-gNF_+2+*T)Qx9Ztc@0%#?@Rb;m0 zZzfz!tqX0L3Fx5YxU`d4gS=t%DPh5BjTlqeI^(0kU5Pce`IKxqWcIH6{%0QTOtY&E zAjLLtyEX&E+=BoZG_FE=GTe0Bshwo8@Hrgp({ZiacZ2Jmh3my8`kn%8Ji#wuoq@l@ z^DIC;AGZEP*yE&t4LPV5Fh1?f~134+|15*`{)W z9k2_RV|q;`Q*EtX z53>vhUK3mJ_zm3_$pY?XY6aBgD}rrl$>S_w}T9#KB2$$T%S-( zwyn@vm*jCp59T+b?ET$BrM-8_R_)G$43B-!^mcsbn!kJ^Hlb(ezN- zaV-+)^q~xX$&)Fr5!60;89l;`RR}{bi^{+krf9Pz+=wzLbvZR=#SrD>MP*H)k3o_Y z(|!G3kr2xG^$;2j-c0!#>YF!rFav5583A3)@QwadDy(bql1qsO%@dCKvNxYyiVN(W zy)CL%_fM8UAxsHKQw4Q{Qct#sv5{NxG1($e47UuJI+_2A<3%sn;YD*`xDT12;-gd# ziPKX;a)(h{`+rHt$Z=t6e1)PM9;B8yOyCiK8+vt3)(daqVaCM6?Y$-woyV*`%rb2< zmEl@09It)&)GYd3QNPl)?$OT@moAjd-D$2mL-KWMhB;{|c`=lUA$f>s8tDE50nwn= z1(lKIFs4&=L-8#%XaGWjMP;3wi4aOl0LqiXyAktNj>dXrb|WKLJ&KJ+j!v4LHVv>% zi1keO=AXBT1AjxxMRha}S+*%Kn7SqoGL$%6A6>P`tNyDEfYL%|t=Qx5l16XsDnbh> z-(SrJf*Ix?Gdh^v*n^F}=u6wH9xiuT!ad+;-sER9R>*Meju)&naJRpocP0IKi(si}zEyCQ!{kk9JzpH^B ziQ3vL(3dNU{*W*8EZHW6y#RsGMqjw?=)zwVZ_(ect3x2uIy>50BXe4@BwU1AVm1rY zZ@)sZ{%r7Jk`|Qh&go{Zff=J-)Mgc0J@p1_)@TN;vKuL#nkHV4gFUpEtG%ZLPE?1m zZ2aGm?xNwJGWBdaV`@|!vKt)i;H{zyoZt7#_KsBtMpC;JQCV?URKrQQj}dq_~vzC<0(n@QRh%SXu`w_9a1^{-KDq;0YyaD(aYXOz9j4t(4_-LSY_R}0pxvd{8Eur%*EFD zSx9?5Pnavb8?}_iiS5lk&aG%YLrd$-f!Fx_xPqWicWrQ8!_j65a?>2oQ79swD-@=k z=L#;$eWxIXEJ$+2zEefI1K3R6PL*JYw4v!#M0wTV2!z7iU2#Pel@oUS)=2Sn-X@8u ziv;}K z<_i#?zd)ncqI#05ic!&ne=<08I@gn7YAjS8@!@^wDuCqoJM?>aO`GNt~5(6Am?|LvJ!5MsKeUE%#~R zzyB`{lp|nVt<0u6`wD2?xunND{|acdfJd!8;rL+G3O@N(Nj@b8PEob2VJ^*gkK)>C zm5nX$1yMzbO9u@!C2wJ0^RYXWBSswtQ)17 zTnRSF+s!m>jSq!fjJlw!?~8eK)&V|(eYsg+~~ULm$1DU5`pZeZOyqd8efHd1(#T|1)^`?K+G)FIf z0wVw5zg^^>CBJ+~@dfT9H)O+pm;2#!}=~c>}wQmsp zLmF7DJ}oFVy!-3Yv>OURE=^}OoBS-BeCU0YlU$~XW%T--zD<@Mvi~3qY}$gmsKc>%&@46!4D;eAc8gWMWnXb~`?W5P0uuHx_Vy~Rs!kb*bx!zMs5eUUO%2DMUs>D`g}qmy??^1&aykdq3u!ePWYp;UJq`^et zxq&-!#JMSuK?Hh!mq)n@p<-nJA%79|pPshCccvbU?)c@pCS!bvk5oEb-RUktA}!C?B3f9Ev@jsZHakU!^@L8}+lU~Ta3cqY_>r;XYDG57i&vGO>fft2D`TNwQ( z0=B@N8Xe3D0SAg^V}(7!HuGa3E9S*QGv`M9g2yN8)*K_p8!^O~OC9xB<{%{#E8@41lAP_9`>o5ka3A9>5!uu6cWX zv5KW2`^u(2@@8hPQ_0DK0@3ZW0BkVTtWZ&uTV(QkncDDLd-pcb;9T)yEA_0wA?@xzTx-y&UYnGI+wyRf0S4W2gC(9mJ#@7Pr zzi*!kSXbm!YE&H1wFi%`fm+CjsS!og$K1dD7-|-zc+va4fBcDTmstJ5^pWU{e9E}w zeReHEdXSJ$qub$u5>HAfg$#-|D+*=Y>F%Lk)UW1{Pw+!aB$<(f=+8_-5%FooR++mvE^1h@zn6WkrmUgiD0kEKO-5jxn$VhnelW17yv_k z?3Hf0q6qQ6?oY0BqYXjT`%ZcIqmhzL_87nja@S^nNY#jB_E;lWpK%23Gi`gn-h!&0wsW>HCb4kZn^5H^Z7>hkIOoH9HK4qjg zsQS-`a@YYFw5p=1=v4u&sT*_lV0~6wrQws{^0h|!sUtm>%v4w7-$xA*r$vsSmrW)` z_xLZ|-PCFwjyALAv(3Lsej6A(mUetEKh6e}3{x}rEj6)Q+e1xlh;*aq_Zv_Qhy9b9 zVqgmVA;KC?6{`TnA-W#;3F(1LUm{%G@k5A*b1gR-4{n*mbGk5zTmtp+ z^GXSaCM%0c<`AeQ+1YLP!YMdNxdo*fSoTnnu<^gq);Mq zdW!)|1F_W+QD`$_54vs(6=2qcRIRxWJ56Eni7JcDtqdiKs_m(6=3`39Sb<$Sig)Tt zyI@N3gSeQpOJUwg^|Xh`XsB?)Rx%^hcrit?e;tKEkF271R-vy~ws&WU(rTP{xPhN$ zcUGi%;d9K+udv5xX@eusJ7}*+yBZ<0a8q0s4U~-;v_^)m52^;p6Xi)4)GTNO1T!Rk znA1_I-;**7?wwoV-9()M-!%*l5|VZo%Q4Yr2~3UwbQW)xj~Gcxjk!6?Y4a{B-7KWl zY;3w{`gox+$}Z(tBcu)T{Z)F|VLp(aWx;_@TOl*GPfLt&NeiWJ%CqTzg-AyopDzMt zC3^jn^ zNkWh6uWH#n zj)7!bSTuscE>J8B+j9^SE~Sh&7|1S}N2n_dVPU%kpMJGw71Kn4@rh=C8BA1hypD z4R)Ab8x*Lqy^nAB3j&>^_nL^VFTZa0jB;7Fvf~jgNco-N{&Tt?R@n#QPI1dLNV`5Q zQtOfDFNyVj;GiruR08(25Qye7!`@kNE)HN`sW|hiSd3t{E03^#uskkX_|c4~-D{Zm zQ#%98JWyKL5;O@7nk2;%u|x@7C5H1>(97Bo3a9GSJAU8voiz6nmft~b8(-b*?5O@L z=#76Q*W8<*Vr9OomRISFrs{#KmRtDdm0$alyz%Qq*M_$T6mFF10?Zw-dbJvqZ9dH_ z!u{n0GPL19oB)q59TxBC()eeAs2zTaM?Owzd6YV0W$h>uKTP!1RWMz;S2J{F>ClR% z(x&?p84m?e{HYAh6KvVz6rU``nnL`~4KgAGFu0ahnfi`)ZZFn_KalD+KyQ??#YOxj z5rY#WKvh9>Y@Ym_Q3x-F&IDm%y|0c$=UilP=Yee4&FJ(5uOKD}z3UE~Ku}Y&E7-Kv z5TEMwsQMx5^9|jx5~*xd68_+#xyf_I=$@&%N4@U!we4Ur2l3blI-gthF7SM6Z;QWd`zbCsI7tRrwSB3gLzO$+ zOrlmwT-2^E(jF+GoEvv4jV;JZPBUmZh7NpsZ_aJ z%jEH3gjvgCvbQn9`pV2{nK0w0)}@<)@eK&#pB0l zBC8z0tp-X^t|czLgWZK7Mcl^MohwDmDM(&EGU0Xw}% zB3@h!#5`ib-n8^{f1OOU+wZ)B{l}*yxd)jMwje!F86ycfni@3I_=#8*RK*bS*OMER zBI+9uT7xV*wV}8gW)>IPCblB1o)hDu8UPh*nL#i9Z@Smu655~zVW4xyB^;af)3@7* zXe+m(-iF zKNkd)4B=v;$@I%a8zuGRxMqDcz6J~JB^f8_gBWoTIU5Buj1>F%-z33iwbp9&0Ud?u zA0=jB@uQthorDh>KCaSK{b6{nVJ;agDVFfWB8BD<F%%gAfZXUepj5 zb+TT(76a@VI`#jq3leFAgKldIjP^4+iAWNqP?X@2{TFq>vCD)83dLwvVC={)fYHQAca=A_Y$MTXSOdiAcn8z^BZQ)$vrc!i>HwR!&dDD({U(V|s?`uW z>HeE>4Wq_Hq;|l=^8ayjXf`zzh*bxOiMf^rT@tWz(v+s^?#@PEO7U2g-m)yWJXBk^ zceLZ9N*iu(Op|USz~Jv;%+@KTr}M|o^{R37bU-@D>K|kTT`9B)Il>+T2%;XwMMhUW zgz_TbfIV#FBZYb$X9q@uKJwhvU2&CeRzK7MT2_~}QSL#odWYy_)-FXMw^=gfNs4w}63!@Dqbeye%czt3It~_A?p}`2wf>6` zZlCkj?xwIT8|5hp9eu9Re|H#gFjq2W8l_TAFoB$Ia-tal9lZ)dx0A7?v(5^sufnpg z4F@~$BbT{yZHX`=(9ApGnlMCPo#R!h{oH zKv&#D?l9PsW3{3T+2Rj8YbmGPFZ9jJ**6)-JSDC7pGZdU3(0vZlarvcKo>&~%`W(W z?{V7QHZD9D_6^!s?{1#EDX9&d^De>%SK=Ovt@+)LCy8%%DF5Nuq$D?OqeoKUqGEib zGN6l*tRnZc8Nbx9ej1z9El6Si6;?(5wu_YX-x!FK4c{i43XwGk5M6Kkfy8vI_sbYY z_nvM0JLBlnX;%6kuR0k_n}+>?VBPIUs@|@1Yrx<*uffMw%~>I`8Y`>=PFQzc2WlwS zxf`gRMuiFd7akfeWC9;Lha17?y1#oMR>9fZ+-vuz;ysbgMJE7!po+Rc;-h_+P7U-c z9Mp#X9$`aL6Hszv+NIHdW4R>_uQpa?SEs519mkr|%w&`2TlMqtpi}beqSYm#@H9A* ztXXl(!1)qe^Oc^-MSxTW3vov&U{WL+=!Lbuh98(RB`xgq!i`)Iia6nhp0mLXPOfo) z8oYvsw<)7`uhRN;$ws%Uh&?-w1w+qYVbb~9n=Pv{-*XU5I_i4wgkP5GCR)c5l(~PE z#ko|t51roUEO~B8kPG9o5S9pEQO`;bhL6};Zm^;xHQF?(RMZ&EaDVsv;=*`wg*!{j zd^&&3ULV>E7w)Z9d4SE8BJN*WQbiZH|0i2y*D4?0`KRa>OFsg#r2b$!)X~+Nsbk|% z@PA!$S8t%L%Y4B>)YZ}c`=pO$OJYkshGU%bY%MaEONx@NkxXl0S8!}OX3I3Z`War< z85x^{o6*}fyvu0rY|HfggeDTj1P^D$K0k?%KU;5Sz>>b8bpv-eQg$p!Yb?5fIB_TU zRhXh(_ktY~qU#OG#7H7EIbzF>sSiG4uc&UA_f1SHm6sTx)iC8*fG&vYW<~q=Fb?O{WWeYusbKNmc8pb=#hME=x?(RL>_Scj;$v6uars3A>^ z@g|8iUh(vks*Mn!<`s{b#T_rEH4)Dj#fnS!JfYT(U735&<7OMOMtTfy)tes7_V=fn zhO&WDqdB*EcFFY?DR)N=EFzV>4pWfXz6vw zdp_x36I`G}?SMs_sDH>M>KVUZtgU*L$3>S7BhtA<*qA|y63m!w)&ot0=-Xwi>Q|$A zPbgs_1OMpC8N5iD6T=z~Y+N}7;c|xI^Uh=+V)=6!LX)<*x#n|0o%_{2 zw6JEo^VRRZNr{N9C83+4V1yF*?3HkIts^ zwPB5qdWxOtaYTI$2O$Wjq&MP@s4BE36YncY%K$j{B~GO>w)$H+gH%tfw;?R4^LBC7 zK7$U^`Aud5xvoM+>MM3e>LW}xgj)sMt8r?OI;24+TsyTzdMGc{p+=WpbjSd40%6Rc z)1K@{RQ~V2r)fk;s)vo)nYXZL8ie*b&9ih#|F}&PaE5_al%($IA?G6jB9I-mrkltM zWkT6i6o|6af2lQbKjMcl>k7kvNLGx2#FcE$9i%n9@A-~%0IB7Ib2a3wHiB@E7vFTM zd>n3VR)7TLK#$&aJA~kgrZW0cXByZdA9m7dG<%K^cyu@UJkq1MN=RY!$3sy zI@oYK+rV96Qh{;`6kMZ%7vZ1QmwC7VFG5UkK^ky4JK4yOj(jq7PkhAkTSV6_-DZFSQURpN#o%#V6pfomc^^EkogRvxPz? z@7IgGAk5sh!Xse*{l;)oJHzuyE$Tk#zQl&|RJ!A~2>`~A06T<|s%B(Vu0saz{X&Vcyp1Qw_*yrF1`e;3z@25saf6DELxZy_ zfkywKm_KmDv zLEA;9jBt3=9@l9YmK$gtpkHt;UD(*C4PJmQ8UrC>mEj8za43Tto22LT-hI=G7WO{4 zwCHkhD(svEsRdY;xbt6&!QNEavggiOS@(tIm9@S8BIMyy}%ib?Od9hreT%T8Y`n%Ih4Q94{Yw&;gX!SMD+5Bc2xNJVXhctAcy`xKOp)r<3rEX zkX?9(qfto7(nJ%Z~J=)dBs+K^-I1i(76pz5%{* z52|$_9WZ3-Qa}I(qKrr;_rmfNGv1 zKK~bMvq;W6CRUwc4d&-H#APnUbs|0n(mXwM$}WYgQpJPbAN(iOMW|SiPzOOmHLX|w zvS_(=XpR$;cdq}ibBE*u$Ygf&?#-5|kRtQ-$q_MKP#c(}Z%2?{B&pqRXMmMFbD zUhAx&o{|v-3N**j7j(5Il9h6yPyLnkAlB3wUEv0Oru6$DOz-ubJz;}P-%9|ugPUjf zk#BJTKi;eVRmS(^SdQbv`;&^e5>|A@so9o@3_4a!BRrNqRhis~--wTK;pip}kHJ@7 zs4lZ^5Z_txhHEgpJa6gZxTqi1n>2+`8|pJEjm)MbsT!mkDDR@o#2=)Y+Q(_8KzP<9 z>G2GkD@ZO`B0l*_6?C#xD1lng=Fz%X()6k+z!%9`$6_*1g;OVkL}S^AhPD8)+W5Zw zsf8ckkl|z1{pVqf^d`YfH`HP3Kutx9`IrK%fJO{*54E@lQhpcRPAEaM6LQDwJ|~_CqHi9#N%lkUyw@;u*q78m zS79m?;l7xqYgkdLbk$vQNY$jlW6m2qrkMQi4*K{ZU}g9VZec~Q`J1%c5n>_kv$!HC zi)?H&ScG;RiE}CVK0aC3tkBFK?Ksr-L!+=vYOc7?rM}s?F4BTi!Xo0pCrQyE?@Gl4 z=vHG$ou;2c4qiSM^e`bp$kw-xzIJ*i$iYyQ5fbjVI~;GY0?KTDET~AWGkAMm*(gVN zKyOE}8hCxj4ucZUf zMW(+gerq2)8Y8k`EXnC~syWH>4rxlJn>FU?j7o4f;5`18YN8vLE0&^W^+9$m;XW-% zN^;;8m}X6CJR+oblO(f3{Ozk$;4Stda8-04F&?NGS18H-&d_%p&FF}07tX{y(docq zEXmis=}m(rZfe3vf{GBcWIt;;F9m3VKC4WSyL`{q#7pUL+8;_=nr3lnOWoS&;FF4u zbE`&FC%7Uow?V&r%r)|FExZD(XEysUST>s#RB{`x)~R6%N-yDPcL;b;?)}X_Jm~i} zb$<;QeknjGL9&f33HUa6AVGf_JIi=}4WuK8k$!aukDMRV9;u?FK{YoIT8Pv+>xjn^ zmA1xo&)}A5zB~plnzt^Ns_#7(RzYdX zPKicljkvn3u+KQUT96LX?utmY&)ctn<6Kd%;2wbMM_?V5%*XKFVr8#uU>F`15u?B0 z)|p=7xCk-I48kIg?}Fp1)u$8&Uq$G$UOmPPex%~>xG$7t8lwxCZxsQJ z^}vtCK&EEa0{#b^5osL23{}yBVdJ-x+JhE1ZC6sMxAKj%8|VBJp-$J?^OX!JJz>vJ z3XNY~LzS%%`{%7FHUD-X;n8bu>9!5-+!p_WsRA@Qe^+wWrrHtj{}?VDdt0X2V2;&u z?Pg4Hq4X-EL$=kDN2)U=kcjYTyNhol^4?WH_ycEkljrM59&c~lhRa#T2fdCR+spJB zYt61Ro6aid+jw|{*cjA03+SK`Qr2~=f=ze~>xvxz9)dxaV_d`;Wya4ESch~-ZTvuT z1uqRhsPM=O1`LfuNGGHKC#ZGd2dwgcI$H;(v84%9zP``x(sd)y5=>Q(75V4_TWii$ z$35VsB{}VOa7cI#;g?#Z4Ox9Zw^W#;upn>FQ{Ve!T6WJYl~qU{8!o(jRMPAg!*J9i zmZsIxErfnU!}eaLr}%GDL)TmE8me>$r@V#Mi28*L^MYKqQ$>tIXC;bg?1Cr|g%+04 z+IquAPWIEr2-I&mPhBF2wK^1Ne7!9Fk*@=+?b)%Bo6Vtu1fG+i?zS(kC z@neVbI(5>&3x>$5=G*p_x{6^Qo z(6!a2YQBA)?30$xu87NeU?S9+*15XBf&Nz_oTgo>7qG~2P0B!hDqIHvSmmf`3+ zdTP~0lO*MXyZZZ4kw5Y5?$vj;i?s`nNSyx^0%EY6_e0a#WeMXaEF)4n+d2&tBX%m= z&&K1%TptBSkbUkx)Hsw495!EVa1I7g8L!&(DC}lqKqVWmc7I>!KzzJhT5@QNaVs&$ z;=0*Lx4@?DVBI$*sI&!4F#A$->aQvBe^VTWcN`R08B@jY1*1CWqLtUURW*=_N3;^g zg#B#w-A~YjimB$ZuwXa%H>oftGi{{;X@VaX2k7>@+G}9TE;w=EwZIZqF^>CTI6#HB z-uz+P=&*E!{n6pwJ5E_am%f`O(3c|HABzzJgYUo2*pp0Is)M@}#7j2JOaR!?nreih zRRJbw_lD4_aHj86;Y$0t@S*Ztz2b43QqV&SA}4+LWDGAr8pi&Vw_}h7JBuU>yz>SEB@$Ef#9N`}7>X@8imljkZiEwvGbTZW<9fjT}%r`fV3)NCV1zFLJT_?n~=32b!x z9Rz*-vclxKTcznoec^V;aW&aF)S4aY>Y|$TZk8=;93?=Rt)@=klkSmGYIeKWhR}$_ zhXbJ~RAzHG{F?e_)znRmzB~77Gc}5lR$@l5yl(|)4{bW%nS3gqG}1{v>DAff3EiQBSc(a`RVm#kiq^FZ3SjTu;l>i z>%vuI>6;YyDa10Mh25m5xa2mVu2nf#F1Bmd3wF{;l20p`y4}p`HA!xt33Qqou7jH7 z25onYGsg2i!!b?US~)5D4&@LD;G=hI$2V4Lu?Ng_6|GW7czdIZQM52@rS4p}WV}ld z{U?seqk$ZdIPgIxo_s9ihQ@r%vA?+QtcK|fP66&i#P)^Wvgv0EZVNi(7j|*;1%2CO zVRCi2Bl>Vztg_OhBu8YLT%rs_dnUAzIN7X_Z&=@pN7gAz-l?bx`wmiyw~!AjQn-JY zQ_4pw9~3vLc0$_h9ODje=xP{*^^0e#>CCD{|1fVVqmTY1MM-6>@ymd$xTMfZ)4aO& z;&wyOL>*^WsnntGs5xHH3eM`d;BIaN5tBcvJ~(*=aEIDd=;xK6Oi&gXZ0V;cM4sD8 zB)P#wqnexm`5s8F+fs;v0TX3SYgx@yt5OqW>G%J{+nz1}5--{x@!m-(ev#WCZDDX| zWTNj+n#T>P7R$jwi>5CtFUFlsf1cWZ+__8T1ZK&)2>Eu0S{k9`^`J1*8fBoOOH4Ji_wmSlyRL~jkq4s6*Za1Znj)ukPfKn-<*=};jQG+RYiAa* z1gV5DM2?Wcn8_g<=*J7lon>Br#kxh_Sh`S6>?5KEvW5A!qDcChguFVXEU8{@Gr31r zqY#h_NFko}n-0Ge;D8*XZZC*chwOBnk%sYJ-jQv}gG88xJ`R}G7H)NXW8V@^m-?D24}^I#v(8V(3* zk$)DLp_|HD79_m9&agC7?^Y^w9*%^bQ_B0Ei9RcR{cW?} z579OQpTv)-%OP768`%w(4-XQwg$~0m)Cw|{JB|8z#-zkfbb9l*W;(7f>+^aqIqba)k zy6TSQDPZ++OV^-huzR1Lfm1uWguhE3MGn#)VI_X_*X@_-0(>w~Kh)4&1FOEEl2*~_ zYZJ=H`@0Vp^L-Kc9Md9sgpEO8#xIyfg7CxgyP2Oz>B3}YkFW6_lro7yLz2>7+?;A$ zle@&HJoZCl6RA!Qag7S4Aliv--DKEQ0@jBMQD|c=&gX@Gsj&=rOH$7h-^WV#w-{FV z3zDLH67Gmji5@e3y!Ww`MQR0xlu)G+(Y$$McCBby6-ZxKi|id~?lf-Zm3(K6l^yJFiTqZ1Vbz%F^N07drVA27<86`uB`%oOyPFW2R_#@!0|# zG>g*!mLmYk@7u&4LPSI27!O&t^Nu9BL&^q{jxe+#o`TG-4{PRw%8J1n;2#7YaPMz%9}9C_r{P84 z&o!L=V7kn)F8?_3O@)A?ur>J-XsnK?a!(FD@@_xVOArfnkj(W~|L(_y<>dPHc)M*0 zt8I!~CAS6cfK*ddg*ZB`3AqZy8zINbrkmBaB7w}4wue3B-1CHOoWVN?apT4Ay~ZOr zUz3wUS}&c<#syAWqxaxa`X2!UbtiQ~(08uC3#k@Wb)Fz*$PtEo>jz36Gdqe4Ee zUQdQ&%`X4*)Nl8UPILr-cHmyaiu1sVx13%`8}7)IZY2}jiu`_b%g zYZ~rttqMlbAL76vkv#GBIB*HF4vNED?OkxE0ACOQ2$JCyS+Qi&nbLeBSIB z^@mw9i)Q87Q7S+P*?7}h$^!pbWcMze<#Z=un|{3`emP9{d7CfOat=^s-D%;7++`k$Bf`1h zmlaPj9>%F#_{Z4pfM>_syPr;v5V+f}Nb0cHI6Jc%!E0P*a}we+Jz3L9AHKq1H4>_V^#z19OGTPvQ84Uz-~C+x$>W2VLP-t>asO%LyJDfcBc78 zXdJ%c_~t>n-3X&tDyhqI&O;?0MM_=sc+^GM8X_pA`@iHd1>z3g8p<3^#Ln4F0*Yt7 zXA8uo+D+3pMxx^G6ptZeiadI|z^s}h@MspUVREv-(2w|;uQT18s zTwmJ;0EvT2`E}Hd^)vr$j6eGO4I+c21HV#o23jg2u>weIte_Gtx&I(Hvdgt%1%2L! zym_1abNHGotG% z&M4P8W2zM}K~}qiPn3;b)&xp(67^oVWz`vK3q~Kqb5eZ1QCTwP8*Qz)vf4v+L$*&j z_&)^NK(@c+GlOp3yJJ=vq_kP>tDiQRff+bIKeTJp25@h{Pjce+xI9JB-*LB{#<0C} zntdSS99y&ANQ}hUS(1XCl}c36r^#(I47C|>tUQ3!PAxD;nxFnnPs1wm>a)3KV{rOn zxe~S;lRDRNl(lx)by62tC~4m{tP;1$2|r1ox6t^zF{)J=xj3OYCoD3L#WwfVxoltY z+)GamSc1D1qPqp>vza3l-0$^MiG5L*ZN>9&DMl0^Yv4(8W^(-W!?BDHTYVbjg6|+O z$#MD(CVcrCFE2W-ssgvtp$)Am-o>J3+!-D3WMLX|RsJ7S-xyf;^L*Xdw%s^sW7{@w zlBSJqvvJbcR%6??ZM(6P#?NiPzbE~_x-ag&*!}Fx>^U=Mb`v$iZGD;kLDXLv0-X8a zZMC8kaiklSpe>?kJL{=QbBY}udA<%^l_l)IEfXLJPQR#=c^*HG_j;9nrq7F2`Rs@R zeAogBa?ipIW<`4SXwBIuGJnMfAY_?HOT6;~*B+5^6W8aHFNy_xE(NI7Es4a={ zIFY4H*^7B5;#-OJ@a?pBLjCvn?llN0NhZkDZU?(J^CmLFX*6)wUi)^J2PPf;fprsH!9=EJ^ z=d7n`T|A?qsn`^FV`K^@&03-fr92_$NvA;#d-*EXgX`fE#bMznuWa90CJH#gG0hkNgrZv76mT{>W-AUU8vJHkuSdnE`?t zRV+iyn0cy@;=DyRr$?FKSZe>a>+uApBzCFW47go$IOEucEXxGv^yl z$SEzvPjY57DX2YX>Ri=!^HNsZY%wQq%4K7Ik3#96@u8SY?jUWnnWtTw<~~Z6oa)V3 z)0U{RPbWSlZf3d9mUy%xIZEKX?rd@AjkvmaJpFpkjCl4Qnc|?r-UB2)GueO7v;Y1^ zVV4)QU9hc*kHXhow>FFAb3Fx6W&caz+`jkz>d*<^VUFE(Rxn9P`CGr zRt`B{MiW}dfGpSEjln=G+(c_O9kiQ>Ox8{?g?LM_H6RK-UjBC`(B3(m4q51Mvw{tU zqB)+Xld?qZmhfoJkJhDOl>*@^EOlmK8O{d9h`sD~^O`)_*(z(jRL2Uq+O)o0! z3EG189Pj8?cW{6~z`%Fwv4Dp&I~{KJ?XOlx=ABKpr`T3SZh5ITN^i5`rcq29d`&J5lY0Nz zIJGR^K@W(C#T{V>VG;L@MeE;k@<4I_ePhP z=>3vjvw?J#X+(0RH>b4AUqBDZfay_zb(87m%#QMj0Y;um(xp!{E$sV)?RM3t9lJKs zw9kwV*DC0yIKKy%J~F_Fzn_KRtFiu+H56O3@Z=!!asJ9X3E|YL3daENc&r?Wa@m!Y zd3j5W0#D`}-1Eqsm{~`M6f5sFJ56m)QwdAEg*5A9p}N<@-)(5}5_;B*;=B&(gvB)L z9MX8uAkFI=+C_a3=j*gObCUM@WuMH%44FT|_99Y}d>K^dw0_tZ7%Hidq4LKOUGNNntk{6KEjplVE7w{Np zVnQe)$MK9uLz9-n|67&Af^r~bP5hr#t;wncD({Gy&PdVCf7H6?>8qCioXDk+LcD2z ztJ`9ds6f!@_|+Q!b3Csza=?7J>PI(|5h0HqK((C;O`{{xI&@<_^{8uI#B@g8su&0) zL)o(Rxr!5qKU&A+o0yeQQ=z5qoz>B>)|T`+amZrH4vou^u}{q*0EOqT?^RQOe&n~Q zh%mnhn!L?vqk%zX9MYhP2@UAp`2l6sCDQxtkOR_c|G??2m-Y9*BZ=D`_t~HxG81To z;~}^nW~*TMcJnk8PT3odDmob)oYK2I4KHDpT!4)zU7dYQs%^3jlSCp3Yw63KlopB<1zt*8IV{{Ss_?0! zH0IOAcA)^5f4<8+$U81$I@FyP&rI~N^`KNsi_J1Euv)u^O?-CKh{6(>Tr>`c>c2mRyr)Dz* zPWYGGp=c7is0Kvo)oO4+v|c645AczzPT4Es@UOtmhCVc`_e>Q^%?&En^il{M&>?DM zWB|kiIMVznuK~r~zjh*#Qmo6d#rpEfe-6Cx;`97acUn7NGlo?Rxzs;AwpC=vJ)euC zPi;e&{;5<5)MusNEu<}acz_*m87E$3{hQ*OR{Ym&OqV(LGA!2@^X-bHO`l>zbB z{FSu0t0Wv-l z^b#imaJH#3qo!H?jvZa;fQN@-DP70)$gvwz+eJLnUSpmg?Bnv4;Yz{L#*Gy(Fo5X}#> zjUzbgl^1s2E8p?14103A2Y&_TJ*}pL?J?Y2`e1Yy%MaLV&+EK?%QdsF-=?2C+uAX@ zZ=y#kZ!fS)E1ZfMpWDp+o2s%Oo!qpa$=GWT^ILB~dbkN0vTmKcoXPhwTgEdVIQ4dF zFxr6>g426wKW-`?kz$V<4<7l}AN!+*iF&yE_Nr3m8#nu=mdiUz??vFH_u$folOGeX z>k*;nVLi*XTAA@&U*RvII@G1SKj~FWbcud~f2f%*7haq5z#)GfM2PiJw|s4W^l$EF zx7=tOYiw4T;ZJV5h%<9kub(sMltoc#G<=-aOOJSb95Wxd%D!tCGnO6GoEBX%mOAyT z|Kjwh0snYimkz4BGI2M4yEmIQ@vKqoQ7Y9FLu+n=Z;vWIl(mq`9xtYs$$t$~g*8xs zkQnDN6t-=n<;)lIVsm)$V-K@ow@oN_q{|);#yuK%so{M5Eo6NO<6w(82JPGi*vhuOexe?wo!7EvYeH1DulxCVgDRrm*=vPd) zqJimA=j2pX{a?n4*u=P%=o6d*??>QyuLD&O%9+()Hc>3vmu0Y6#mt_U|xk^80G(44m1Ay0r`vKW|Z!6f{aM8?#|JxEgA#;+{H}V%!L#{_A=58l*V029 z(qIYnS8BbEgR^CukR0kk|B)WZ-~45WORLpmuP_95x);RvfUeczP>n&+E|)Dy`F7~* z=^foIi1@WvTY~>Xci%D)In&F8^Nom4y>k$gaqmSR;5L5AZE8$3LZvrfMnY-7jGx)S z(to@yyM_+I`F_YufoScq&StfIG7|1E>)6tssY)wYKL5-#DrlMrX?$r}n!VV`W%Z>@ zFmH0ht6T1;tt-QAVNvikAey1M7Fg1#p4}jyeu1S6ptbvRD2w9syJC{lU4wQBEl6vs z_3}yk(QP*2k(0un{2B5Neo3Sac}1<*w4f!Rg2kGQIrf6>FU zucJ{N{LN^Aup3mF-h+4GIa8ZB-QvAjR{r{7hiNz{Q9VefBh}^=epeRD8|S}E4O!P!=R}f(Qpc$1p;)F&by6?F!M$OKiyB@r<)!XiDqCu^VGJf=cX~)L6OCCq!XW~w|u?4)Y;+jt(QZU zT%rvkSyuigorj&{@L)@#~0cGQM%Lu!S&I z)TbtiBQnO@yH+$Kyxf!`9WDi7%Dl6lX0(~XmLqbq(B`u&6Z~GsIp3mr)7Id!B?kQ- zRq8Ln#}3J{WaqN$-X!%guq)S#L=n$>!?)({3lSwi4)xIA#Pdt=_O?EJwX(!nyfYs) zo$G-WX}@_tX81rUURF*lr$$v%Cx3aykcwT1l=C=)tTzlUqbL(iuGJpm5BY^mk!ocI zpI}?sX5O&BtNsS{GFFpMy%csYx*8^(#w@g*1}-`zs#y6`MhG+CaJUh#nNC)i5p$Y$ zRLQ+%1U`}DUlcn#l}xKyLNx|PF?UL-G$0wav@C1#tYPP=1HEhesAs~fdjGgq1UTO> zHc7s&^yE4p2r^B;jTf%k+2i#|)IR3RS(foIfkRv8ET*Y|4HLFIHr`gO*H*u@cVTs) zrhvBGN-;l5?KCw9zOMS0_L&}^7rA)3*OcnY)*nCa8&KE7Cz=`it8ia2vCHiEU-n|q zl{SuCRTgUyf91cP`NR;N(2m0}_b(fWzYuF?T$8s91RDdgac0Up>pIh&(CteNunltV z_fi<<9pOn;G-ow5JGy{)T_*q|S;?(aNuVl@L- zP>P{%3HFSJUQzCV3-b7g$n-=T*H7GV59fEH6ias--=u6r`{7749VpUtQL*TK|d$5c~xOJ#mvRI>I?K!Y8 z$uUU4y|*tj+vLn|rfDsp*N+^*(-J3>kvTjocD~=)X|X-z;;p=XeQLq0!l0om)9aLN zxjk&YjKW=j`Z-{58wG)p;5FHDuIESzKShyrS5UOF!z50(IPOwGl><3owG zTx;BB&Q7c_0j+`#&_Jb$ZP4yOD*zi8fOEap9WDZB1o?>9sXFqH&Y`*&?^)EFC8uoJ z$8jiD%IKn6oH9Rw#PbxgaRNq=_mBYY7~>^tuI|fesgJkuR+VJrNt*GeEW+*urioGV z9Zq6+WrT+WsuFK-!CwaB%baX$%*nWN4CTwo769T2%{{&wUQGD22hsP=31N})h-Pim z>T92S`DHQ=Tf$ct(~fou7K+ma_=W8c1`k@im+^x{TweI1*ytodwLWpLBYtB9T*|&+ z^7ZK2Q*8Vy2JZQ=F7>!>H-x+7 zA>=f}i4t-xCn5^d5~+22c$dTgn}M?2q`*zzGkbkQOizrZrNNBX5RQ|v652GGu#1bZ-@^|CkV6ra(=Fyo+&iE^UZ&}LUsh0r8ibCj3P)xJ4kPT0&54G! zCHORNkU1!h;DR%%6j3K!Y;XuMT9%K~)^`Zn8gjU84n`?=(EQ{@A!3gA#I-;xq3@`w zzzp-M0P&2-FE7T&ctXs_?UOA zWBsu{g{GLa|G!N8pvp@|(YPuKaKc}TXZ(ACZ-J%Ku>1%rH~qL{JNfe!_z3rg@Im7I z>z7fa4u&(UN-mW`X@=D5=43k^k3V(Yy5ciB}r{0XRI#w2U7+LOM+X-5- zb77}Z3}6;RcwqPDBPmSbLAWcvXrkJvLAahZ3#uC2;l3GtEdh>F`kyETp7#Xj5dcBW z+k+6uCo3Wqfp^<{@?A))hf%hJ)!MYV-%k9loNw;#wvsS!INXbbP2Bzag^91Qd8X=- z8bYS=Y2oi_0p*QXJ!Ovv{*%*4DF*QFV5y7cco!x5oF|MGS1YN!v(~S4waN ziZxw)uQsK76HdzW#WEzpD07^7%9q=u76XVf0d>2_cm*w-!HDn?2&yw8d5$)(ne5T2 zMNY(Jy}GgMWWD_X*WX@hmqy+=Xq=(s7*_no>^myxRnpr&im;CDpppoyh)a4IqvMRL zC~yB&#oa!n>;Y`^M@nUkcN)dy8ZqFv#Y)##LJ;R{BC?KGqV*h(YzdhdVLUPWH3zGU zrEst$ljBHkpk@>#Wjf#gbZ@3L#Bj71*4%2nupVnvia za^B%&TGu}oWtT6hH)Pv37`pz&v88yg=i%l=#nN+eeaHpB-gfA3)0-_cLQzx5`|!Y#FcrXs?>N=v>nOq+pun%Qf>&z!v>L zyi&&$nppgXUwy)EQ^*SF%k&T!FVTrPbcXp?NP2(NBlHleuZ~e;O3-^m^4&k7NfYx7 zH3S;Uz8iv6XhcC6>Rymj3-u}~>=7aUf8A(xT&Xd&eZ2P#JiEp)%N`NundO9EYg(gl zNa&+zt=4wNCzGU-56-UucBm-~)t5>akB#O^OBCWkLZ6LITlV74?6!q#wRS};x9ft9 z0zW!&FHMZA2w_M6-7@6_Ze`ivzw1s&-AV{MdKR0!Wep=gARVSvyQ2A~kLpfGo0FuP zoN1(+(q!jn(Ew062onCEBn*Lm;rQ^mb%~4L4szMfTEl%-_LiVwF zsDcFlbfhLpjzT-@b<&<|T21S=Zd{^i{9?&lN{D6sKM99L1!eTLk@W5$j#Xt_2rB2} zblVRCQ~Fe_bTlaI$}KMhtLqj$waPxcUM&X{8j7FFIKf2h^4+^q49fyVVBFHb7lh&w zlt9vDNz&BAf(8~|HYbdB&x8U;^SKOUwOcUU$k6!<7vu9tN@jf%f*Y{Q&;Y#wgs%zu=l zAO+&qn&xmBu#;~UR%Wfw?P)d6<%sr*SW?f3Od!oC^gUp_pi;IXP;W0)aMb=~L?5XOP1xk>RoAOl+Sb*8(V50-_hZ8H(SK^Cz-i@u*P3|OU3hlvVG%<@Pt(w#m?lA6_vX2%wG&LGDoXw z(RvkE0NH$*#G8B)CMK~sOW ziUaN5In@&%_78GGyAO+6*V{#>=)+L72c6ZXBTx=w71nfl4gHS;80e|yF4o0-k?m^uJ~u$w zp2$h{sEbAR_NNlC^}aD45{de9nO>+!+kLciqeKu=x>A&IPiet6Nbu&XWAr_BJE zMt&SLMdFv79G_L8mbsm2k@xg~!7Z<84!d@W#F$OZoct`M(vCxtw+o_f7p-~=L~9|E zwrA8AH*B5K=NNZ7U6n+)$tnv9!@^2mTP2k`VdT9eP=%gi2&aV3KKEG!{dnlvPSBmbIpo-{3||BLE*U)%VN0YKQk%xLv202~!e(WGrK}Qq{0b`gH?DfQALcef|8QqM- zGd-vjRXT;uf)AkGm{Egt?@t2(1{X;zrU2rS4)yZd`4FAyBl;S*s*)C;LCky&3HYgSP@k(0J^NXS{ilY5zw4`$Z+g(B$6=|j+ zCz8tDH(VGZJEGGQU)t+`nRfS^IM;OxLqgV`v6Ih=8RFqjT@KSel@i)Rgf82&F%T+& zYKF4?g6KAc4Coid#<$Mnl8EYr5E`DlUfLD`)HX)+#GZsMbQPzqKIT`2?!B)1<+wAA_)|#Nc&_ZHFDqkK_CnC0SYU4c*puXZH8j*rO&~>p zruz$0Neqw!!MFzvt+=2tkasePB6!p5vu^R37&uMv&x$A#;qEp9&5V}!^fp42K?g?@ zMC<&oc5{QH=uMVSW7c*<3^{tZ&4G>Iw3D3_cG|;Y+TWly$ z$$M2pW>0hSpwS!##|(VoP}?-Wi!fKw^994921Si&^@JXH^>q_RRa`R-V@JC5f1kDo z(`)n{Eb}D$bEx(~gi!sbuhuk|kNP!+Nv_1aYEg!!8nVkVl^%_4On@l0>`dn%QO_dL zZtmUmWf0*6dvsFKtR~r~#~o1TH|fOTR?w6BreLk56A!#_W^bY^V3Wdor*)&l!e26r zkOo}_wT@HS=Q^O>-iEz292P^_e8&iwxexbjd8|`>NsE3Wh=x{*aJ?xFqGPI>{`y^O zWsLm0IawP}Qp;QwE@ET3i(DNgp?f(kZKw8-JtD+kfqg$5r>c*EDb!n~P89)*~1#cv$UFAZq)1oh}+KXH7tF&jv=;EzLnwS zyL6{@I05K{Uazm?59eQ&wpAACon8FEM)J-G>Hyy5)u?|g0gXNpmzRvGX{B&>+o>dK zq#~XmBFY$Ea4RJJStzf>;ZBVFd(04_<{c{F*S?Y*vtiDYne|lKdAuAX;KyuLziM1)1-%0gc<$nz z8yM4Dkn^>o0jqE-O!a^faS*vV>fqS0tY6XF)!j<>nG}6WR=-_(xJA8t*5omz|3)%& zben!X3CWnQPAhF3bl;5Oc~kZr-_sht*fG137@ndP;Z>5#-C_1d{dUhNk00yguQOrdkGoHiet@E-j>z(h0LQrV+p{jPeQEh6!WK;svXv zZwFWT{i7RP@`e}jYk!j(6VQ4V@ulW0Cu(a=vytLH$2C6kN+#onAPM9)rsmx(`>?j# za_&+12JN8~vZKgJwrWC-bjsbaer!_^W5Wr&^wT8cIQIHzt0D;W_1JNR&mQbFg8d2d zanMI_VB>5{CGS^%Xg>W1&*+d=+k}W@<4FmfAoa#}-+enMx6_^vrDy6!MyA4&9WS#K zzJndD!5y==dMl@{}p4~d|V<<TMSy4YH#OJUyT~L0CSRM*!P_KN1Xqa9M^?b z*KHnt$`4WscfkLwNRy)7fq~1d{_3jQH+mf-KpszI)Lm|SVf#S-j*_YyGCZa;=`(*C z5pSHJ8OF{wp0O8pLv&9ow&fB2&c}P_xl9yqu;&wfwlJ~Bkj7Cdt-CMUVV~~w#y)~t_bO&V6w)~V&|uwt^0Bt9On(hOFpko5l8w^mQ(&* zw`+AyEAV24H9D#TV6Z($8MWeW83)c;vLj_%FWfMW(<_Vp+lduSVnVO64_U}>i@&y|o`oa zo5nwZKJYl>xLs(KPnoQ@}I zTkAdJ4hq1B%fEaft@d`CB4C#jPV|IHH$SbZ&F#{OunVH_{WC|2f6w^9nnW*3~vk~ z74B@#pI6&YUo0VTgt(RZN1~0YHs<_M9*}-k%r!m~UnWBMx$fvYK{poq9i#1RLv0(@CYkmzr=hQBTCmV8`Lto2_r~i0!E4zX02;Iv(P$FAl4_#%+hw!^#>1a_1GVFRe=> zqKA4l*GCPRx=1DQ3HizqB#LMzg3T9&j$L-A_YXhE8y)?RR7%owB0wZTzt`_2ez-d$ zzMG&Cg+XUcB;#~!VMO)g0p;_e@%x4DQO$YKVb8H9lrszRQT8R{S#4^@Ixfn}NCv=& zH#$9{luJ2}F&PKFG1QK1n8|e;sbz>XD^5JkxFZSB;r6G~YN@~F8p&3Y)G$IB$*ue% zS#jH(PHF2%|GxO`p^Rp>q_Xlqi>IV4wg|DkOQ9G(wpV*uHrko}fTqCEl3+;ux^X3K zy4}x$SQ5#tNBbQ1}L(IZCJbQ@Cl*t#zZiuma zKt7~{4wkMlF&lwDYp1Lkmd6qDmBW}8jLU+hti$5y)I`(zWKIPXU@YU=5ZAz=Zu#Rc ztXO3iwk&;}{|I}Ld-Ho&-S+F1lK6UB#KAWBa{(xBb8Tq)n9ZJz098&f_lLIrODDFT_?~wo4IXnF-uhB+mjsLjY^jCB`Td85aZ4vfN-*x1Q%Sz7^bB`n zg0+iKilHcFI`w7hh%x!~YS@MRya^}W*XBr#%{%28m51RqJU!8A9}InH20B&SmM{C= zJm}-q@>C_bIM^4bN%=6#kMlA}`q=Cp+x}9_VK#QQmPC;&_=rhOz7F|sk+jYH8Talr z5PMjrEgfT>}J_~4N1sZ1H96z=n82P?ov9Jso@fd|5Y!Ck0hh~ zmQW4M0#m8YbHI~vooB=_es3_72H}Rq2HY*&YGy0>z-1L3h)&G_a9IAv=V>$sKSUcG z2Z6yXw86H((PM0;iXNJHHloXzqTOS*jVY_^M)-e)l_d{(NP^J>L1pIFuM>xrO;Qa64WVpX zWm2xk#I3F!ql8$Nw_&~w)D6#~_3ZH4s}BFI0h{f!7sq9?6&%=?ry<^+obCC6V+p@N zxvKPuk>WUxwXIq+X!@FPVnUYg{r7D5#15Rcn{Wy#{2`wpJ$YSUA zxJ^H+1f6YBl<{E0=o?59Qd@thTOY4&@q7*8KH!c`dqBLCbT&J1JmA51erB9ftMcc^ zJn&^S!n~krc&%6wVsokh*Ym9N)j}Hw0bgtmUlblvwZu4ZSJuue&=i1%PgGUjfZHn@ zom2Zyc@^#%Zr5meBldYY^J|Nt4zYM#+cKNeemBM{NcJWoZ(?G=s%g9{Rq_ZDZT}9b zffaeE61gJE1KaWQkc@>P1E4Eh=x>8Miv2D6YL^8BJ15wh#;-up#i8T7{u|4tplqCy zFEzWwP0?0~3)JyqK@UeeiTRw7Hf#-8E9=>WBEbTY7C7vf48iuyCunpI0ve|2Pv+4J zF+^ZwdoNixYBd)#Vhf8)_tI;frWwUj_88>V%*f@z`GgF80`?eF|9Or8Gwiu8L7MON zaPvfE{)>L45`O(HWuD;g?N}y20s(UMN$u%Nmw;BM&;;CGzAQN1@$G9R8al(sdtpor zd@j}ys>W~$hpO%_s@yv4`G`8mV~U#AZb)s6gyBo?w21XpdzZpCOFWX8qayLquA7Wo-!^XGrSmH9OZng8uPVfAdCFZZ=b z5R*t>`y?+)PPz{vI^Ml{k5lnAQ?_dprJg-N6OS>bUuqB*{xN}Ge4~)hi$vJA!-BWYv*?3 zlt}FXqK7TOJfB20*U(Rqm(Ysl%yFRmaVIs`UXOP7HTCpx#Yoxf+Trm|_pC85gqRS0t#v$ZyrgCQd? z1FfAF=HSR^O7)MPwApjD*;dqCf=UZ+K|YIxzeI@L|7Zbc#4pQ0P_5sqx9wBdX~-%` zxryjI!JJ=Ht_`fgD4T_kbCgG~R@zy=E1pbq)PKF3dz^%XfjdxaDf2ry2@;Q$oy~hB z7VLH6xz=NI#IZC-+K8-V~vFlK<#Q2GU0H zP+bOHj*S4*XQFyVb6*?`Aq3ro5hBz-L;5XmPl*$m45(dl{*WM zP9cLHsfnraVXnDJm?~in9`dHq>8!2pa{ORxHbakZ&Ges+MJn(62WvP z-bEGWQU>0iTEcbKez+0eu{ib^a@)zuxy~0wzjU*QpJmQw)YhVM@=<*#%^22Kt`+YG zC45#;&Rs49Js)lv?^C2TQu#5jD1Kr`_;B6hf{8Vt)PWLed=UEWzwlxlGL^Zrw88oG zGI=MDTOzY;Nx5RPzDm@q_;PX=@Fgdvp$X(NEnV4G)JlTN&Mzx?n5rUacitx;Uc0*W z2LQ7rLpwfz%Hs!c0K-50H=9Aqo>n#p#DBLo_krR?gO@D-<4O$|JSH;S#{_w2kXD={DBTUfa=dRa#OLR4Ad}Je^Z7@txHB3kt zMe<)Q-OC`kPE(GxWr}oqMS{n;vS<18oK zhQ*BHoA&DfV@K&3kt11*+oba@lozV^mHc=Zqi2L7l13P*oZ&hAReU_&T}9CO6AsVB zkpMy*mBubQR=v`_v@5QCK-u2|MT%TccyU>^5=2m*ni_1F9y{H9T^`S1Zl9`S>2$u_ z4#76wT%r&_!pKS2lav>I;h6q)P}-=t%6;W-a2&aD7~?$-eHM}5!yQ*^`opY^W#XD+ zb~-OMUY?=%*holRDVv2pQ794To7-h^v0LY@kXYugG%w~BbFFP1;9zSdKjr#1uJ^%~LLv@h9<~-CDu;{!(qQkBkHY$_7CuUu% zwFQHJ{!9V66d?N4W#6wFhRt{~2U$M?R*D z%kK>%^ByQ6BVq|DMSV^ksByWq##eUon+}YL;m$F*{k@`}Rw(;)6~m!@O~(|PQTxdP z<4ZO#jPE9xbC&T6G{Lt&6r`E*$h*k4Qgqfe=1X^5KD}jav2V-=o7pmEo))qCsKTfP zqVs-U(lZB|x?1rj7@Yg&IoR)0M0aL~teZHR^WWPF%p1COKBVIKBjO$|}L5wwgdD(8|<@YUq-cHF=r`tM0a5e?o$8xCzQ znK1!aTuQSbAeD5Ue(t+#+K6vy{hh23f%7=aYk3TKl`cV8u4^Z%4YQyv!^Qjlt+$mg zK><`3#*h5kQVK2qd~N}EEDOJap$1@O6FDF|)2T=?BtJP=jTIYIe@9@|ZRb?pwKp>R zEw|CAJP_yal$-X=F~izbusxzhdJu&K6uTJ1+_t(8Nes4;N;Icd+ zDuk$PK&~LTCpNqP^}`M_E6Q^ajA6bb;`qCL}q8YHDFf!+e=4=aMS1#t58upTjYi zAHW}*|E$cs+8oxTPvKNT(SJCd@#gk>>7ncvitnD`ETU6|xlqY**JEoe{hD0w@gnn9 z^9co+WhwC`*7=YUJvA`ZWweh`L3FcY%Cbg~_zOOYEW*5c+b-0F7Mtu764iaX-yqC6 zPpnRdsd0m(Db^I>n%=MoKFKFCYh7~;b12f2vKI1<;7YnL`FFjq9EE6w%DiJgkd>4V zUaorfY>~Zth^Xo7LO-ot-0xz^G=81}NHYJ&jaGgL4Lx3Lpa;LjohJgRSJPtB(IwBD2qpHf=VdtBVn^rW#^X#`5kRUpq3?xKhgE^MT&+ z@-Z~O$kua;MQN&-zI3j(2uVj~(IQt@l0Dzm@>@y%yaOo?Cg094GtYoUd`DPF2QbUd zOxIl75%d^264;rWZn}NFz$(o6?V^IumY||!Z`7MK#Zfh9puZLFd8%Tm?pO`du18Mc zF^h~_?Ni2Lk3w{bNCFM@E2V{o8Y_v_N^o8gjiYJ4=7-(EyI^by0`6r!=g^VHF}(ky zAV}j>DHbc^f$w1h_Ps?+#cIKVx?2l9L{5|xpSe3QxB2iZ9{Lv^Y@#N z0*2m3k=q&NYc%kwtvlJgG>%y54Z=2|nY#$Qm2b1k$0w@WlI$x{&VzESe%`u|gZ!D- zXI{%xtoh^up+G$wPSP#l93DQcnS{t0asoC4j0em3|gQBD{HG~SrC3ywU zRm4T@|FrcS>Z%E_aMSvv`OasoRYG&~qwNqbdkLq~&ge+2{}!ur9c#!^U$BEW`Sz2G z_xRbjKFy(E^?cCfr`cxV;m&tQyF(Lft8x{BzlG0muRxWT;a}1uo~OJk_}GjiWUW_s z^2OE@i3K2{jRw4=G$@ z$@y0^taSr#+0-T*?&^*ty5|IA;vd#aCPcoT06U89Kw_Y;XqWIYdL#=Di)D+Z2HI6| zht&4njtm-jqg`0E$$@rMvnHn!3Y0~62ylhi?Z#hR23XhKSbu3jz^=j;yYcj zmg5rcEyi}c2XW=!VX`)>YGj?jaLN5!aboqB^}S#4;NMX?4~}sQ3NXtV$Ow`% zt5|{De%7Y0-yZUpB2KMk+-kD_E!gQr_<=beFK5QRPaK(?(6VR6zO39WT61e+`^JW& z)s_$!>Tz38LvsNBMreYY<2lwz$9jT$OU2`9v<0mq-`hNN#mRCKUo)4cDT2Oh{A=S` z@*_>*haSM%f6>Wq34X1{s8Ei15D7}nQYB!zgkPt-$Ffw8MX%SQ5tWNHZnEkkM*%#| z_bMpB>qyu@L$N7-ol@Q1!I?W=@vF)Ot-;Q)yXBAVt;iy)epEShHYqOS?!K`#U3ki&{$MR zB-+h%&S23LbdpLYo>)>yLt$u;2o_o1veA8aDWNC~3jgv0Jkw}Y;x!P%KwZtnph!3q ztCi`P7Xz!r z@l*46$-aCiW0DkWr%f~k{R0n9Vsj=8(N+NW6NNfC!0(ozwT@TWRKyTiJms~5#)mhl$cV*C_%_daZ$1_)`VSAogk zJVpmX<%uoR^wf-vT;LONR2-cInH$SEUtI>k0<#DqyO1vdrhjvPADO^eA4hZ&y#S5xk!UrOQmdo-kgIzgmuoN}eF2yW)81Qx_%*FmO_?GLy|!frC_Aub@3RxZmR}1E5jnyD&y(mGd-=%fJ2yjWmq|zq+bX zM>E2VC$%(8p^@0KiA%t5Pteg#|H#vfW}c88rn(@5=3hC4`M)h7Zby=7JHQqYyFk2O zra8^YxKQmsRyS01Z1VLyC8}mru`aGBPY|drMa5;dbGdw&rcuyJTzBXMHTP$s%t0Uj zA5&Kq7U!~TcZ5LDK#<_>?he7--GjU9puyeU-3A@pA-Dv05AN=MC+wY^`?OwQzUr>( zRnpb5vH~t|XX&?K;h?HK__HQ*OT(q>1Ey9>Gq8L3WZsK?4gideiMOykn2cMm~H@#O2X7e@KGFpnGIFt&86t|<_zPx zJ_#4jLk8L4gnI2dDI+Kz)i#_K`rjF1HFJ}J#pW`1E0MAEafJRhE2>lck5aJt>+BOrDU2=Q>cj$_aFjxIc4%;b0X= zZ&#SC^X2UL-r%KNtDkfC2K-W7z+oB2^OKv`ch6B6C1%Yc0tfKJ#Y>iSrDg5Ir@qg~ zmP+m(j)maC9LxiUG>#)u%|xwAIO$T?lgiy>IM(hz*PgB^4*qQ`;CX|9X4!}|rG?Q? z-?R=XTsJ>`WHE66?O5~j_;GCIZYbcT9Al}zx{kIqM(6%p7yplnggk`I?+|1ap7vW! zH{6eHc36m>eGR9n_uLBBK8@$ruj6PuK0jigTTikE7F%Bt?X~}-?@yIm_ksSACxrIr zWT>r>izHd6F9Eb34%GHm78QzVXI0U!pP_=ufx)-{e=S6ujS!o^r{vOgm%MXhKE%fC z!=QNv+55uYCl)HSQq`|^Ps&A~{a~1xEk8GDYkh-MG#LAeiWHmO_?9WG>MGy5q^9NJ zxKP9o+NOuC)>Ba*V^k^Z)s0bnbPqS%EHlyMbTu~7c>`>=>=K`LrDc`=#tUIVfcOjP zA}K0Kz*ct^hK*A2ZJ7mkX1> ziQd&b#KIR}$#8i2O;wyY1Rb*#O_^WkYYnjGpSa)L{s3HA5qf!&?jT;Gi0t@A@s2+o zu#ULRJ!-4Gm7Q$87a8LDWTIJ`X6BZl9i=&9{;m8%2eaC3E7xk)(jtb{B;5O1O3gPs zkpOmExw82CV;yO^Io}~`K}4qfcQVgMER=OSxBbQ3mYl{Mw|^%Cb))CFEw^tCvifKW z7PJe0iaI*rR;YGhhHcaI!QDW5Op5v?5Kc+M`jd*h%gRZ1?D+pG%dY!-yBqTyu4W(1 z+F9fTWWpcZ*CeOgD`ZpAypTL7$81wDjY6l!uOYF}(Xj^Egrm8g%BnxNsY{c){3N zahDhRN(8FulP7ia<*>hCDaWfh@72=9OEK2PV@Mzt11esC&`7hA>+K=R2I_7TU5#x>7=7nD@_(=wW377NTm%(bH59sCpxg0;@i-rl-7hnzcz}v zmxO{1VCDUWw%?ewBFv!D9Pzt#GPs35{5kW-A|0!>Zalt2t2-_A1lKimf-vHtW^jZ_I6ON-_PO?Gs$m4a4PE6a1~a~i zJxHD$K@x$@hIqk6V23vhc-{V%0Kg4v9fqNo@Z@AMcidxA!y#n)&M_32oq(rr_T;Gui-W(sy&6~ku})-5~AS`@5@B83kE zaKePYaDi&jZRySUyZ~eG?T_Wv|Fa(C`N?_GYR7AEd3u9cPG2VC^DH@MS1$NX z1Vfs#03t^1(8Mxx{7=Q039x6n+gPrgtdM^&Iogv>i$F7y$94MZ(9YiCXD!{cwkn;P zuK8gVJ7uNOQw2_CAVJfQ-6ovV@r2F(r&9gD)N1dpvDGRTa;vzl zgM27uBj(00x*#ySqlVF28rCA}EVe%8lTY?;HeQ2y0PXslwU5OAn@*&2Nd%rwB*w}9 z&I8r4i{LPgFH8e*d4z`wXLYsR>%qlYYaXB|m*UH$X`#5Tvlt+?_m&uCQ;(AA>GJCE ztMFAmdOi@ES@Q5*)0mdqDqFiv1Br9iRpLBdCy4X$OzA@X3Hupf~#_4pdkoV<+Hf?Nw=^mW1oy{`Mk7W zLs1JmCL<1-x04{Ql%=cz4zjJe9UsD z%7TA%r(^q})G-xe6RB7JjP{zRN|AL-LCr3b_^s3d321{ZV&a7$NH%wX4TQ1JUY~-1 zrJYcK{0&!)zdqG~pS#tPLBm>N_>}!~N>OcoFZyRYCvd|GI_y31q)`#Yf%o}8pYXqj zAUX@z7GS)X_{Jm(A3`OL$q(gdi`x6wyhiV4QixVk4JOR^f+Y|Y;%mm|aGU4i$H35- ze6cl#`g8DPG~Yp#;^h>Zaf<&XgasKU%*oX1;96&`_CB~bH5ELBm6;j}$tuF`rTI?c zfG#lMLwVtx7kI!HIW4}}#R`8ZjEbQ=W!I{_{Z-Px*V`)eRw@lp4ETak#X2Mab!g=e zrwP!FLlYgtYEjUu@hn>xohxUIKZK(Gdg}giSAu?nI;a?M8$@$TkzZb~V@2snSmBK{ zz;%d_wvPX(eDnFNs21W!eF3NDic#IiT~zrQ%TFPv?`^s9YsL5BSX5+!UUi(1@GBwU z;0}p@R3*6gMP+Z<}yYe;10{RoVe2KsW-fhR7W*bw|8{;cZb!xVVW%)Gfz>qksVYsYpe=~7Ue6XO zk?JywSqL?ul)@+LmmC@NsJ1rg4?N`>nx0R{iqzL8^xW&YF=IbM?(` zNp&}Mwe@zCx(rwTL*(AM0>xnY-Iqwd*a{JZLY z7uWM-hdTFw6mN!%;B#~{tQLTv2GR>RuNChT4D>oD!a24B!%+@CTekU$DCGqIS0?>6)zHomxPY~a zrC82#*oAh;VE3N*v1&ppf>D7Ls|Ia||J8;~WGZ4tW=g=Lls<6CmGFl%%H5tVmQl-1 z-v{SP5>Ar0zC@2V+L0!3LUY@HDY|VP1Q+~uuVTMr6+ZO!1wPaxwBz+gP_h&)=7f2a z>%Ds|qK7~AcKULTC*QXv!~ss4$}>sS4k4WEd$(}N@o%DNRcIZy9$5UE=yWmS!Y(F^ zP51AG$b34lkeb;y>=6FPFC*NIA{-jWe8XRpF9Zi5nc>+hl;fp`eWr@9z!y1c`-}BS z_gpp{~dmtdF?hPI$8=TA&tIg8t%6(4*MwV+SMaug?@7$J3*s z)9X99+Jx7>l-xy*^4E+id)}|dnYId3qCl&)pKH{Sk+;pu+ADI6B05es_`Te^5wVP_ z5)mlAKs|2Y?xJV_N^+%?j6m>b`Zbqewr z0#PBH1^3}h@XG|ZAJe%1y-b*wka>z8QT75W`x-ERCbK0+j5-~4M5f7L2JsOR;&ZH==J^or%+SwE3iVJ_(r~x-Y!)_HP=Qb9$z`{ zhS1jZjlKA6Ch+2it4S1HYu%lC3cUw0V)IE=MN~~Z-9a>oTsCv0Il^q$|B9WN;j(}y z7kF~&TiCs6;ikcjPrx7|(+TOvufBYrn7G+{l+F~b=cWwcYU(Q{zJbh!)12q$b`D|L zrqFnmJf0y z@M#4@Kzqzuz8Tuu$fXvO;d~!>Uj#$a;blQfXSN13DQ^>flNHvXNjojoC_2%FMuOqE zTGo|2ED`WysX@|ZchJKnZV??K5#g`H5fC15JNRmzWk-7RX}EYA^9ncsOE4DTBwVZeA+aS6#3e9Ld`)1T zr{Tc07Xw`?m)vPq@RHf+yk?6fa?RZy;*45fh#{(^X1&MciZ<<8Q@hNb00g>y4~4nC{%lJ$2~uKE%Y4DcC(qCC2Zp|8p}^Jd!Ci4lNP{`;3lENcsF@60jN+wG!e% za-iQTf$nrr_$HarG)I zr@56An~n7F;Q`er{CD)IV0=x2}PwwJ$pX`>n zk1mv2FAKD5!zdKTNT?ROre)T-xjCxrC7$42 z19`7HM^M6-{4a(?`$Ei85@-lB6X+TZ_`v1jLPjlT^y%F$qP>mzID$Iz8p;CH#}|uz z1RVIKTzJR37u?huOTxB?v5Xx6Ptv*j@o9NP*+O^z;8t-DCpSiIe0r0v(2V-T$mcev znzLPiimAwOV(nptI`5Gnk0=^q#%TPY8v<;4+s97K1gI1$L(zYF1c-eq&A}`B(5S+l z>Y{P{;?5p&+Y{K#kl~@E*8JrFTHm*vuKq%=XMOPe$;<+vy{F!Ywy3O$>a?a@ckms9 zjeZ7&zowh4hm25;w#Kxn)1|U}Y_1b7`$*a{d#_0+#lL9TjFyo)cJvPIN%PWmM|Gox z!ha~^x)kRij$chFaVuX7Jrq`oyNfVB`<#ESSTNfy{gyd0zAVwl58-6~?AuctkEhj0 z%wzbIsmFj!>c%WP^UT-Y4{!zp>p6CzofwJy@Ag83ES1?3=FkRJGnzdmPwFB-ACPj0 zg~^4{gI%S|Oz}2;V2J9&u(DmHbBInlN+AgcAwrDj^|k~p4^cD6Q2qo)ve@`A^kuqHR%xq6I)3SIFC(5jqMo!}&-Ngy||_P6$e8Y%kE)SN$0HGmAM%o93p zbkG(nzcaBwi4u|;!Efjeg9K*Jedsv6}IKK#Xe@nw%h$ zUtE^v1&mUr8uaNaSNjQw zeiJzSJR2Eb*}=jBWr5vit2RI|gxY7}R*tPEckGsc?OKQ1cnm!4cn<|*fv>I?rxzDp zgeJq}ZONtj&D>%wz{Rexf5u_iPXwCXeeSq>pz4L^?3et5rGnwZ=@`x@N+Q;W9g@W# zDY^P8k21AyZ=|Y8dPskHO}*SY8H5+;DQq&fmyi)Q@q|riOLCAppO5$8ZFV7?knTj* z*qRS@%h#zxjs94IkpM^`K#aBqgt+Mb=B;qj3R|K>3C~A&7Zs2|qYj#xf!)lenhbv& zX{6&rlZ}s3H;7N@=h8&6a<*}!(=QF}y=`UfN)T~`mqV}ZR*$~xqGOm+_h05EO$lMc zDJ5V5GcQ}Cf{;bi@l!drKv2tI?tS_hT_sW>+)>ZnRqlM9>-?Ds{!HdV)AM;vpNAV& zG!|QscVJywUP98;;6!y>3&~CC8Lx+~*EEEr;Ik8H6^kW%0C?a)1W$S9`90Ioc36=_ zINb>_h$;M1sE!uiGKYf%b-wP~jr2{j~{im0%h@njCxcujJsRQoJJW3~(B zkzUvDVqUDg7DA$kBFP3ucb>3ImuEOUjZPL|N`ZHVYNdBdYNIIC4M+XvUKR0&Cm~C& zfSumDjrWS^TbT=xf)Lcc-E23VbYb9`E5(9kL3m-M4R*@P$B_BBoAGFXuZ_OMy??hu zJ*Arshl>99c8oPC=vjar5zFKD6=DpUK$LXvru=8pwuUszV8j8d%ZkZ0ld?M*hbOAp zny>$)f#1A+qON?Lz2vs3`9ksNpDqqQ73#2TQP+AHM6)HyS6hvY5N3uQ`7XomhI$Ys zKFvX*rKPI7e&xpT+Q_Qf(VWUW<>KateRb;p6#D+73?c9zOOZkeZd6mKKDw!XqO1P~ z`?lV}2l{RAK@G}!D~1UdYa!K#Rm+~zqIv7Nev?hLkSnA7p$+d_gffEz53RTR=aN}Y zkhx3AIy#g(18FT5rV*@IxId<&1gYce~W8;pP%_bK*QwHVS51FDMygC&{@*Kg&E>Q#Mvo z`L;$0mlf+g${fwMh2e1vLVaJh)l4unywm;Jhr}nV3K-}Lis~zJG@|e+3J8Ys8Ar-R z&J7c6h0-%eG${IKZmAOvag*mwX0>6x`%QjWkZ?F^_WVE=b%vm!k*>1VL-#1iW zN-ipn>I-}V_~=V#a;ZU;`T+Qn(j}0<5M1Y1s>2{hYz~vJJ#@nV@sLkIE<|{Ch^{>h z>-+ErG|034}J-~Vz1gb{kNdz@2AfxZ_d!(i~haaCU)t~+2Pb&1U%wAUo@1I}g zLpP}Rfa&90TkMyzNi;j#>u`0fgyM0Ij}$Yp_JEKxA&#rX>qpT>d{BG|ws2tLvUMqG zi=oaw+(2AWMBfkbpHs7tY7r{JLi8|5tmkd9!6+OFU&YGL0KZfjWMe{K34;nCC1w?? za|At;A~)XFKU5J)C>yyb;Mbd{c3a!cAG+lqZ7ig1sNwWU*mJA2n*#=0Bnt;E_dkzo z+daG9FUwut=#RPH@8PPs;W)t89k{pgg6tdb^?0uhPvFcl9P zjXIvyInSlyzFGue5hD{?9wG|FYa=NSs*ND67To$+L`T5L4w*fAveCdQg4U&pp_ehy zJ`|~@u1h_fU)=W(=H5nfYlxMc{>pl~J1uv8F42mgugdLtd3fR3?pbqVcOs$$)vP8% z!+xMIQP-^PUJu=3&o=MLCzT%WPdCww*E{luhn4*q^5+nBd@}LYElQdOA0qEH9{Q5A zrjK6ir}eiP#XdIctk-TdHMff!_w1|vUMjA24vXk`Y0h|=wq2o@ytN z^0ozecj6U47Hhl3rPHm;y2FSnHq-YhDD`sJ8O?h!*~`?9JZh~P=-dy$Gr`_%0UK1n zu~=^?<`$5F<#JsJG|$~yGB;#&Qz+|TQc!yvx;7=wxNj?DSqGO1JpEd=MehfXB%8e; zAQ&*^)I#9QU7`*Vy>(Yw6%r#Ow26uf>godz*cJWiPw~f;d<2Uig0rEOejml)2V`LH z!GyXrO~lNnw{ZLcBZ0+S!dx&qi9#gKftnG7O`x7Ep?6mBLV3NOI<^Haj#tPzglmV`+Fwys)^zcsa~zzI zKMFr*%G=1PlzI#xT;Z@s=Wf1PpHnQ<0u^etic<0}wL}SaWy%OC+<>SZI=WzA_+U(v z5?oAT(DfVxxIs)iKMNSaT5f*InTlozb_b12?)mE5sgKrF3ulFu6)c6f+ zwsB+RnU9)7)5D){oB6q@Kka6TPMctIJ)x7y_q@8Fk!3RZ*0QAzTz8YnZK2x@)LNx( z$To@uzD837MDc36NbHJBsyjpTn+pr=;aQme#C?3zZO&d zc2KSK2TJ)>dNy_1Po~qg*|!anM5eB(?h9~V%kbN1^7zgy5adFaost*1@*3k=>$nOx z$4f)pOFp5{ZLnQ$(943pp8a7kM}d^GVB@17>uUNi+fhyer2SDwP0}AiM$@6IxO++* z(mCQxXtZ&6XG-l3^iy5KMM(VI=#6d&j`8@@LRh3kk#X49+b`O?MJsNM%RcF75MF3* zKUB&3eX&eGp}cb1nSnp2agf~SDUz0C;1=+W8^NLIc#WeO>5|La>?h{lXWo#Bd4|%eJ)(CLgInYdJknSt3I7Y+nlpH>F#>0ig z?rECTZ?iOV$DQ-OIZ7Qd1uNrZS{KB+>^9Tv%t`_Kd2T@fqV6?-7KU(!r8s9%k$JQ^9z-_mB8k@}S zI_oUcE}VqDRXyX-X{UQ*z#wSRDeJiRvS4YSjch7depUH3p$iQrBELX+Xv-L3I4($r zd`6{hxpcOyTw;YXq&6@_?=>cN6o%v^OvqdKAVzV~SAG&)ZO;|i{$6cU6?7!5jB~EC z783bu==(~Rp1v5xpHw4FE;et0gng}b!~`r#*l$tLD_9xtHvkv7foMGA56{-LZX^Le z53OqhrRNj3Bx18wx4b|e3S9uA-Y)mkUY5s~wwF^?>i{Lrt){LQ+}Xa-!ga05*(SaP zcF@Y?C7$HTP&QCzt`ChqsKZty7bo#kNvbC7ZBaD^&&Y%0sZ zFgkoh7FkwhcWc8!qoRz6T8E-6w0YZx%SKsMRb-arAX94K_nIS*ax)X>S|SaB|2x1b z{P=GADQ9_d4E9(H%+JfwZzJ1NPT)v2LHt7TJ_` z6#D=#RoafCwvH9M^4{t9;0wN{#_*-&@Rq*rM^=z5HRcY#z@~fDAV@A=Q|o{o^-BiSyl5^%9yE28YvjJt$QNG>0i42dTN%z ztte}%&zH|FDqDrZ5C(sA~z-Cf^;w(NP;m=-#?Z_{~?(vV#jLiN1x48%xE^V?$^mBfI?hp z?~qmtlHE=y#+IX#B!?n7mYUAhs7_LUge?Nf=j$fqLeVUg(h|3I9%`6H2fcJ2jAFF4 zJgnH8O(AVif(GY7Ckj{C6sbbU{?;8R0#;@?+1^3TQLVRP~BX7Uwm?BZs7ZMRt|^tL6J@1^Hsn*era2GnN(l>3H66M<|C& z8rBm~X{$TGp(N{4@@=bI(X?G;nhyQ2GT?L0YeMj?(3H(GcIvpqCq0{9zmn0EUFyfk zrJ)Pd;tV`ie-Crnq5m_Azw@BC{~Qf1w)*=p`>WOC^{-{bpEd}!^m=G6)A#=&&lW{} zhpfh3==^?~^eDvn;>pSlOUk*KTlKyVT6{8=j{RB|oA^*2>^CB?b^CgKdTE+kc7S9s z)@g~#heG;8Lp?49ngC^{2#Y@FbG#Z;+q!UwziPC%kQy^d6=(H~*T=+Q2TVFQXLkW+b z*$A4b;6Tc|+o4qx5ckm3z`DRadVKVPxB8Ih<#@7iMyn7A`@97^z5C-gXYAghPP?+XQ4h-Vu8x5rhA)Aa*Z7bU`+r63PRRp{*yL358DVN1 zEFuSJ?OsfQPH20-gxOihmP@sIRW`!rV2vDi``GWYtud2|kN2LQw`$d1y>|awa9Xhp z2^uCvobT`2*KALv?8py(_CCD0YPB_?cw99a{rn!t^rhzBo;hHeo~F`It#FCcjBbAR zKZVrBB$7CLE2O;TeZ6?oG)N1r6d9Z>I$+P93RScO28L|EURYeIQKi^dnvBo~Z9~uMI%R~0MN^NY;czM=mnHRZ zvpMI?X#?P?#hoin;Qv%;c}jw}(^9)l>+cW0=BI%eg)^C%@U*)Z7KEFOM-L{e*|Lh% zwu%zPo34n1ur&gQ%cbF357C{6nt~$dl@ zsG^4)>c#T42m|<=C-PabyVIBfrU&Z?P*IdMn*hf<(qGs&z5Ri@6Zjwt*jJ|H4xBR3 zACam8X<*xBS^S(s&lSMHlub=+r7O_%xMO{v$*B4{}pR zrgffUH)EjXYq06lard~A{IO<0c7d^-)db`6zW=)`$=;DKtz%z;wInP1z#KDMiJ0z{soeHU%q3SWb9whnC>}AAID@mQV#=P0pONWuF)*J8> ziw$7VYYjIaTSShJ74g5LRyAg;52PN33MkK5O4h5HjBKgvxmHn8ql zT3z*dyJG4ahdrC@|Fag^%u)ildtQWhdC~nCac16mvnqQAcc=(r4Ij>i z2g}mphq*!{>A9buVeBc$!^wTsr6KiC(EqcUa&^n z(J^k7p0T#H5m@dQMZjrJTbfNqyJ;$|;?+D5Fw}ZdelY3=i5S9daEPFsLGwJQ<5Q-% zGj_3f5t`tnQaVBJAttcji%l`@{c2;TAjQ5OdF)xdY4Wblod|Ocecm8yYbAE&7CY<` zEHv-Fbvw;_hjbA%3CBOW-l<7Z>}wSR+Luhi$L)XN)OS#imCR2_xM(B*^<4}eRL<*q zc->F+Okn6|!tt;vs=sSa0G}EJJ=5^eeCBdK_1I>AmAjG-=%=Dho-ZoOKM$9HoeX6B zsAcPEG@ZwKrhhlsT{d>6p@O^&?2|8lWKUoyyfemaA>$%E0L9&fvI(hdn;2|g8alHL z#>jK;4IeXc1oiavvPV9a4fUf4(2bwC zJ22Js%_xASOuQ?Z8$3$lr0}9ulS_t7(2DPwb0RR}q(3TBmHDd&k!f(>rTM<8WH>rD z_;-4zI%uyxI!;uGLULH+f*Uw?RGcgpctI__mmcLrZUGeLuhi)%Ra$Bbs_JDXGl!0B zq%1tYi&G%dDTz{(TPrP{sL(^*9yj~Bdv8OdJoELxV)iIAvtjr{${>bF2$n3bqM^4$8S|U?l1K(ADLI6|bw& z0fz+llh|XXXWu5dhhAc52>2`Oky>oBxUC$~Swz0}7uFCY!vSW|nx#T^kfyHyLLFc> ziN0;%pw;JDbHYkg(;gteski8}>&pgLaIsxjTFIw+)QSGkU=Oua=w@31>cG?-wXJy( z*1**FFpWF1;s)ngU+=mWx$;5cq6^BKPJ1_aVG)K6sbnfSw;Qc#q78LFw!Y|>PFYePX_e z>1eA;%ocpSf#b>2)e>I})im8!qiW2wQ1_s!V&fTbkeU|uT{LTDSp)J`bmtf?cEW?_ z+IU7NG5DtA-;4VzO_^8&Kn3{#1GAIw4#tE2xu(Lq^=}sROggv`hwK%j!bpXHsxEx5 z1YWXZt5&Ke&CK#mPJmSVmXxy=&WEMwhZ8iVO{ol}R?bs)aaSHSBM-L2{g{Pf)gVS{ z^wT##9*p4i?|1nu7zYo?!{!1;ABcvg!DDpJSJv>v=QFx-bXN8!pD*P{%M|eswm+TJ z&J7Y-i9q5_PBP}vwr0PrJ$~ZU?Z+gNRe<}fD~eA5>o~r}?b~vG8%PielAW@3eOr!FZV)n3+hVgS*R@*4cDNAik#u|<1(bW4{+P>vU9vx=euP$uUv&vYr!j#O& zNVqFi;bi{2uCeEhP!GP`?G{ci^eNAMFZVjUp(nkIPq>*llP_n~L7%$B6#)Xo_BaVY z0lq}9pvtg=PGnDYN{I>rZI!Qgo)6|!t>f91;`N6zIKQ<9$Q!JVt93y$V-KTj;YRE*bqnQ_)?H?U9FRz*$ANP z@w(CFMjXr2m3;M+8sq>`yM1o=B8UbG-Um;L0GI`@r(cpT7Gq9^gJ!p+IaS`D(9_@3 zID@N}@5N%}mWL=24j-qw=V$Dy3I@kQTts+^ogYV=pM;KLIpy&S`piR=1t0=(P_bNn z-@k&Y%`W=;KoEA~U4u>OgpJ-(_TN771m~KKZXqL9*t^TLa$Gvaoes;wU^Eje z!YQezU?f!u5PG2g2*F_v58=SVV#^YkhGRtx%vp8_Tu9x?oN#`8@!E_S3Di*NB^C8* zdtd`>z9U2z0M@PQ&8z1{It`objE!rBvSUO-OVRA5l>*kX^G8N1c_VT}{jrK$gD$u- zW~QYzcy`_~%o8$f2XCG6bEb<#LxROe+&0MYSCoij% zir_AIepl^$*DFF|KXor_yxMM=3T3Xun0TN<=x7X3rP788gxSX%OrnCx{VBUv8t7lW zg7*qIs3Wc))=E>t)s!@Yd@6;kPz>WWtk&F0ZB*%ntZH!+%Iw;tI@$e`@n(Y$Tw2pcO1WH?OU!?jF`@YDuv8vob zPz!LKFvNCO)$>bt7zCfi&ZS;`V0^#8cxJwn6@8=mR0tAfOZl!!%j{6^JVaz?rEPF9^rvBpiO z_(2O&S@5=qgsIzkYU~*t&Rc5fXkDD+IJX?#pQNnBF&xhJ6z<0sl!s(Yrj5B&G%WlOq^#5KHTx*71H zs=F|METppNqets3^8IfMp@K&N=wag8iGgGjmQ^*AYAz{roCjrHL1p3o-CTbdmP$Qm3* zk|QT$+|r{#oXp5a#pUfRhvncjIdC7_6;i8t35H?~p9+}-E!I+GV{7+|_f;#nGV&SynC?J?7tE)Pr@~MKsPt%9-r1bdo-Ckt zRid#$H5y_7M#|7>lUk_OZjNROSCD^X0TRy!rM+zu%YzCJ(rOKl$G}SjLPZm$J%S1x zp?M`XM{cEWf{~k^o6@hg;dw7BmdY7t%bh9|w`dX+@Krmd7g??`iNp@%s-@wc!kx{8 z6R}-Enc(@$EG9AqHaV+Oyu{h=L%6zDso8k5t)u-@enRGUdb`RMA?-}2cjTGj zo`<;NS;Wcumypb%XNk6G=hpkrZW8g&nV4SV4PU>b&VR7GB&*!$Q=e3{XZumsfV_K_zN$JifC#gNhU(as z&5UK~uvCFk+Ik3z@m}{)Yu=P&r-#(SpO5q3MQyE@wY-X8SNa%SyrNzKcj%XgFKk;S zwiH{}01VYhPoUK~YlWWB#91G<@^Jk;Xj(l;-aif#BP4i{hrgWp(gwUGAum+M0FVfP*Wm~Tvj69 zVXVW);ZMX30Vfr8++KjU3}$IQ{UR`SD1IbpAhd2Xl^IJw;mJ67St&OcSq?v}pOX0I zv?z6+dV=4}ZlZgBfOaC8&S>!SDO=A9H?;AI?-e|J^*Fr%>{IO+JdKO#*N?M|_g*6H zUZ@bL5ngST<2Ns>yC8}l+<_?TJ&Bmqwro%_rcrZp)r*@T(Ttmx^ zi*R%#jS^c6!WkjOkUZPZYjkj5uv*pJA1}`qqa}f99Gus;RAQ^fq;$B_-2L#Z zwVHWko~d5CGF&(x4a@3ewq;ozrQHU8B(wOIG|PyLyBY33%O*EPf&uRp+W11XMFv?3 z6g^+KQOI6+))5>ox9gc-R!`b-pVA?h+9RDFqMrjHSN8WJ+aueaX0W7raU*F1x126^ zZdP$`NU!6)r%o;XBn9HEL4r@HL!o{7O7A@lKc)vPIEX^ZmzD;vM-F5M@p*#723;q*G5I_G=kG{cup z!s;MWhJBuz&=fOh*ETH`wccBQJvaxI+GyL=gO5<*H^BR+Y@jD@$^8@GD|nRd-@pMq zLDp)>-XKAgFO8P-A?s;sdK*;>0-}BBrTc$ZlQypS^lT2i|GgUH05HNaxrH8>T_0|B zZrvOvyHQ~4N_sR;d}A%0_C*^Hr$CDp!hr>r$7mt21Mq=%7x)RM&t}xsGmg|0%k@2W zZHhu^o1o&y18iw7ywd$U(?+A(CFY$>z~ZW3DJ125SqXxO#o!9}jtEMQi-8%ze1E8L zrtTi@K~S zRZ7%SNQ>d5smsL}YRkN4^|>2cmd^V3!(qmSC5^|Jpp?G-4MTvcyOC7UAj0Z7OoX2A z74x04jA&vWT8WRH@3gVncZs6H?u74Gd^qr{8DE!WPELMZ6f5}FYL?M-_K4W(HOyGP z^&8gR_wXumZFhUII>pLcQGrwV@ww!tIjDc1b)7__2$G5xRd7f+vtK7Fb%f;ra^GuBpAOU2+{&-XO(9R(*2Gr4LGzsk-Lf_3NABGb{rHLtgwnQ z3*@PhZp<$sCijjvb^{+PX{MRv9e!n#!({K*w;axnau#!bvMr>(!Q&qmmfT3`8aB{B z`XOP5cTCR!b3A=CWR2lT z1Y|9Yo#K!&Z;i5rM)bE!coHy38sNVy1DR9=Q-)lJlWQgOc{DeEtd$TQr1(c|4fgv2y-VuQ= zFmL|b495-KEK7VSZF?B+Vi4wfHi);t#l-BNneFv8=BnNSjTw)5kwjuoH-e=?^I<@N6JlOJVn2S{#&jD5a z6*Em=7^X%RpDs>HqcpH*9Wk^lf{_(?)ezU!?d9+8;$BMT)1=%UDv|bn$Z9!#cbxx$ z_X=-j3?V;g)lsMz26snn-9>j9tH>D+08|JU3R0 z5WcJ(_hXZhoW9?rfJdZ}vz&(XF*<$-ElQOBYISoh&e>^wWgOyM1Wp*xKM5fHPi z{{Pr}>#(Y}ZeiR+1p$#11e7ib>D))9L_#D5>2B#}8z4xEbPFim(y4SK9h;CY>8`!M zwKfOO5%Bw+`##To?|Yx$_s?W8*O+6C9&^k!*W6On+||%`$v!GYu=tsyw4 zz$SjYH9SN3QuDBd%;GzVg9RR~+nuNhCa99A?ztA^)72k3AniQk-mU^!7TR>7m#qwFY{eY}!0M2b;d%TucKs%?SBpSzR+6J+T>yCC<+^!zyn zw4Y+cH_Z9|`fo}H1fifLk1Y7=>(|eC zaN4@s2nK}bc4vA~)$v;$9WpkL{y-jX%{QEA_c zNpPK%PPde@kKcoCF8?S`v(p{AJbXx7Z5lQf%h|MkqIWFi~8k%d_222~=P3SxxXq;tWb zj!8o8+^!CntS9n)WTINin=2Kv9?MPO{tUXL6lRPEO~DRzK}5=K_(DB&`TVdp@;2g5 zgNSR7{Erqtr$fSVXxZvz7B?O}_$*w(_RMVkk>%4yMA_5GYYoq*YRfgZh*HpBAzud` zWO2|`4}AFc0o~I=-ab`R$A{e3*u2g%oyM2G$vkp!v&?DIZT$w*?H-h)mEpDnHj~Ht z-+Tt=UEb*WEb6@<4;^evda`Tg-*v^`P}g)HrH|HK%pUm)&{~XP@=A6fHJhk?ic=|} zmxD(Tu}=*zOV$|QR$2#ITuQx3+l@}%-UkemFOLGDjNy~$Zy)9gduh>IhQr5L^0cfZ zDVAqJ|W$5D{4Lje@V;z}+j1o;94e@kU%xRwTZ=<`a7tN!12DGik1geGogD znG#vSQ6~4egFE_~m)TG0#D#BDl_nF6VwQ{tnN&jvlv&ED(0jf1NWUK>*3LtK4>nR^ zub##~)@oT%O|^8d=?RC^ORtM8xWzhSco~a3v+oQ(PCk6Pfcqzo+ra~_D9JuNmfx;V zZZa@g0gLLDU+65TmEOOBM-1>|xo6mKn|SxNOKB7d%e; zb6y6rh{kzVJ3q~N6lehdQcAJQx7Ln1xw&pPjQGTsjB8Jpd(QT{7sUUNRe&+t?osuV zXAGucI$zl?8t5-_DWK7|uWwTx7D{L5zAB%XsU~}m=tjBn+9$@jn{QDg=36AiJtz%r zW4aurYkIa?fBdnTxz|t{EwGlq1$-^kUh+6=&37@nixF=9d1o?Wjh4c}Vt#=pU9Tr9 zTw-_jh1)jO&P+)Ed1;YPYwU7vujjf-9;!U{Al88!)7#EZ#rGRjI7$m$^;odaG3_cT zb_fK{JL1_)i@BLt@u1UsXRnVh(rA8`*pWI$w*0!(C&|R#8~g%TJo?jx^)~d@>cKRb zH5h69q}k=?^W@ZfEImyJIk&xN7cp@yk->y$D?60FS~KGt#gwNPu2-tf+B=vjNe)`# z^$2$hrDj}B7W||6=vX<`6e{}lI81K@mCz)VB;Wq~PUkHu7Ir=xRe)lDg?3$;?<&eE>*X*g~T|P2Xr#C&(`MaZXFo9nU$>C{@S#!YEuDF4nVoVOBF4IKY{U&(PwK^ru$ex0 z*Y-bJ5~9UcDP|nA~?>|0R#L zq*C**h(vYyXGP6~BGJ>X_ab6C;ayQN-2Duc(zj{)R{8^veQ8pId&w!}o_rE`vKGeQYwnJ@ zN-{BINIKH=S~c%1W6W$0w7c#gs?Lq~j&Zkp!D{}N$&Rgn)AiTt-8akweXrpY+cop{ zT$*TL3FRxXRD*aI-w(REl_xd!(nYd_%DYnp_}+&!K#FlB#l6mEwaO?+kI|^;i4Z@U z`5RSb=oOaqCi_^!I6Vj}l#`dBO4C0)avzgk%pms{mg$J*59 zMp4oHz)OU?chy9`*_7pgX7#;XWe^bIi}J+-POCPKbcd$z`}RUL7jn?+yhuvTo< zcMzj;C#5rVMZVo1%}$cO-8hOKCoJ#ki_M*ZJC$!{Z!@cGKg!ai-0#0oBwg>sT=+Fk z_-Ed6`uLWR{Ppuidg9@($c9m~IgHum1p1Ay=wWe1>q}L!61`ULJnn0XA}v|maM@4UG{@ZR0he=;rnx?`L1P~br6C`{JcFi$`?F{4U``V6PBibBWtfO=>6C&8C;sdg+>IA@i)g=;RJFcp5htej0HR)oUMd z2O0l#JnF~YyV30v4!1~?T-a40*x}|p?}##R$P0*LDi3P&2P4XVM3);h>6w!b|Hzjb z4BKO8B5jqSx;>kmsY{1hORlv6OnQs8e75H$dw3vhUPKbzEl%r6zBdW-+SaDoF;n*- z27Wc+Pdm5R?0*11L4eF}Bwj(EvE*BYQ6`P0xiZw=Xf^5C=-ZoT<)F%^r|~tG-KC?K zcUbSEuWWpJq-XoIgh(Ip>)n}aeJ@`4oAX4r zGD$6Pt@3cjQ@ab|mX_`>tdl7`oHw79zDo4PzP8vYGs1IJQl-LmvSo82gQbk=5<3qz z{qt#9qqzi;-LUU<|0LD7mY>!I8s1Wnk~L`gV6Oi0{s1o!I6nSe@4A(Qzh+V-J}CKN z(U+5@Six(;DBPJ48)qgQp@*gK-trH;#O0PYb=x#7&3UAI30H-TrqV+7hzTK7iB_Vp z^&B;PTJN#%=N(-%U~PfjRJBc+D5wE1wwVp{L(QR%ty?-#npg$_#S_ss%POB)a^GIj zTowp}zuvr)R>f{zKcW1@)z}Ya`t7|%Fo-6w#Z&@ zS)@=a#cU~V(A~-%ZVUleJ^D$^_?tj%Ri&=39K4KXN&cF-*LK|FqSFs$Zbnj6h30(Cf~@opRzK*x*9tGs zkWpaaO&xu`-FAgt!&Liyu1gd)2F^@)1|l&j2fnAV?jp7qJFCAakDY0li`Z4f6kKar zc~YD;4V(`?&aY_{_5#ZBfEn|aGOS@y(+#a@?II2ro&b%?(hWqN+!|sMKLzQ>dRo1)p%uho_(UPOzn8QbG|ctb&7gRA!sksBg#FS*TbvEi zo05CigZINsO;|o+`5SD+O4=!GTh%HbwWSUT}op)MbYFV7c?7qD}Gd#r+wj4Bwe)+(sd7~0>gljY7fsq{O^PkpZU zB%XSTVR;_L_y|Jx$Nh`*#YZ#d`9HD~<~`9J-tjoJl|ScvAH&a^eNWd5UtN9iwwoO7DOY9R@WZA zv6xg7eTm`DVK2t>F*YI|63vM)w`+K`c`!1OP;!93S%5I2C53kPY1$SJzSN%^gSFQU zr%b7OR!*K(cOu&%(;i>F#}|3=AvdXg(@R6z$ zd9dPdmwp1|XeO%deKZ}U8ppdad zxbIAp)ItcwD`R{tY*#+Dehjp9vf%gqFIJ?*XncjdqquU=O44RN#S=WrI1(zpHhY7d zQ|IlZf{Xp5A|JxTnJ@Owhjg~n+so_S;G7P7C}lv6y1z8^g|?v1X?JIQriB`Af}sf= zpPAm567WON_zF*x7n?;mukZ?-Q6k+le8jUj+`0CtPid`rVnpa0Kk%cVC}XUb|Tt3-qvL48Mekfkn`HfdIbeWNauGA|V_(M_3s^Yxobw9~}tGRKl zk;fd$tyq!i7n43MhcS$**n>}`?Hu%ZwXE`OIKwCHKC&TMf|E z<_H{Ri85Tar)o}}8bt+VxNk^GbXe5bXmJy3V8Eh>rP@h(Kx~`@9qxG zhz@s&aEm<5p40S{z%+ETVyf$6Drw;~*->U$4J5iMu)MSyYPLqb=`VsSUlu|hAJZ2j zhC{O`s}g+QAn;(}V8mDVQY`zALBZ0;6A_co1uo_C_}R`!>E}>ptK`9MR;U|8d-3FW z=|4C+N^I>&2h#Esu9tK!dvf_&t8~--QQYX^OKMWyL0+v4+K<^qV-6iJS0fZf+0z0d|MC}a0Te5*T?2;3)o zVEVIwRgWafk0VEJF&C6!BOcMM=K zXV!L^!A^G0*d(68(D#Uk6+)JmqywJY@+|7SL`fGNfVDGi*zPq_(=LtBFn^&3&WptV zoRL6Kow3ClNanZ38cg^w+x^3umD~-kr!5+eyOq)HkIX^|fuJJnn+^Q=D9i!ac$Z+= zW?IO>Zj(b*wBn~>TPVj8MB~PCepTai-$$p`p)YL*9jI$LS$tDM@~X1slRnK$v= zZi}jEOtKzLK!V(@O_2}svl=b$D3r7uImA2sBSva1ZN`f$h6Kb|Wa3>{>A zI-xL}yo8C5jk=F&I?RyP|M>R2@e00kkt0^YgvwKe5*xDk2B|RA^ud05cymes4e)D5 zN_@@0#yz_%=s=9BjRf~})vWy;$|=mKg0<;l8F7i)b=g5mox1k}*Z4VMXM!d@-NkCP z7;gAodRQx=FhWAxPdZ4*Cy%$Ip`s*_*IC7_NP=+EplR`|na#czNmAsZxa&lC&6Q8l zL16sr023K~eJagr>H8wL2Xzk_B>#Fj*Ht~cA|V%V<`qC?u#Ils@y(T1l917?iKxd- z1~cvptsiE@P(X_7icqBEs#UVe0#!~8^MccU<+y3d)B{E9-EU3O37IkTc8-IO(qCW0 z;Ahu)I9bt}{ig2BM##SG+u*rR-^l&AHf*Fd*Ok;(Wy*Jb9Nw{x2Pl#-7T=De_Dq~N zDdO&ynqwY#n}hGOJA2Pa7>CwKq+qTs$IDD);J_6Az9rr%c*PY{-0`VpGEHlY>>akJ z-ki`e8-C0{SoPlG>JNsO>X;YNL=lJ8PJs*j( z>7txzL+Q6vR349U6V#s$J~qJNww+KsQE<`xflR>#^9R@ow@eH7oj9HaMCn+kcMV7( zxI9%JSkO?tDVx@0>*$@Nz`s~jY~|LylE-8BN*;?VAeI_6zY{ZM zYt(r$wFTAld&w1<*vqx1B{66V!XFp7^WOuaUsH)y;Q(B$S(X58mhb}R6 z9cV(&m5i=hs%O4#4zEkbr|QVzHTjs}bzfc4f5)Ny#m!=adn>o%$Vh7&1_ptURj*E> zs`!-ptUMXRx3l{WBeQ1&`uV*A$a@?&9n1TddDSRXx5o54H{>rrG;ELSa@4P>kY2uS zKfK!y91R%of~sNxKXc3ZtGnQ)jqQ&XC#r_^s+kt|A%Aw-QJ(5~7$ru$AD^xy$Ij@N za-n;ceKzrSGdA&y2PO9`zuAy?b{Akk+lqzYUVTxUl%JzxqWyYev3y@DzO`kuZr7<> zWkC~TT280YEuY-MBE=}t&?#aeg%9K}$X-+&spbv;IU%9XBbLZEp#G*%-S`p~Cf*xy z?$d09KJ_00Q!tq_SDN`ym(JvFe#CmTudbcr``KYC1>$1DzovhR-dC*g0N5ifj9#uxK2j&0Z%TQuM(HZD58j zl3>=cEA891e=X(Z@Xbtq>)9KbAJi(?`Be!hHN7o|d2b0l>h=v*zk=Sk*pxwkA>xi< ze~%>5*|+W0@Omv*#fpRNPNszhTFiLb)Q{AjSd}8?3999p9_NVS+gh5%W^eJhM=x`a ze`W}PMLK`kyH!&-fQNpd@5+-bjOUYn3BTjoI&-DAR3X`2t2TwL)}bUe{k9OpP){+t zHU)fX$MXF+ZC{g`=B7Jl&8YMk@!vf8>r!u0Unc*kTIpDRBt`6?u@(EaknJscAxbTo zH%Z#1a0l7Ds*E9c7{pSz@cvyx6~~G@TGWjbPETXxBxSkghGd|lL?xC7ZcI$1V@ieK z@m@vpu;ouic{3e(4l}FKt%b|4J22BqS9j1x3bg2zgnV&}U1mk@NpoS@D}FW%eSXLL z&lAdug42t7QWw@)ICQMi@4=kBLlQS$@;KUQYb8247I-@7jeM{1*Rg&YnUGTMWY+1T zKlA+w_N{t{6vLN`^d-9=-ghoUD2w7xWP6K8T@M^*da{vUQCf5@6hWhXZB+_e;u4Fd zpqEA7g7Q<#Oy~aIj(6-a#a-m#aP*RmDcFi+lOyh=$btYBx0U^{vp>C6$Vdu*%^H#Q zx9~`6tOA(I-~+0C&i&Da9rQU?4`DsWGJK0d+vNR=KX~dcv7u+I<}^sglg4z_;8YsJ zqUicF{VE531QXPEQwtNjww4Q^STmufv1G44Q(&QJ>yl~0eNrmolimFFjCVG0_>Ag> z=kxFGZPmYL7gKsp+CH;Q)d!jemSDqBC#)|m z{D&vIm0iBMAhc{4;pi=KL+!$An@s|ykP=+$8%9NDwwbw!3O9w7H)Y#21oQSU6=_|l zZKl6B@+~Y`vHW_fMdAaZJ0H$}ZU$ZV5}c8~-QoIJ)fIV|Vf2*;Ev};YE9Zr=y%Pvpn8USlzt9+9>D*Vmm=6rW za**|4yDiJFjywTPuTqrtwh|NKZ2T2r8E;*J78WJ-z+8{Jx1VL00YeT+#veTVJcLyv zE$rGIM)-^N3-PqVtlm=ucbLVL0Ae#t@_`}u{ZRd>TvG!M`3wKnBTsFT>#=c+4vqUB zE{0e@OM)9Ge)-Scl>FF+sp=eJ5X1@8dKD&-2XBxJazWAmWH4_(&*!f43DH%*WhbKU zxrJm<(&yeGgZJ;S>&8zso)De6De%>x>t%jA!SHK(dbf}VSF*+iM`fGapu`;$Mr&&y z7w`G@`1>EPfOo-<+5w9DZx8_k!`0bp^xw4KjK3)S(2E9p?1#6{XVz=~vuJ4mo#^Qq zM@Ah@2%@j#9ny8oe#~uz0U>blYK{N6`ez=qmYC7+zj5g}XP2?>ugiFWZPGQJ`$y$! z*yE;FE>JYb3_?%uCh+h>t?`~e(%KL2*MMkFkWl-z{{~+{gG4|@Ai)x@!B(gLQo4f-)GWtt6kp{VOLz)>V%Rj%{ zVvkML(R&7}`|q5Q0q!Mr2W;c-2VObaE~Iz=4)6FFAev**0eCoQ+hEuM?;;QA07+m3 zWPOqZe84`Ceg@n<^0VKdl?FmXYil8BC5H#ZAzcSVaME?WPIDb3T_-#eiSUF+{#(%k zQZ=`!tpUvI&*=(iw@A89xWl2{g0lScYqVb1=-{XoP~E?9#(Y~4lIH=meyBhyI9j;} zz1RIz*Qq+qb?i>{NWN1&@>H~kL1BFKXHeJxT?a()i-93shXmm1r0almo%Bc$;R%oY zx1t543OEoZV0?d`Zh>?MkggN%aA>zkSsvQ03id7#YwC`3R_S`}poftVlm^TRgK zbp%dz9nw=>2MoX`NLV@5BTq+r7!>^e3JPE{Ln8Raz(8NzJ~f$vbe;4_5aEer_HRXd zn9Q6&<2yX98JWyLx=v)0KkfGK$&5h1KkUqL&VHZFE}ZH*=T37S@fW9&K=tJ`k31di zVNf{xS5N@64ido$*TFtDnSpej^hgll36K1@qCHGzSB@n!kgk)N1ZlTOSso=b4ItKl ziTD@JexJ;c>FR{*ASY@kk{Mw9CrJS3N+*-q>1Ypw0x-Mydon{JIN>_rMCGLGAn7{c zkw}Ecli9x&tv526A?HeeOJ+#Aev`~VS^i9B{=rdi|9LVKcRkg0Do=AA!Bahw>{O3D z742bAz&@7DKm@-S7&4h*o$5LuT_-*A)MWN=MT<;kVV42x{aZ3aGJ3)t4(%2x%cEpg z3&fh*&Z)`l?WxJ^RJ4aPTybx}O8yKAU@}7@IN>_grzNv6kgk&+ z2_ig^%>J!t50jZDXncPqGbE$GNoLr8OJ?Hwes$C9-usy9)%3;|ZW5VU{kR+zm3Rt@ z7P=w%rIju`pC1{iYWUqD|6%WTCo^juwMoCHAUPd|LuH(i)qu-UR;jDdw~wm)Ors&p zpTq5K1S`1-sto6ycoWnBP6b5=HyyTlSXa9VDl3;l-vnxes>Ww}V;8qO8Ces}q7jwi zt>CDl$l!JkxBf_ahO)}L;TtA%a~y88Q6~ucD4}6E4UU?SY|@XYTyMnZvpW|p_EbHr}3ght0S zYQ!^*PI_Y-x0cMT8r8wN6=`^ZrTop%Qkn9o|deNs>q{#-6`ekg$%&B{$8BWo6y zqoi_5p>GWJQLA?@Z8J&~I11D7hKWolR&iwqJwyD{k%U-NnNYmqN-BlEb<_wIjWv2> zb2myo;Q^ckcW{*WwLI^9T5&8Djal5__B69j(E{3LY!!_FdSeH-mW-?&-2B4I_n;ux zguqd{-b%tSoGI^&KgDm528iGHH1S{gh!nplQv9NSiod_BXH9f7i0``gu?NH(qxMVb z3HRgV)CB`tFt$J9cZ2V}Go{~!{uBCAZ6NPgSQUN8pYNSN3t~KEK!)E>Tdjfo-bn=j zz{n^20Tej^D4!l0glyX(o)Z!UkiOUaD3Lkg|AXG1q8^UuSTt=gCFkv2POrb|t~I4C zs7>{*&mxuFc%R@hitc%v>c~z!N|x~Sxa9XG3#qpL9l}$UX-f-N_Oxp|WbkU9S#geJ z){hYzU*dHt8O|N{C+ze8h^|iFcY)*e9d#p?t%NLc_AK&;Fv&GDRNnWw#6Ol796B9D z4An*6bG-0T$L_nD|02C+Frw18>x(ai32#dU?GMooo2;sWd5L-A2=4{fJ^iVQ{|hGRMmnb+kUE<}v^WI)Em>b00uV zVe)?=j{hg{qB?KiC~PBP`0ZWy0c_A26ZBc9b*l+Zv@ZF32HDkCTQhA+;q zOq525Im$GbBm>lKC3O6S?id)zE7+AEH8p|*(0%mOe;sU{85HwHK=MOhk0eJ6O7mA9 zkX^?F{GS4LC|^`SrzNi!)ZNW`BYJqByf~r!j;bT+9jU z*TD|eK>4d0zMfPA*mYbD{~=(9Y7qNX4X=Kq22fH*YA^vprrR%YYo>Gy5-dvzKr9@L z5c`{Rp#fp^tnr12FS=P5jqgki&jmPGFWVH70`%lKTx zSG=seP)C_Qe7|+2hd9NML6q7cl;BA|d%HKie!Y z#aVP_4Eyu^N*$nsVH`jmfYFsD=koR)iO%|@=;lswh^~{infw~ifK50Q(8;Ko<2q#m_R^6j*AYYy27zM{jY-^MkXCVTYq^3ZPm%h1a=*dO#dNZ zhw^O%Eah*ZF*L8~aPa*El$OHiY zEi#=VlEcUZQhgMel*`D6e)a0#IfNA$Uw-xK4)jwr!FiHd@CnBq=QMQ4`5f}bU!lqL zq{fO*i8-?nl6KK?S5?B?w-SOj|4nGp#NA{~eMiEu7rj`-o<(V3;# zegty=98kl+kvNdm5L*vtH}CuWzs~?`yW^0^lAvEKN#wL1KT&DFA6e#pD3Y7@#s`y%z*N^xprd(wY5~fObk?e-913crPo##%AOefbS z{#=InRS(CA10&P_Na_6KAJ+AUkqHF;D>7~TE;9YKn$RR+w&8oM*8QDBoK_`*)%5X2 zjAI2m7)y{(IOaH~p*vP|BHz9t%jsje1gxfyy98KHAB%Kgm3w>@YHAp$nK9RpI1XPCnmB{i@h_|FfT4vu0=@jr6<~3DxCm_X4=d;J z`G2-lkem4r8BzX61cpR#oOs1*&l$9t5Nay}ryt`3qfoz4y|o( z?kp@pw>Cqj6L${Wr)^`(ch?v9LdK`eeD~)e)3b?7!;lK-?(Bm5&TJ>?hybJlG3%b` z0`Fxa<=7Yz_ans~L5wqz4m)q`FOiNo@6D+VJ8x&f_vcdmVum5k4v76FrV)6PGM}^4 z*6hMsXH!LQ3G`rc!CgVkd24#9cd6WYgWInHx}%3!9bH&bYpHPBh99_NE|oiOlw^`Z z*KE}gyHW_R5izIqilBVBJiM)QO#!jF*txefg21ncokAc=)<$;V7YqMSorh^qa_1h%Avf~(yjt+cG_A!zp^yql7iUim`0of+22_6lY;J6 zm_hbeS7X)Sj+1*($K3_!n%@$1@3z`OdI1!^AhP717(&_s*Q(Q zKntDwAFE1oxH#-`2^`EOwju7T!E1Lr>(rtPLZBN3kWya6)cR~^XX36|`N8t&tP~V6 zx*!GJ-oJCO=?q_nPfxFw8M+`ALP#+oh;B8+fttISDm-R!-;})~s&K#Q00JGK9ziVD zg+S*LF_)mb4-O!RUD6lxO;81=-Km2nUKgbbqw@XGBA4p)U61cB)zb(8eh9@bX@@N7 z`+dwS-R`+?_v*O^JctKRHg5ML-sSJU8%Dg#*nJm)xLxE@)C;c*?cIneNFFIzA?51A z9NcEQIfrk$PmQsG%?T%R-}NCv_&+$P_dztqx=hwWryfHr$15z8M!2_^ZqC_az(2DnnRuyM2;93vf34=~& zxWoY03KdeTBSoxB0GSGiP$@XC?S|h@4|sR_So^HPa=yYcW29(fggXKe4v^HlG`PDI zId5xvVA~3uaRKL@-i_i#L|GoZi9)m%xm2}6r^`>Y!~4&we(fJFjYYINA84`fEe-ZA zMIP8L&fB)ac}M1c(>6=Z?c0`jgOESl!M!D?)R8QFNT#C-L^IQ6>RE**lgr|Mu}iJ$ z{*N8&1K+akowfPh+m0)&Grd#Obz{@tGUpS2)U?H^MHJvb{9IHJAIjdwh*o5%?Ng}^ z3f4-L7B+ZCqy+7tEiAyOSrrG(4Ji8rr87aQ9x9^xB>O+2a%`%JIT}9&? z+dqnu4`j2jba*%zi~F+0krH83_|VkXQamIl%wdu4@bEMi4`z!akI;VroEe*&d}nyL z`XRYt4vT$52Hl2WGm{*GNdwa+BAc?zXOpQ4Yrxt{iIjFJ-r9*rk zrU|d>bPmKmD0MahfOWNArDFy4hiV%M>TysF5K4!u!M*q9;;Uf=z#tP2s47S=(3D2=h;OAabD zqV^9ySE__%^|d;(u!sjjxr_zha!_FswZ}>1lgHRO26*_)wATu1l6&T|g!Oq)nTXSH z#EDfnl}&?>kN99L7{)wtl#)9b_RIEhpsXkX)gmH|to_xk?83^q&7R=+I;v{NMZ)w38 z99xjE;D}Qp!jAGu>aEq*Bj4RxM4jYGdZ80grHWDp?}`&tIKt)3Er7#M?N?^j}{Y z5XLcK7J_+vM5i(!YR~=3W(UdE=tbGskp`aP{HDvw{B! zUy4gz>g>Qrmo}gU80jDJqyt-TWa|sGDlQLF>>T%$p9u9*?L{D47_udj0eh6ewlnXc zmC0R|2*Lk#m-z`s0W$+VRwma~V1P{GjFgeQ7!`B8%`lPZrE1Sh2j!B_4l;KVc(2Cs zwC>;GfO&#Q^N~+UM?RJwME$?HdjTJgr2^|$z*T{%sLDBgy1nO&1N^@fKQqwkLMqg2 zlQ5*b5fmj}QZQ%48)jqHtzdh1VK^moNqeA7PHnUy*DGZJ7IuW zTi0y>v9gv8d1fq#n-%*khe170BLARC{S+C>kqU70&_+F5@q>7q`?Gu(`OL8 z=?~syvjA>J2%8G^>h7_FZD&2eh%sRiu1bUiIl#i_qakm>A-u>T)ZmasK@d0!35*Q_ z+aiG_k@)|Ifs>0sGT3`hCBqM-c{dxR8Day_JX;3>AM}C1q#%RqS|EciKR^bL1Mdu) zfj1k$n=)Y_Cc4icCLIt{ax;i2s6RPV6X=#vtLu~1O)P((4Gc;w56(7dmvm;=>Wqup zb*SC+!cEQ8H&)7(QS0n;k=ELf^H~UC$5V+|z`p~wAz;g-R;UO}3UjIf+y|9FYiTy} zsMHy3%Kl4K9|t}hZ3YSfhGcYeYAp|7W>{92x;URRCUZfscQZi<5Jnk5w3UgOQZ5LI zcWO5bVj*-Ih>0{X9N8GOGXPlcgbRU4KLd}+)yD(TwZs`YcE&vg2eWx)EJ%3iA|Lqw zfd82^*6fjTtqJdr>DBUNPlaUH;TXw7b^Ufq_2r?4ezOB<@IjK!yr%~Z{F{D*(oh?} zg9o-glwP!INQZeorA(G&)85wS9X?wq%)2CiQL*Jg-oB!E(8 z2SBB$M1UGJ`n=2PEZz&~iW9(Xwa{W^f~VrhsuDp8)t=wcfFR(uq$BWUQ^&no_bmvp zNaSui0)g($Z6M(L%uCSil@$mC;=I2KDJwmIK=>h$gOwEpNV((QP>ECwVs0{G2R=Ky zv+tD&J-CGEESXjlaM@U&Jt&EZuGp839Vy@4UZ36Rgl)BD0+*YUBV#ech`JIpwX)J- zKPJ)*QYj|VO^y9+_!?=2!=nO5NI6YsFVtao-JJ>AxVnVEe*EbC1)MWy&RjloiFHdc z^$sEXdA>7e{F=_4AqRTxjG1iBEQ~Dmb#$yOnba(Fj4hdv|FAIHnHV#I|1UTj1;Dt1 zC)H+YgjzU5B`2GPZ}?S7tCS64$-&B0`1dr*t^S~(h<#6?|0<9Hv0H|JM$KWu?QUmJ z%dk(91zobp+?iX?7v~2N+a--U@e&5T#W~RJClj9zmaB>lQV{+W94e{z2RIX+Q1X3d zv%XEVou^6}Bu+XZM!8mCw)Ea%{|01#8tM&M!$kDS(M@5uSR~7Ahy>)j(M6DxMy8Dh z%smUigzS%!=BOsuLet#ZT7uG=INc9E zb@x>-8poqb(-@s?Vvu>HLU;SK_&8}$QI|^RHYfgdkQ$9PWnyY!e{pC*S(74ziS4>x`b=KGXD!9~nJ_sYefry$a-3av z%j|=$U3m=r*x-jnyW!xRlr-i~6}M~1I8(LT=lEXx$b2D{v6eGR6-?L8#}3%*4lk`S z`@ZxT5tx=+aW8YEqO77U0$ax;P0J1ON%JX5fm293{)X6vtAYNvr+&hxiNb5C&G9T!erxU|J03Wz?=u+Z{5CYTNpeiBHuliUyLNvCR+UrdoG%;B@s0dhjF_ zzfg9HucZ%uwG%EXeaZ4R(O^Ffp1C!xX)aV-vS{xda~j%H2u0VHp4e;Or_>3CRNMt-TY z9fFBWZn>cljTqU(0UdiN6y3LaL< z(NTQy>$X}8WPsfb*lxdD@K)LL55;+v$yT#mdcjFw?iY_@Cq$I*=E>@yT*6;`V_-V) zqn?r_fdNN2!JM&;-9*c<2o=M6+FFS9F6T1lcbf0*sJ_pw6hNz?D#y6bjRK(k|~{f3?FOYWDk59gXH5(;|)I298x zqOZjehIzqBV}c)M!>7V; z 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

      E)`k7Y^UeZ@o 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

      OJWkuwl2aq>XHJ^<_7kO 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 delta 96628 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 diff --git a/workbooks/alz_checklist.en_network_counters.json b/workbooks/alz_checklist.en_network_counters.json index d10d32c10..7980e11b3 100644 --- a/workbooks/alz_checklist.en_network_counters.json +++ b/workbooks/alz_checklist.en_network_counters.json @@ -834,7 +834,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query4Stats:$.Success}+{Query5Stats:$.Success}" + "resultVal": "{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}" } } ] @@ -853,7 +853,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query4Stats:$.Total}+{Query5Stats:$.Total}" + "resultVal": "{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}" } } ] @@ -891,7 +891,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}" + "resultVal": "{Query6Stats:$.Success}" } } ] @@ -910,7 +910,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}" + "resultVal": "{Query6Stats:$.Total}" } } ] @@ -948,7 +948,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}" + "resultVal": "{Query24Stats:$.Success}" } } ] @@ -967,7 +967,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}" + "resultVal": "{Query24Stats:$.Total}" } } ] @@ -1005,7 +1005,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}" + "resultVal": "{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}" } } ] @@ -1024,7 +1024,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}" + "resultVal": "{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}" } } ] @@ -1062,7 +1062,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query20Stats:$.Success}" + "resultVal": "{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}" } } ] @@ -1081,7 +1081,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query20Stats:$.Total}" + "resultVal": "{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}" } } ] @@ -1119,7 +1119,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query24Stats:$.Success}" + "resultVal": "{Query20Stats:$.Success}" } } ] @@ -1138,7 +1138,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query24Stats:$.Total}" + "resultVal": "{Query20Stats:$.Total}" } } ] @@ -1176,7 +1176,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query6Stats:$.Success}" + "resultVal": "{Query4Stats:$.Success}+{Query5Stats:$.Success}" } } ] @@ -1195,7 +1195,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query6Stats:$.Total}" + "resultVal": "{Query4Stats:$.Total}+{Query5Stats:$.Total}" } } ] @@ -1233,7 +1233,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}+{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}+{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}+{Query20Stats:$.Total}+{Query24Stats:$.Total}+{Query6Stats:$.Total}" + "resultVal": "{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}+{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query6Stats:$.Total}+{Query24Stats:$.Total}+{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}+{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}+{Query20Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}" } } ] @@ -1252,7 +1252,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}+{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}+{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}+{Query20Stats:$.Success}+{Query24Stats:$.Success}+{Query6Stats:$.Success}" + "resultVal": "{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}+{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query6Stats:$.Success}+{Query24Stats:$.Success}+{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}+{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}+{Query20Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}" } } ] @@ -1326,7 +1326,7 @@ "style": "tabs", "links": [ { - "id": "987a70ea-a922-4df1-9bd9-d7ca2c8cf826", + "id": "82abb386-cc34-4a70-a3a4-8af2e6d5a365", "cellValue": "VisibleTab", "linkTarget": "parameter", "linkLabel": "Hybrid ({Tab0Success:value}/{Tab0Total:value})", @@ -1335,66 +1335,66 @@ "style": "primary" }, { - "id": "0802a5dc-d49f-42da-854b-b12843fc171b", + "id": "b69cc8bc-ea9c-4383-8649-d625886b1846", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "IP plan ({Tab1Success:value}/{Tab1Total:value})", + "linkLabel": "Hub and spoke ({Tab1Success:value}/{Tab1Total:value})", "subTarget": "tab1", - "preText": "IP plan", + "preText": "Hub and spoke", "style": "primary" }, { - "id": "b7f9f236-b1f2-4f7d-ba82-098cd445f385", + "id": "fd818add-44fc-4f5f-97eb-8de0f5ed2b3a", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Hub and spoke ({Tab2Success:value}/{Tab2Total:value})", + "linkLabel": "Internet ({Tab2Success:value}/{Tab2Total:value})", "subTarget": "tab2", - "preText": "Hub and spoke", + "preText": "Internet", "style": "primary" }, { - "id": "0e47aaab-523b-4632-b2b1-043a83cb3d59", + "id": "c535ea54-1453-4d8e-aced-b9ae60232c65", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Segmentation ({Tab3Success:value}/{Tab3Total:value})", + "linkLabel": "Virtual WAN ({Tab3Success:value}/{Tab3Total:value})", "subTarget": "tab3", - "preText": "Segmentation", + "preText": "Virtual WAN", "style": "primary" }, { - "id": "cbacb8f0-2307-4889-8e88-f860dee5c752", + "id": "141abc68-1398-4eb4-8d68-fa7ae7c66cd0", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Firewall ({Tab4Success:value}/{Tab4Total:value})", + "linkLabel": "Segmentation ({Tab4Success:value}/{Tab4Total:value})", "subTarget": "tab4", - "preText": "Firewall", + "preText": "Segmentation", "style": "primary" }, { - "id": "17595719-c7e9-4149-8697-393d3e7c6a67", + "id": "a43053c5-e24c-4c22-ae80-322f4c81ca8b", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "PaaS ({Tab5Success:value}/{Tab5Total:value})", + "linkLabel": "Firewall ({Tab5Success:value}/{Tab5Total:value})", "subTarget": "tab5", - "preText": "PaaS", + "preText": "Firewall", "style": "primary" }, { - "id": "90cab07e-8f99-4273-8071-ea3051a6f6fb", + "id": "fbca1185-732d-42eb-b050-69a20d3d682b", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Virtual WAN ({Tab6Success:value}/{Tab6Total:value})", + "linkLabel": "PaaS ({Tab6Success:value}/{Tab6Total:value})", "subTarget": "tab6", - "preText": "Virtual WAN", + "preText": "PaaS", "style": "primary" }, { - "id": "c7b29605-1052-459a-bb57-bac4532714ef", + "id": "32dcf369-be2d-4956-a71a-815800fccac4", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Internet ({Tab7Success:value}/{Tab7Total:value})", + "linkLabel": "IP plan ({Tab7Success:value}/{Tab7Total:value})", "subTarget": "tab7", - "preText": "Internet", + "preText": "IP plan", "style": "primary" } ] @@ -1866,22 +1866,22 @@ { "type": 1, "content": { - "json": "## IP plan" + "json": "## Hub and spoke" }, "name": "tab1title" }, { "type": 1, "content": { - "json": "Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." + "json": "If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information." }, - "name": "querytext4" + "name": "querytext0" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|192\\.168\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1930,20 +1930,20 @@ ] } }, - "name": "query4" + "name": "query0" }, { "type": 1, "content": { - "json": "Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." + "json": "If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." }, - "name": "querytext5" + "name": "querytext1" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1992,42 +1992,20 @@ ] } }, - "name": "query5" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab1" - }, - "name": "tab1" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Hub and spoke" - }, - "name": "tab2title" + "name": "query1" }, { "type": 1, "content": { - "json": "If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information." + "json": "Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." }, - "name": "querytext0" + "name": "querytext2" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2076,20 +2054,20 @@ ] } }, - "name": "query0" + "name": "query2" }, { "type": 1, "content": { - "json": "If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." + "json": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information." }, - "name": "querytext1" + "name": "querytext3" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2138,20 +2116,42 @@ ] } }, - "name": "query1" + "name": "query3" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab1" + }, + "name": "tab1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Internet" + }, + "name": "tab2title" }, { "type": 1, "content": { - "json": "Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." + "json": "Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information." }, - "name": "querytext2" + "name": "querytext6" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2200,20 +2200,42 @@ ] } }, - "name": "query2" + "name": "query6" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab2" + }, + "name": "tab2" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Virtual WAN" + }, + "name": "tab3title" }, { "type": 1, "content": { - "json": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information." + "json": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this." }, - "name": "querytext3" + "name": "querytext24" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2262,16 +2284,16 @@ ] } }, - "name": "query3" + "name": "query24" } ] }, "conditionalVisibility": { "parameterName": "VisibleTab", "comparison": "isEqualTo", - "value": "tab2" + "value": "tab3" }, - "name": "tab2" + "name": "tab3" }, { "type": 12, @@ -2284,7 +2306,7 @@ "content": { "json": "## Segmentation" }, - "name": "tab3title" + "name": "tab4title" }, { "type": 1, @@ -2539,9 +2561,9 @@ "conditionalVisibility": { "parameterName": "VisibleTab", "comparison": "isEqualTo", - "value": "tab3" + "value": "tab4" }, - "name": "tab3" + "name": "tab4" }, { "type": 12, @@ -2554,7 +2576,7 @@ "content": { "json": "## Firewall" }, - "name": "tab4title" + "name": "tab5title" }, { "type": 1, @@ -2871,9 +2893,9 @@ "conditionalVisibility": { "parameterName": "VisibleTab", "comparison": "isEqualTo", - "value": "tab4" + "value": "tab5" }, - "name": "tab4" + "name": "tab5" }, { "type": 12, @@ -2886,7 +2908,7 @@ "content": { "json": "## PaaS" }, - "name": "tab5title" + "name": "tab6title" }, { "type": 1, @@ -2955,9 +2977,9 @@ "conditionalVisibility": { "parameterName": "VisibleTab", "comparison": "isEqualTo", - "value": "tab5" + "value": "tab6" }, - "name": "tab5" + "name": "tab6" }, { "type": 12, @@ -2968,22 +2990,22 @@ { "type": 1, "content": { - "json": "## Virtual WAN" + "json": "## IP plan" }, - "name": "tab6title" + "name": "tab7title" }, { "type": 1, "content": { - "json": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this." + "json": "Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." }, - "name": "querytext24" + "name": "querytext4" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|192\\.168\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -3032,42 +3054,20 @@ ] } }, - "name": "query24" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab6" - }, - "name": "tab6" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Internet" - }, - "name": "tab7title" + "name": "query4" }, { "type": 1, "content": { - "json": "Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information." + "json": "Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." }, - "name": "querytext6" + "name": "querytext5" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -3116,7 +3116,7 @@ ] } }, - "name": "query6" + "name": "query5" } ] }, diff --git a/workbooks/alz_checklist.en_network_counters_template.json b/workbooks/alz_checklist.en_network_counters_template.json index e9dca6b13..aadfbab78 100644 --- a/workbooks/alz_checklist.en_network_counters_template.json +++ b/workbooks/alz_checklist.en_network_counters_template.json @@ -41,7 +41,7 @@ "dependsOn": [], "properties": { "displayName": "[parameters('workbookDisplayName')]", - "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"value::all\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query0Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query1Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query2Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query3Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query4Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query5Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query6Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query7Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query8Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query9Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query10Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query11Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query12Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation))| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query13Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query14Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query15Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query16Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query17Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query18Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query19Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query20Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query21Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query22Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query23Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query24Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab0Success}/{Tab0Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Success}+{Query5Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Total}+{Query5Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab1Success}/{Tab1Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab2Success}/{Tab2Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab3Success}/{Tab3Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab4Success}/{Tab4Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab5Success}/{Tab5Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab6Success}/{Tab6Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab7Success}/{Tab7Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookTotal\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}+{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}+{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}+{Query20Stats:$.Total}+{Query24Stats:$.Total}+{Query6Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookSuccess\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}+{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}+{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}+{Query20Stats:$.Success}+{Query24Stats:$.Success}+{Query6Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookPercent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{WorkbookSuccess}/{WorkbookTotal})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"InvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Landing Zone Review - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"50\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"WorkbookPercent\\\\\\\": \\\\\\\"{WorkbookPercent}\\\\\\\", \\\\\\\"SubTitle\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 4,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"WorkbookPercent\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"SubTitle\",\n \"formatter\": 1\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"ProgressTile\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"987a70ea-a922-4df1-9bd9-d7ca2c8cf826\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hybrid ({Tab0Success:value}/{Tab0Total:value})\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Hybrid\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"0802a5dc-d49f-42da-854b-b12843fc171b\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"IP plan ({Tab1Success:value}/{Tab1Total:value})\",\n \"subTarget\": \"tab1\",\n \"preText\": \"IP plan\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"b7f9f236-b1f2-4f7d-ba82-098cd445f385\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hub and spoke ({Tab2Success:value}/{Tab2Total:value})\",\n \"subTarget\": \"tab2\",\n \"preText\": \"Hub and spoke\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"0e47aaab-523b-4632-b2b1-043a83cb3d59\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Segmentation ({Tab3Success:value}/{Tab3Total:value})\",\n \"subTarget\": \"tab3\",\n \"preText\": \"Segmentation\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"cbacb8f0-2307-4889-8e88-f860dee5c752\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Firewall ({Tab4Success:value}/{Tab4Total:value})\",\n \"subTarget\": \"tab4\",\n \"preText\": \"Firewall\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"17595719-c7e9-4149-8697-393d3e7c6a67\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"PaaS ({Tab5Success:value}/{Tab5Total:value})\",\n \"subTarget\": \"tab5\",\n \"preText\": \"PaaS\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"90cab07e-8f99-4273-8071-ea3051a6f6fb\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Virtual WAN ({Tab6Success:value}/{Tab6Total:value})\",\n \"subTarget\": \"tab6\",\n \"preText\": \"Virtual WAN\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"c7b29605-1052-459a-bb57-bac4532714ef\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Internet ({Tab7Success:value}/{Tab7Total:value})\",\n \"subTarget\": \"tab7\",\n \"preText\": \"Internet\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hybrid\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext12\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query12\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information.\"\n },\n \"name\": \"querytext13\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query13\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## IP plan\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hub and spoke\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Segmentation\"\n },\n \"name\": \"tab3title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information.\"\n },\n \"name\": \"querytext19\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query19\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information.\"\n },\n \"name\": \"querytext21\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query21\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information.\"\n },\n \"name\": \"querytext22\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query22\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this.\"\n },\n \"name\": \"querytext23\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query23\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab3\"\n },\n \"name\": \"tab3\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Firewall\"\n },\n \"name\": \"tab4title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information.\"\n },\n \"name\": \"querytext14\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query14\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information.\"\n },\n \"name\": \"querytext15\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query15\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information.\"\n },\n \"name\": \"querytext16\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query16\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information.\"\n },\n \"name\": \"querytext17\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query17\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information.\"\n },\n \"name\": \"querytext18\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query18\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab4\"\n },\n \"name\": \"tab4\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## PaaS\"\n },\n \"name\": \"tab5title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this.\"\n },\n \"name\": \"querytext20\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query20\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab5\"\n },\n \"name\": \"tab5\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Virtual WAN\"\n },\n \"name\": \"tab6title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext24\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query24\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab6\"\n },\n \"name\": \"tab6\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Internet\"\n },\n \"name\": \"tab7title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab7\"\n },\n \"name\": \"tab7\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", + "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"value::all\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query0Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query1Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query2Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query3Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query4Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query5Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query6Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query7Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query8Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query9Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query10Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query11Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query12Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation))| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query13Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query14Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query15Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query16Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query17Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query18Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query19Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query20Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query21Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query22Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query23Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query24Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab0Success}/{Tab0Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab1Success}/{Tab1Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab2Success}/{Tab2Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab3Success}/{Tab3Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab4Success}/{Tab4Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab5Success}/{Tab5Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab6Success}/{Tab6Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Success}+{Query5Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Total}+{Query5Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab7Success}/{Tab7Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookTotal\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}+{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query6Stats:$.Total}+{Query24Stats:$.Total}+{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}+{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}+{Query20Stats:$.Total}+{Query4Stats:$.Total}+{Query5Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookSuccess\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}+{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query6Stats:$.Success}+{Query24Stats:$.Success}+{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}+{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}+{Query20Stats:$.Success}+{Query4Stats:$.Success}+{Query5Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookPercent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{WorkbookSuccess}/{WorkbookTotal})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"InvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Landing Zone Review - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"50\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"WorkbookPercent\\\\\\\": \\\\\\\"{WorkbookPercent}\\\\\\\", \\\\\\\"SubTitle\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 4,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"WorkbookPercent\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"SubTitle\",\n \"formatter\": 1\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"ProgressTile\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"82abb386-cc34-4a70-a3a4-8af2e6d5a365\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hybrid ({Tab0Success:value}/{Tab0Total:value})\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Hybrid\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"b69cc8bc-ea9c-4383-8649-d625886b1846\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hub and spoke ({Tab1Success:value}/{Tab1Total:value})\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Hub and spoke\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"fd818add-44fc-4f5f-97eb-8de0f5ed2b3a\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Internet ({Tab2Success:value}/{Tab2Total:value})\",\n \"subTarget\": \"tab2\",\n \"preText\": \"Internet\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"c535ea54-1453-4d8e-aced-b9ae60232c65\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Virtual WAN ({Tab3Success:value}/{Tab3Total:value})\",\n \"subTarget\": \"tab3\",\n \"preText\": \"Virtual WAN\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"141abc68-1398-4eb4-8d68-fa7ae7c66cd0\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Segmentation ({Tab4Success:value}/{Tab4Total:value})\",\n \"subTarget\": \"tab4\",\n \"preText\": \"Segmentation\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"a43053c5-e24c-4c22-ae80-322f4c81ca8b\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Firewall ({Tab5Success:value}/{Tab5Total:value})\",\n \"subTarget\": \"tab5\",\n \"preText\": \"Firewall\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"fbca1185-732d-42eb-b050-69a20d3d682b\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"PaaS ({Tab6Success:value}/{Tab6Total:value})\",\n \"subTarget\": \"tab6\",\n \"preText\": \"PaaS\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"32dcf369-be2d-4956-a71a-815800fccac4\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"IP plan ({Tab7Success:value}/{Tab7Total:value})\",\n \"subTarget\": \"tab7\",\n \"preText\": \"IP plan\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hybrid\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext12\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query12\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information.\"\n },\n \"name\": \"querytext13\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query13\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hub and spoke\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Internet\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Virtual WAN\"\n },\n \"name\": \"tab3title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext24\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query24\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab3\"\n },\n \"name\": \"tab3\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Segmentation\"\n },\n \"name\": \"tab4title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information.\"\n },\n \"name\": \"querytext19\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query19\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information.\"\n },\n \"name\": \"querytext21\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query21\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information.\"\n },\n \"name\": \"querytext22\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query22\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this.\"\n },\n \"name\": \"querytext23\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query23\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab4\"\n },\n \"name\": \"tab4\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Firewall\"\n },\n \"name\": \"tab5title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information.\"\n },\n \"name\": \"querytext14\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query14\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information.\"\n },\n \"name\": \"querytext15\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query15\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information.\"\n },\n \"name\": \"querytext16\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query16\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information.\"\n },\n \"name\": \"querytext17\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query17\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information.\"\n },\n \"name\": \"querytext18\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query18\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab5\"\n },\n \"name\": \"tab5\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## PaaS\"\n },\n \"name\": \"tab6title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this.\"\n },\n \"name\": \"querytext20\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query20\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab6\"\n },\n \"name\": \"tab6\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## IP plan\"\n },\n \"name\": \"tab7title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab7\"\n },\n \"name\": \"tab7\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", "version": "1.0", "sourceId": "[parameters('workbookSourceId')]", "category": "[parameters('workbookType')]" diff --git a/workbooks/alz_checklist.en_network_tabcounters.json b/workbooks/alz_checklist.en_network_tabcounters.json index 332d6eb99..989c155d1 100644 --- a/workbooks/alz_checklist.en_network_tabcounters.json +++ b/workbooks/alz_checklist.en_network_tabcounters.json @@ -70,25 +70,25 @@ "style": "tabs", "links": [ { - "id": "023cfad0-ff26-4bbc-814c-de6b3342b29b", + "id": "3600b117-8e49-4cd2-87fc-329949a352e0", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "PaaS", + "linkLabel": "Internet", "subTarget": "tab0", - "preText": "PaaS", + "preText": "Internet", "style": "primary" }, { - "id": "b2bb6db9-65f1-4acf-af8c-c6fd109f9019", + "id": "f95a8ff1-5539-4485-93ea-b8aad2147c08", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Internet", + "linkLabel": "Hub and spoke", "subTarget": "tab1", - "preText": "Internet", + "preText": "Hub and spoke", "style": "primary" }, { - "id": "b483c77a-07bc-43ea-94b9-eca9dcc5d30f", + "id": "c45ef78d-f2df-4d2c-a70a-52c19f69b302", "cellValue": "VisibleTab", "linkTarget": "parameter", "linkLabel": "IP plan", @@ -97,25 +97,25 @@ "style": "primary" }, { - "id": "fc3ed446-f54f-44a1-a259-2b390e94df81", + "id": "375f78b5-0e31-490b-8893-1d46fd2e386c", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Virtual WAN", + "linkLabel": "PaaS", "subTarget": "tab3", - "preText": "Virtual WAN", + "preText": "PaaS", "style": "primary" }, { - "id": "42664010-5d14-44e5-aaf7-b6dfc84b603d", + "id": "89dd4c79-11c6-4023-927f-329603efe764", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Segmentation", + "linkLabel": "Hybrid", "subTarget": "tab4", - "preText": "Segmentation", + "preText": "Hybrid", "style": "primary" }, { - "id": "dc5a4f18-2f6b-46dc-9570-9dc5691c716e", + "id": "891a964b-e44e-4c93-b842-2b8865b9a8f0", "cellValue": "VisibleTab", "linkTarget": "parameter", "linkLabel": "Firewall", @@ -124,21 +124,21 @@ "style": "primary" }, { - "id": "af1a7fcb-8cf8-45f0-a686-20cb625c9e02", + "id": "1566c26f-0fc8-44c1-b9ae-ca590a7f1f5f", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Hybrid", + "linkLabel": "Segmentation", "subTarget": "tab6", - "preText": "Hybrid", + "preText": "Segmentation", "style": "primary" }, { - "id": "f05c5867-9bdf-4c27-aae8-2b1be0e395c4", + "id": "90e80d3f-c9f5-429f-8985-6234e5a7a479", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Hub and spoke", + "linkLabel": "Virtual WAN", "subTarget": "tab7", - "preText": "Hub and spoke", + "preText": "Virtual WAN", "style": "primary" } ] @@ -162,9 +162,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query20Stats", + "name": "Query6Stats", "type": 1, - "query": "resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -178,9 +178,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query20FullyCompliant", + "name": "Query6FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query20Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query6Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -201,7 +201,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query20Stats:$.Success}" + "resultVal": "{Query6Stats:$.Success}" } } ] @@ -220,7 +220,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query20Stats:$.Total}" + "resultVal": "{Query6Stats:$.Total}" } } ] @@ -254,7 +254,7 @@ { "type": 1, "content": { - "json": "## PaaS" + "json": "## Internet" }, "customWidth": "50", "name": "tab0title" @@ -295,15 +295,15 @@ { "type": 1, "content": { - "json": "Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this." + "json": "Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information." }, - "name": "querytext20" + "name": "querytext6" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -352,7 +352,7 @@ ] } }, - "name": "query20" + "name": "query6" } ] }, @@ -380,9 +380,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query6Stats", + "name": "Query0Stats", "type": 1, - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -396,9 +396,93 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query6FullyCompliant", + "name": "Query0FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query6Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query0Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query1Stats", + "type": 1, + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query1FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query1Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query2Stats", + "type": 1, + "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query2FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query2Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query3Stats", + "type": 1, + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query3FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query3Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -419,7 +503,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query6Stats:$.Success}" + "resultVal": "{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}" } } ] @@ -438,7 +522,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query6Stats:$.Total}" + "resultVal": "{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}" } } ] @@ -472,7 +556,7 @@ { "type": 1, "content": { - "json": "## Internet" + "json": "## Hub and spoke" }, "customWidth": "50", "name": "tab1title" @@ -513,15 +597,15 @@ { "type": 1, "content": { - "json": "Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information." + "json": "If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information." }, - "name": "querytext6" + "name": "querytext0" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -570,92 +654,278 @@ ] } }, - "name": "query6" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab1" - }, - "name": "tab1" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ + "name": "query0" + }, { - "type": 9, + "type": 1, "content": { - "version": "KqlParameterItem/1.0", + "json": "If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." + }, + "name": "querytext1" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "size": 4, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources", "crossComponentResources": [ "{Subscription}" ], - "parameters": [ - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query4Stats", - "type": 1, - "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|192\\.168\\.)') | project id, compliant, cidr| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query4FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query4Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query5Stats", - "type": 1, - "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query5FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query5Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 + "gridSettings": { + "formatters": [ + { + "columnMatch": "id", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Tab2Success", - "type": 1, + { + "columnMatch": "compliant", + "formatter": 18, + "formatOptions": { + "thresholdsOptions": "icons", + "thresholdsGrid": [ + { + "operator": "==", + "thresholdValue": "1", + "representation": "success", + "text": "Success" + }, + { + "operator": "==", + "thresholdValue": "0", + "representation": "failed", + "text": "Failed" + }, + { + "operator": "Default", + "thresholdValue": null, + "representation": "unknown", + "text": "Unknown" + } + ] + } + } + ] + } + }, + "name": "query1" + }, + { + "type": 1, + "content": { + "json": "Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." + }, + "name": "querytext2" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "size": 4, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources", + "crossComponentResources": [ + "{Subscription}" + ], + "gridSettings": { + "formatters": [ + { + "columnMatch": "id", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "compliant", + "formatter": 18, + "formatOptions": { + "thresholdsOptions": "icons", + "thresholdsGrid": [ + { + "operator": "==", + "thresholdValue": "1", + "representation": "success", + "text": "Success" + }, + { + "operator": "==", + "thresholdValue": "0", + "representation": "failed", + "text": "Failed" + }, + { + "operator": "Default", + "thresholdValue": null, + "representation": "unknown", + "text": "Unknown" + } + ] + } + } + ] + } + }, + "name": "query2" + }, + { + "type": 1, + "content": { + "json": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information." + }, + "name": "querytext3" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "size": 4, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources", + "crossComponentResources": [ + "{Subscription}" + ], + "gridSettings": { + "formatters": [ + { + "columnMatch": "id", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "compliant", + "formatter": 18, + "formatOptions": { + "thresholdsOptions": "icons", + "thresholdsGrid": [ + { + "operator": "==", + "thresholdValue": "1", + "representation": "success", + "text": "Success" + }, + { + "operator": "==", + "thresholdValue": "0", + "representation": "failed", + "text": "Failed" + }, + { + "operator": "Default", + "thresholdValue": null, + "representation": "unknown", + "text": "Unknown" + } + ] + } + } + ] + } + }, + "name": "query3" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab1" + }, + "name": "tab1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "crossComponentResources": [ + "{Subscription}" + ], + "parameters": [ + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query4Stats", + "type": 1, + "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|192\\.168\\.)') | project id, compliant, cidr| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query4FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query4Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query5Stats", + "type": 1, + "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query5FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query5Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Tab2Success", + "type": 1, "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -906,9 +1176,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query24Stats", + "name": "Query20Stats", "type": 1, - "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -922,9 +1192,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query24FullyCompliant", + "name": "Query20FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query24Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query20Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -945,7 +1215,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query24Stats:$.Success}" + "resultVal": "{Query20Stats:$.Success}" } } ] @@ -964,7 +1234,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query24Stats:$.Total}" + "resultVal": "{Query20Stats:$.Total}" } } ] @@ -998,7 +1268,7 @@ { "type": 1, "content": { - "json": "## Virtual WAN" + "json": "## PaaS" }, "customWidth": "50", "name": "tab3title" @@ -1039,15 +1309,15 @@ { "type": 1, "content": { - "json": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this." + "json": "Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this." }, - "name": "querytext24" + "name": "querytext20" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1096,7 +1366,7 @@ ] } }, - "name": "query24" + "name": "query20" } ] }, @@ -1124,9 +1394,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query19Stats", + "name": "Query7Stats", "type": 1, - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -1140,9 +1410,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query19FullyCompliant", + "name": "Query7FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query19Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query7Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -1152,9 +1422,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query21Stats", + "name": "Query8Stats", "type": 1, - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -1168,9 +1438,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query21FullyCompliant", + "name": "Query8FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query21Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query8Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -1180,9 +1450,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query22Stats", + "name": "Query9Stats", "type": 1, - "query": "resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -1196,9 +1466,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query22FullyCompliant", + "name": "Query9FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query22Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query9Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -1208,9 +1478,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query23Stats", + "name": "Query10Stats", "type": 1, - "query": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -1224,9 +1494,93 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query23FullyCompliant", + "name": "Query10FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query23Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query10Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query11Stats", + "type": 1, + "query": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query11FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query11Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query12Stats", + "type": 1, + "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query12FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query12Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query13Stats", + "type": 1, + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation))| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query13FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query13Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -1247,7 +1601,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}" + "resultVal": "{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}" } } ] @@ -1266,7 +1620,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}" + "resultVal": "{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}" } } ] @@ -1300,7 +1654,7 @@ { "type": 1, "content": { - "json": "## Segmentation" + "json": "## Hybrid" }, "customWidth": "50", "name": "tab4title" @@ -1341,15 +1695,15 @@ { "type": 1, "content": { - "json": "Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information." + "json": "Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." }, - "name": "querytext19" + "name": "querytext7" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1398,20 +1752,20 @@ ] } }, - "name": "query19" + "name": "query7" }, { "type": 1, "content": { - "json": "Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information." + "json": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information." }, - "name": "querytext21" + "name": "querytext8" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1460,20 +1814,20 @@ ] } }, - "name": "query21" + "name": "query8" }, { "type": 1, "content": { - "json": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information." + "json": "Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information." }, - "name": "querytext22" + "name": "querytext9" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1522,20 +1876,20 @@ ] } }, - "name": "query22" + "name": "query9" }, { "type": 1, "content": { - "json": "Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this." + "json": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." }, - "name": "querytext23" + "name": "querytext10" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1584,84 +1938,270 @@ ] } }, - "name": "query23" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab4" - }, - "name": "tab4" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ + "name": "query10" + }, { - "type": 9, + "type": 1, "content": { - "version": "KqlParameterItem/1.0", + "json": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this." + }, + "name": "querytext11" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "size": 4, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources", "crossComponentResources": [ "{Subscription}" ], - "parameters": [ - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query14Stats", - "type": 1, - "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query14FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query14Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query15Stats", - "type": 1, - "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 + "gridSettings": { + "formatters": [ + { + "columnMatch": "id", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query15FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query15Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 + { + "columnMatch": "compliant", + "formatter": 18, + "formatOptions": { + "thresholdsOptions": "icons", + "thresholdsGrid": [ + { + "operator": "==", + "thresholdValue": "1", + "representation": "success", + "text": "Success" + }, + { + "operator": "==", + "thresholdValue": "0", + "representation": "failed", + "text": "Failed" + }, + { + "operator": "Default", + "thresholdValue": null, + "representation": "unknown", + "text": "Unknown" + } + ] + } + } + ] + } + }, + "name": "query11" + }, + { + "type": 1, + "content": { + "json": "Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." + }, + "name": "querytext12" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "size": 4, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources", + "crossComponentResources": [ + "{Subscription}" + ], + "gridSettings": { + "formatters": [ + { + "columnMatch": "id", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "compliant", + "formatter": 18, + "formatOptions": { + "thresholdsOptions": "icons", + "thresholdsGrid": [ + { + "operator": "==", + "thresholdValue": "1", + "representation": "success", + "text": "Success" + }, + { + "operator": "==", + "thresholdValue": "0", + "representation": "failed", + "text": "Failed" + }, + { + "operator": "Default", + "thresholdValue": null, + "representation": "unknown", + "text": "Unknown" + } + ] + } + } + ] + } + }, + "name": "query12" + }, + { + "type": 1, + "content": { + "json": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information." + }, + "name": "querytext13" + }, + { + "type": 3, + "content": { + "version": "KqlItem/1.0", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "size": 4, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources", + "crossComponentResources": [ + "{Subscription}" + ], + "gridSettings": { + "formatters": [ + { + "columnMatch": "id", + "formatter": 0, + "numberFormat": { + "unit": 0, + "options": { + "style": "decimal" + } + } + }, + { + "columnMatch": "compliant", + "formatter": 18, + "formatOptions": { + "thresholdsOptions": "icons", + "thresholdsGrid": [ + { + "operator": "==", + "thresholdValue": "1", + "representation": "success", + "text": "Success" + }, + { + "operator": "==", + "thresholdValue": "0", + "representation": "failed", + "text": "Failed" + }, + { + "operator": "Default", + "thresholdValue": null, + "representation": "unknown", + "text": "Unknown" + } + ] + } + } + ] + } + }, + "name": "query13" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab4" + }, + "name": "tab4" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "crossComponentResources": [ + "{Subscription}" + ], + "parameters": [ + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query14Stats", + "type": 1, + "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query14FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query14Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query15Stats", + "type": 1, + "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query15FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query15Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 }, "queryType": 8 }, @@ -2190,9 +2730,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query7Stats", + "name": "Query19Stats", "type": 1, - "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -2206,9 +2746,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query7FullyCompliant", + "name": "Query19FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query7Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query19Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -2218,9 +2758,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query8Stats", + "name": "Query21Stats", "type": 1, - "query": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -2234,9 +2774,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query8FullyCompliant", + "name": "Query21FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query8Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query21Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -2246,9 +2786,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query9Stats", + "name": "Query22Stats", "type": 1, - "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -2262,9 +2802,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query9FullyCompliant", + "name": "Query22FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query9Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query22Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -2274,93 +2814,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query10Stats", - "type": 1, - "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query10FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query10Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query11Stats", - "type": 1, - "query": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query11FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query11Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query12Stats", - "type": 1, - "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query12FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query12Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query13Stats", + "name": "Query23Stats", "type": 1, - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation))| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "query": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", "crossComponentResources": [ "{Subscription}" ], @@ -2374,9 +2830,9 @@ { "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", "version": "KqlParameterItem/1.0", - "name": "Query13FullyCompliant", + "name": "Query23FullyCompliant", "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query13Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query23Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", "isHiddenWhenLocked": true, "timeContext": { "durationMs": 86400000 @@ -2397,7 +2853,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}" + "resultVal": "{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}" } } ] @@ -2416,7 +2872,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}" + "resultVal": "{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}" } } ] @@ -2450,7 +2906,7 @@ { "type": 1, "content": { - "json": "## Hybrid" + "json": "## Segmentation" }, "customWidth": "50", "name": "tab6title" @@ -2491,15 +2947,15 @@ { "type": 1, "content": { - "json": "Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." + "json": "Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information." }, - "name": "querytext7" + "name": "querytext19" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2548,20 +3004,20 @@ ] } }, - "name": "query7" + "name": "query19" }, { "type": 1, "content": { - "json": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information." + "json": "Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information." }, - "name": "querytext8" + "name": "querytext21" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2610,20 +3066,20 @@ ] } }, - "name": "query8" + "name": "query21" }, { "type": 1, "content": { - "json": "Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information." + "json": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information." }, - "name": "querytext9" + "name": "querytext22" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2672,20 +3128,20 @@ ] } }, - "name": "query9" + "name": "query22" }, { "type": 1, "content": { - "json": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." + "json": "Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this." }, - "name": "querytext10" + "name": "querytext23" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -2734,400 +3190,130 @@ ] } }, - "name": "query10" + "name": "query23" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab6" + }, + "name": "tab6" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 9, + "content": { + "version": "KqlParameterItem/1.0", + "crossComponentResources": [ + "{Subscription}" + ], + "parameters": [ + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query24Stats", + "type": 1, + "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", + "crossComponentResources": [ + "{Subscription}" + ], + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Query24FullyCompliant", + "type": 1, + "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query24Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "queryType": 8 + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Tab7Success", + "type": 1, + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "criteriaData": [ + { + "criteriaContext": { + "operator": "Default", + "resultValType": "expression", + "resultVal": "{Query24Stats:$.Success}" + } + } + ] + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Tab7Total", + "type": 1, + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "criteriaData": [ + { + "criteriaContext": { + "operator": "Default", + "resultValType": "expression", + "resultVal": "{Query24Stats:$.Total}" + } + } + ] + }, + { + "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", + "version": "KqlParameterItem/1.0", + "name": "Tab7Percent", + "type": 1, + "isHiddenWhenLocked": true, + "timeContext": { + "durationMs": 86400000 + }, + "criteriaData": [ + { + "criteriaContext": { + "operator": "Default", + "resultValType": "expression", + "resultVal": "round(100*{Tab7Success}/{Tab7Total})" + } + } + ] + } + ], + "style": "pills", + "queryType": 1, + "resourceType": "microsoft.resourcegraph/resources" + }, + "name": "TabInvisibleParameters" }, { "type": 1, "content": { - "json": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this." + "json": "## Virtual WAN" }, - "name": "querytext11" - }, - { - "type": 3, - "content": { - "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", - "size": 4, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources", - "crossComponentResources": [ - "{Subscription}" - ], - "gridSettings": { - "formatters": [ - { - "columnMatch": "id", - "formatter": 0, - "numberFormat": { - "unit": 0, - "options": { - "style": "decimal" - } - } - }, - { - "columnMatch": "compliant", - "formatter": 18, - "formatOptions": { - "thresholdsOptions": "icons", - "thresholdsGrid": [ - { - "operator": "==", - "thresholdValue": "1", - "representation": "success", - "text": "Success" - }, - { - "operator": "==", - "thresholdValue": "0", - "representation": "failed", - "text": "Failed" - }, - { - "operator": "Default", - "thresholdValue": null, - "representation": "unknown", - "text": "Unknown" - } - ] - } - } - ] - } - }, - "name": "query11" - }, - { - "type": 1, - "content": { - "json": "Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." - }, - "name": "querytext12" - }, - { - "type": 3, - "content": { - "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", - "size": 4, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources", - "crossComponentResources": [ - "{Subscription}" - ], - "gridSettings": { - "formatters": [ - { - "columnMatch": "id", - "formatter": 0, - "numberFormat": { - "unit": 0, - "options": { - "style": "decimal" - } - } - }, - { - "columnMatch": "compliant", - "formatter": 18, - "formatOptions": { - "thresholdsOptions": "icons", - "thresholdsGrid": [ - { - "operator": "==", - "thresholdValue": "1", - "representation": "success", - "text": "Success" - }, - { - "operator": "==", - "thresholdValue": "0", - "representation": "failed", - "text": "Failed" - }, - { - "operator": "Default", - "thresholdValue": null, - "representation": "unknown", - "text": "Unknown" - } - ] - } - } - ] - } - }, - "name": "query12" - }, - { - "type": 1, - "content": { - "json": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information." - }, - "name": "querytext13" - }, - { - "type": 3, - "content": { - "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", - "size": 4, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources", - "crossComponentResources": [ - "{Subscription}" - ], - "gridSettings": { - "formatters": [ - { - "columnMatch": "id", - "formatter": 0, - "numberFormat": { - "unit": 0, - "options": { - "style": "decimal" - } - } - }, - { - "columnMatch": "compliant", - "formatter": 18, - "formatOptions": { - "thresholdsOptions": "icons", - "thresholdsGrid": [ - { - "operator": "==", - "thresholdValue": "1", - "representation": "success", - "text": "Success" - }, - { - "operator": "==", - "thresholdValue": "0", - "representation": "failed", - "text": "Failed" - }, - { - "operator": "Default", - "thresholdValue": null, - "representation": "unknown", - "text": "Unknown" - } - ] - } - } - ] - } - }, - "name": "query13" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab6" - }, - "name": "tab6" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 9, - "content": { - "version": "KqlParameterItem/1.0", - "crossComponentResources": [ - "{Subscription}" - ], - "parameters": [ - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query0Stats", - "type": 1, - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query0FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query0Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query1Stats", - "type": 1, - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query1FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query1Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query2Stats", - "type": 1, - "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query2FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query2Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query3Stats", - "type": 1, - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())", - "crossComponentResources": [ - "{Subscription}" - ], - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Query3FullyCompliant", - "type": 1, - "query": "{\"version\":\"1.0.0\",\"content\":\"{\\\"value\\\": \\\"{Query3Stats:$.FullyCompliant}\\\"}\",\"transformers\":null}", - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "queryType": 8 - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Tab7Success", - "type": 1, - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "criteriaData": [ - { - "criteriaContext": { - "operator": "Default", - "resultValType": "expression", - "resultVal": "{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}" - } - } - ] - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Tab7Total", - "type": 1, - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "criteriaData": [ - { - "criteriaContext": { - "operator": "Default", - "resultValType": "expression", - "resultVal": "{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}" - } - } - ] - }, - { - "id": "daf05c62-1d5b-4325-b241-d7ee468f23eb", - "version": "KqlParameterItem/1.0", - "name": "Tab7Percent", - "type": 1, - "isHiddenWhenLocked": true, - "timeContext": { - "durationMs": 86400000 - }, - "criteriaData": [ - { - "criteriaContext": { - "operator": "Default", - "resultValType": "expression", - "resultVal": "round(100*{Tab7Success}/{Tab7Total})" - } - } - ] - } - ], - "style": "pills", - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources" - }, - "name": "TabInvisibleParameters" - }, - { - "type": 1, - "content": { - "json": "## Hub and spoke" - }, - "customWidth": "50", - "name": "tab7title" + "customWidth": "50", + "name": "tab7title" }, { "type": 3, @@ -3165,201 +3351,15 @@ { "type": 1, "content": { - "json": "If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information." - }, - "name": "querytext0" - }, - { - "type": 3, - "content": { - "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", - "size": 4, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources", - "crossComponentResources": [ - "{Subscription}" - ], - "gridSettings": { - "formatters": [ - { - "columnMatch": "id", - "formatter": 0, - "numberFormat": { - "unit": 0, - "options": { - "style": "decimal" - } - } - }, - { - "columnMatch": "compliant", - "formatter": 18, - "formatOptions": { - "thresholdsOptions": "icons", - "thresholdsGrid": [ - { - "operator": "==", - "thresholdValue": "1", - "representation": "success", - "text": "Success" - }, - { - "operator": "==", - "thresholdValue": "0", - "representation": "failed", - "text": "Failed" - }, - { - "operator": "Default", - "thresholdValue": null, - "representation": "unknown", - "text": "Unknown" - } - ] - } - } - ] - } - }, - "name": "query0" - }, - { - "type": 1, - "content": { - "json": "If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." - }, - "name": "querytext1" - }, - { - "type": 3, - "content": { - "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", - "size": 4, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources", - "crossComponentResources": [ - "{Subscription}" - ], - "gridSettings": { - "formatters": [ - { - "columnMatch": "id", - "formatter": 0, - "numberFormat": { - "unit": 0, - "options": { - "style": "decimal" - } - } - }, - { - "columnMatch": "compliant", - "formatter": 18, - "formatOptions": { - "thresholdsOptions": "icons", - "thresholdsGrid": [ - { - "operator": "==", - "thresholdValue": "1", - "representation": "success", - "text": "Success" - }, - { - "operator": "==", - "thresholdValue": "0", - "representation": "failed", - "text": "Failed" - }, - { - "operator": "Default", - "thresholdValue": null, - "representation": "unknown", - "text": "Unknown" - } - ] - } - } - ] - } - }, - "name": "query1" - }, - { - "type": 1, - "content": { - "json": "Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." - }, - "name": "querytext2" - }, - { - "type": 3, - "content": { - "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", - "size": 4, - "queryType": 1, - "resourceType": "microsoft.resourcegraph/resources", - "crossComponentResources": [ - "{Subscription}" - ], - "gridSettings": { - "formatters": [ - { - "columnMatch": "id", - "formatter": 0, - "numberFormat": { - "unit": 0, - "options": { - "style": "decimal" - } - } - }, - { - "columnMatch": "compliant", - "formatter": 18, - "formatOptions": { - "thresholdsOptions": "icons", - "thresholdsGrid": [ - { - "operator": "==", - "thresholdValue": "1", - "representation": "success", - "text": "Success" - }, - { - "operator": "==", - "thresholdValue": "0", - "representation": "failed", - "text": "Failed" - }, - { - "operator": "Default", - "thresholdValue": null, - "representation": "unknown", - "text": "Unknown" - } - ] - } - } - ] - } - }, - "name": "query2" - }, - { - "type": 1, - "content": { - "json": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information." + "json": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this." }, - "name": "querytext3" + "name": "querytext24" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -3408,7 +3408,7 @@ ] } }, - "name": "query3" + "name": "query24" } ] }, diff --git a/workbooks/alz_checklist.en_network_tabcounters_template.json b/workbooks/alz_checklist.en_network_tabcounters_template.json index 007fbf136..46b02141f 100644 --- a/workbooks/alz_checklist.en_network_tabcounters_template.json +++ b/workbooks/alz_checklist.en_network_tabcounters_template.json @@ -41,7 +41,7 @@ "dependsOn": [], "properties": { "displayName": "[parameters('workbookDisplayName')]", - "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Landing Zone Review - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"100\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"023cfad0-ff26-4bbc-814c-de6b3342b29b\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"PaaS\",\n \"subTarget\": \"tab0\",\n \"preText\": \"PaaS\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"b2bb6db9-65f1-4acf-af8c-c6fd109f9019\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Internet\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Internet\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"b483c77a-07bc-43ea-94b9-eca9dcc5d30f\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"IP plan\",\n \"subTarget\": \"tab2\",\n \"preText\": \"IP plan\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"fc3ed446-f54f-44a1-a259-2b390e94df81\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Virtual WAN\",\n \"subTarget\": \"tab3\",\n \"preText\": \"Virtual WAN\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"42664010-5d14-44e5-aaf7-b6dfc84b603d\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Segmentation\",\n \"subTarget\": \"tab4\",\n \"preText\": \"Segmentation\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"dc5a4f18-2f6b-46dc-9570-9dc5691c716e\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Firewall\",\n \"subTarget\": \"tab5\",\n \"preText\": \"Firewall\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"af1a7fcb-8cf8-45f0-a686-20cb625c9e02\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hybrid\",\n \"subTarget\": \"tab6\",\n \"preText\": \"Hybrid\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"f05c5867-9bdf-4c27-aae8-2b1be0e395c4\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hub and spoke\",\n \"subTarget\": \"tab7\",\n \"preText\": \"Hub and spoke\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query20Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab0Success}/{Tab0Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## PaaS\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab0title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab0Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this.\"\n },\n \"name\": \"querytext20\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query20\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query6Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab1Success}/{Tab1Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Internet\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab1title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab1Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query4Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query5Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Success}+{Query5Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Total}+{Query5Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab2Success}/{Tab2Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## IP plan\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab2title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab2Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query24Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab3Success}/{Tab3Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Virtual WAN\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab3title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab3Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext24\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query24\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab3\"\n },\n \"name\": \"tab3\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query19Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query21Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query22Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query23Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab4Success}/{Tab4Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Segmentation\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab4title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab4Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information.\"\n },\n \"name\": \"querytext19\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query19\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information.\"\n },\n \"name\": \"querytext21\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query21\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information.\"\n },\n \"name\": \"querytext22\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query22\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this.\"\n },\n \"name\": \"querytext23\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query23\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab4\"\n },\n \"name\": \"tab4\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query14Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query15Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query16Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query17Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query18Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab5Success}/{Tab5Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Firewall\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab5title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab5Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information.\"\n },\n \"name\": \"querytext14\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query14\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information.\"\n },\n \"name\": \"querytext15\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query15\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information.\"\n },\n \"name\": \"querytext16\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query16\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information.\"\n },\n \"name\": \"querytext17\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query17\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information.\"\n },\n \"name\": \"querytext18\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query18\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab5\"\n },\n \"name\": \"tab5\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query7Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query8Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query9Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query10Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query11Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query12Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation))| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query13Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab6Success}/{Tab6Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hybrid\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab6title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab6Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext12\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query12\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information.\"\n },\n \"name\": \"querytext13\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query13\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab6\"\n },\n \"name\": \"tab6\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query0Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query1Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query2Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query3Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab7Success}/{Tab7Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hub and spoke\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab7title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab7Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab7\"\n },\n \"name\": \"tab7\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", + "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Landing Zone Review - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"100\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"3600b117-8e49-4cd2-87fc-329949a352e0\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Internet\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Internet\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"f95a8ff1-5539-4485-93ea-b8aad2147c08\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hub and spoke\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Hub and spoke\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"c45ef78d-f2df-4d2c-a70a-52c19f69b302\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"IP plan\",\n \"subTarget\": \"tab2\",\n \"preText\": \"IP plan\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"375f78b5-0e31-490b-8893-1d46fd2e386c\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"PaaS\",\n \"subTarget\": \"tab3\",\n \"preText\": \"PaaS\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"89dd4c79-11c6-4023-927f-329603efe764\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hybrid\",\n \"subTarget\": \"tab4\",\n \"preText\": \"Hybrid\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"891a964b-e44e-4c93-b842-2b8865b9a8f0\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Firewall\",\n \"subTarget\": \"tab5\",\n \"preText\": \"Firewall\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"1566c26f-0fc8-44c1-b9ae-ca590a7f1f5f\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Segmentation\",\n \"subTarget\": \"tab6\",\n \"preText\": \"Segmentation\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"90e80d3f-c9f5-429f-8985-6234e5a7a479\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Virtual WAN\",\n \"subTarget\": \"tab7\",\n \"preText\": \"Virtual WAN\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query6Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query6Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab0Success}/{Tab0Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Internet\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab0title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab0Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query0Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query1Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query2Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query3Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Success}+{Query1Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Total}+{Query1Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab1Success}/{Tab1Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hub and spoke\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab1title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab1Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query4Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query5Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Success}+{Query5Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query4Stats:$.Total}+{Query5Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab2Success}/{Tab2Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## IP plan\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab2title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab2Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query20FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query20Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query20Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab3Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab3Success}/{Tab3Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## PaaS\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab3title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab3Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this.\"\n },\n \"name\": \"querytext20\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query20\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab3\"\n },\n \"name\": \"tab3\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query7Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query8Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query9Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10Stats\",\n \"type\": 1,\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query10Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query11Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query12FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query12Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation))| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query13FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query13Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Success}+{Query8Stats:$.Success}+{Query9Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query12Stats:$.Success}+{Query13Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query7Stats:$.Total}+{Query8Stats:$.Total}+{Query9Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query12Stats:$.Total}+{Query13Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab4Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab4Success}/{Tab4Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hybrid\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab4title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab4Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext12\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query12\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information.\"\n },\n \"name\": \"querytext13\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query13\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab4\"\n },\n \"name\": \"tab4\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query14FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query14Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query15FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query15Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query16FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query16Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query17FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query17Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query18FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query18Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Success}+{Query15Stats:$.Success}+{Query16Stats:$.Success}+{Query17Stats:$.Success}+{Query18Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query14Stats:$.Total}+{Query15Stats:$.Total}+{Query16Stats:$.Total}+{Query17Stats:$.Total}+{Query18Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab5Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab5Success}/{Tab5Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Firewall\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab5title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab5Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information.\"\n },\n \"name\": \"querytext14\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query14\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information.\"\n },\n \"name\": \"querytext15\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query15\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information.\"\n },\n \"name\": \"querytext16\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query16\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information.\"\n },\n \"name\": \"querytext17\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query17\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information.\"\n },\n \"name\": \"querytext18\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query18\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab5\"\n },\n \"name\": \"tab5\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query19FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query19Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query21FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query21Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query22FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query22Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900)| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query23FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query23Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Success}+{Query21Stats:$.Success}+{Query22Stats:$.Success}+{Query23Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query19Stats:$.Total}+{Query21Stats:$.Total}+{Query22Stats:$.Total}+{Query23Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab6Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab6Success}/{Tab6Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Segmentation\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab6title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab6Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information.\"\n },\n \"name\": \"querytext19\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query19\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information.\"\n },\n \"name\": \"querytext21\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query21\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information.\"\n },\n \"name\": \"querytext22\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query22\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this.\"\n },\n \"name\": \"querytext23\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query23\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab6\"\n },\n \"name\": \"tab6\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query24FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query24Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query24Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab7Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab7Success}/{Tab7Total})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"TabInvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Virtual WAN\"\n },\n \"customWidth\": \"50\",\n \"name\": \"tab7title\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"Column1\\\\\\\": \\\\\\\"{Tab7Percent}\\\\\\\", \\\\\\\"Column2\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 3,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"Column1\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n },\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"Column2\"\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"TabPercentTile\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext24\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query24\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab7\"\n },\n \"name\": \"tab7\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", "version": "1.0", "sourceId": "[parameters('workbookSourceId')]", "category": "[parameters('workbookType')]" diff --git a/workbooks/alz_checklist.en_network_workbook.json b/workbooks/alz_checklist.en_network_workbook.json index 36cfa00e5..8c8378135 100644 --- a/workbooks/alz_checklist.en_network_workbook.json +++ b/workbooks/alz_checklist.en_network_workbook.json @@ -70,43 +70,43 @@ "style": "tabs", "links": [ { - "id": "232f353e-4c5b-419e-8880-d5517a8731a4", + "id": "9c01133e-fafd-4c38-99df-8f4f41f7f8b8", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Hybrid", + "linkLabel": "Segmentation", "subTarget": "tab0", - "preText": "Hybrid", + "preText": "Segmentation", "style": "primary" }, { - "id": "2a187620-a516-4737-9743-0d50e25979ea", + "id": "6793ac66-288b-4caf-8154-e1e7fcc4a45f", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Segmentation", + "linkLabel": "PaaS", "subTarget": "tab1", - "preText": "Segmentation", + "preText": "PaaS", "style": "primary" }, { - "id": "d40326a6-0cbf-4fe2-a10b-80e2b49672e0", + "id": "5ae2a108-56bc-4c9f-8ad5-412608c2257a", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Hub and spoke", + "linkLabel": "Internet", "subTarget": "tab2", - "preText": "Hub and spoke", + "preText": "Internet", "style": "primary" }, { - "id": "147e3e74-7ba4-43fd-b20c-6a3017a6c5d4", + "id": "aabc5105-c3ff-45ff-88dd-c7b0b0f03472", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Virtual WAN", + "linkLabel": "Hub and spoke", "subTarget": "tab3", - "preText": "Virtual WAN", + "preText": "Hub and spoke", "style": "primary" }, { - "id": "d169a24f-36e7-4c0d-970b-fcfa1db15dfb", + "id": "1a657065-9be8-4a54-aa5a-a0fae34f641b", "cellValue": "VisibleTab", "linkTarget": "parameter", "linkLabel": "IP plan", @@ -115,30 +115,30 @@ "style": "primary" }, { - "id": "292e545f-5e5c-47da-b1f1-4e3f5941d9cf", + "id": "3af800ff-34ee-44d0-b40e-d182ea5c91e5", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Firewall", + "linkLabel": "Virtual WAN", "subTarget": "tab5", - "preText": "Firewall", + "preText": "Virtual WAN", "style": "primary" }, { - "id": "b2a19984-9afd-4f18-a8bc-2fbace15c2c8", + "id": "60fab3f8-1125-4e89-a901-64d6d3eefb7d", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "PaaS", + "linkLabel": "Firewall", "subTarget": "tab6", - "preText": "PaaS", + "preText": "Firewall", "style": "primary" }, { - "id": "48514461-061f-4eb2-a463-4165897d0113", + "id": "4d2438d4-c86a-430f-be74-4ce24e0fa947", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Internet", + "linkLabel": "Hybrid", "subTarget": "tab7", - "preText": "Internet", + "preText": "Hybrid", "style": "primary" } ] @@ -154,22 +154,22 @@ { "type": 1, "content": { - "json": "## Hybrid" + "json": "## Segmentation" }, "name": "tab0title" }, { "type": 1, "content": { - "json": "Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." + "json": "Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information." }, - "name": "querytext7" + "name": "querytext19" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -218,20 +218,20 @@ ] } }, - "name": "query7" + "name": "query19" }, { "type": 1, "content": { - "json": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information." + "json": "Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information." }, - "name": "querytext8" + "name": "querytext21" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -280,20 +280,20 @@ ] } }, - "name": "query8" + "name": "query21" }, { "type": 1, "content": { - "json": "Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information." + "json": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information." }, - "name": "querytext9" + "name": "querytext22" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -342,20 +342,20 @@ ] } }, - "name": "query9" + "name": "query22" }, { "type": 1, "content": { - "json": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." + "json": "Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this." }, - "name": "querytext10" + "name": "querytext23" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -404,20 +404,42 @@ ] } }, - "name": "query10" + "name": "query23" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab0" + }, + "name": "tab0" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## PaaS" + }, + "name": "tab1title" }, { "type": 1, "content": { - "json": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this." + "json": "Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this." }, - "name": "querytext11" + "name": "querytext20" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -466,20 +488,42 @@ ] } }, - "name": "query11" + "name": "query20" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab1" + }, + "name": "tab1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Internet" + }, + "name": "tab2title" }, { "type": 1, "content": { - "json": "Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." + "json": "Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information." }, - "name": "querytext12" + "name": "querytext6" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -528,20 +572,42 @@ ] } }, - "name": "query12" + "name": "query6" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab2" + }, + "name": "tab2" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Hub and spoke" + }, + "name": "tab3title" }, { "type": 1, "content": { - "json": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information." + "json": "If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information." }, - "name": "querytext13" + "name": "querytext0" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -590,42 +656,20 @@ ] } }, - "name": "query13" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab0" - }, - "name": "tab0" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Segmentation" - }, - "name": "tab1title" + "name": "query0" }, { "type": 1, "content": { - "json": "Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information." + "json": "If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." }, - "name": "querytext19" + "name": "querytext1" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -674,20 +718,20 @@ ] } }, - "name": "query19" + "name": "query1" }, { "type": 1, "content": { - "json": "Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information." + "json": "Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." }, - "name": "querytext21" + "name": "querytext2" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -736,20 +780,20 @@ ] } }, - "name": "query21" + "name": "query2" }, { "type": 1, "content": { - "json": "Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information." + "json": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information." }, - "name": "querytext22" + "name": "querytext3" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -798,20 +842,42 @@ ] } }, - "name": "query22" + "name": "query3" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab3" + }, + "name": "tab3" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## IP plan" + }, + "name": "tab4title" }, { "type": 1, "content": { - "json": "Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this." + "json": "Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." }, - "name": "querytext23" + "name": "querytext4" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|192\\.168\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -860,42 +926,20 @@ ] } }, - "name": "query23" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab1" - }, - "name": "tab1" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Hub and spoke" - }, - "name": "tab2title" + "name": "query4" }, { "type": 1, "content": { - "json": "If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information." + "json": "Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." }, - "name": "querytext0" + "name": "querytext5" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -944,20 +988,42 @@ ] } }, - "name": "query0" + "name": "query5" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab4" + }, + "name": "tab4" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Virtual WAN" + }, + "name": "tab5title" }, { "type": 1, "content": { - "json": "If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." + "json": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this." }, - "name": "querytext1" + "name": "querytext24" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1006,20 +1072,42 @@ ] } }, - "name": "query1" + "name": "query24" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab5" + }, + "name": "tab5" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Firewall" + }, + "name": "tab6title" }, { "type": 1, "content": { - "json": "Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information." + "json": "Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information." }, - "name": "querytext2" + "name": "querytext14" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1068,20 +1156,20 @@ ] } }, - "name": "query2" + "name": "query14" }, { "type": 1, "content": { - "json": "Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information." + "json": "Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information." }, - "name": "querytext3" + "name": "querytext15" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1130,42 +1218,20 @@ ] } }, - "name": "query3" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab2" - }, - "name": "tab2" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Virtual WAN" - }, - "name": "tab3title" + "name": "query15" }, { "type": 1, "content": { - "json": "For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this." + "json": "Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information." }, - "name": "querytext24" + "name": "querytext16" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1214,42 +1280,20 @@ ] } }, - "name": "query24" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab3" - }, - "name": "tab3" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## IP plan" - }, - "name": "tab4title" + "name": "query16" }, { "type": 1, "content": { - "json": "Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." + "json": "Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information." }, - "name": "querytext4" + "name": "querytext17" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\.|172\\.(1[6-9]|2[0-9]|3[01])\\.|192\\.168\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1298,20 +1342,20 @@ ] } }, - "name": "query4" + "name": "query17" }, { "type": 1, "content": { - "json": "Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this." + "json": "For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information." }, - "name": "querytext5" + "name": "querytext18" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1360,16 +1404,16 @@ ] } }, - "name": "query5" + "name": "query18" } ] }, "conditionalVisibility": { "parameterName": "VisibleTab", "comparison": "isEqualTo", - "value": "tab4" + "value": "tab6" }, - "name": "tab4" + "name": "tab6" }, { "type": 12, @@ -1380,22 +1424,22 @@ { "type": 1, "content": { - "json": "## Firewall" + "json": "## Hybrid" }, - "name": "tab5title" + "name": "tab7title" }, { "type": 1, "content": { - "json": "Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information." + "json": "Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." }, - "name": "querytext14" + "name": "querytext7" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1444,20 +1488,20 @@ ] } }, - "name": "query14" + "name": "query7" }, { "type": 1, "content": { - "json": "Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information." + "json": "Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information." }, - "name": "querytext15" + "name": "querytext8" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1506,20 +1550,20 @@ ] } }, - "name": "query15" + "name": "query8" }, { "type": 1, "content": { - "json": "Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information." + "json": "Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information." }, - "name": "querytext16" + "name": "querytext9" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1568,20 +1612,20 @@ ] } }, - "name": "query16" + "name": "query9" }, { "type": 1, "content": { - "json": "Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information." + "json": "Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." }, - "name": "querytext17" + "name": "querytext10" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1630,20 +1674,20 @@ ] } }, - "name": "query17" + "name": "query10" }, { "type": 1, "content": { - "json": "For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information." + "json": "Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this." }, - "name": "querytext18" + "name": "querytext11" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1692,42 +1736,20 @@ ] } }, - "name": "query18" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab5" - }, - "name": "tab5" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## PaaS" - }, - "name": "tab6title" + "name": "query11" }, { "type": 1, "content": { - "json": "Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this." + "json": "Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this." }, - "name": "querytext20" + "name": "querytext12" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1776,42 +1798,20 @@ ] } }, - "name": "query20" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab6" - }, - "name": "tab6" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Internet" - }, - "name": "tab7title" + "name": "query12" }, { "type": 1, "content": { - "json": "Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information." + "json": "If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information." }, - "name": "querytext6" + "name": "querytext13" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 0, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1860,7 +1860,7 @@ ] } }, - "name": "query6" + "name": "query13" } ] }, diff --git a/workbooks/alz_checklist.en_network_workbook_template.json b/workbooks/alz_checklist.en_network_workbook_template.json index a0644d86d..5ea955d18 100644 --- a/workbooks/alz_checklist.en_network_workbook_template.json +++ b/workbooks/alz_checklist.en_network_workbook_template.json @@ -41,7 +41,7 @@ "dependsOn": [], "properties": { "displayName": "[parameters('workbookDisplayName')]", - "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Landing Zone Review - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"100\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"232f353e-4c5b-419e-8880-d5517a8731a4\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hybrid\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Hybrid\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"2a187620-a516-4737-9743-0d50e25979ea\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Segmentation\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Segmentation\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"d40326a6-0cbf-4fe2-a10b-80e2b49672e0\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hub and spoke\",\n \"subTarget\": \"tab2\",\n \"preText\": \"Hub and spoke\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"147e3e74-7ba4-43fd-b20c-6a3017a6c5d4\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Virtual WAN\",\n \"subTarget\": \"tab3\",\n \"preText\": \"Virtual WAN\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"d169a24f-36e7-4c0d-970b-fcfa1db15dfb\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"IP plan\",\n \"subTarget\": \"tab4\",\n \"preText\": \"IP plan\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"292e545f-5e5c-47da-b1f1-4e3f5941d9cf\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Firewall\",\n \"subTarget\": \"tab5\",\n \"preText\": \"Firewall\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"b2a19984-9afd-4f18-a8bc-2fbace15c2c8\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"PaaS\",\n \"subTarget\": \"tab6\",\n \"preText\": \"PaaS\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"48514461-061f-4eb2-a463-4165897d0113\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Internet\",\n \"subTarget\": \"tab7\",\n \"preText\": \"Internet\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hybrid\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext12\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query12\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information.\"\n },\n \"name\": \"querytext13\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query13\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Segmentation\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information.\"\n },\n \"name\": \"querytext19\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query19\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information.\"\n },\n \"name\": \"querytext21\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query21\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information.\"\n },\n \"name\": \"querytext22\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query22\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this.\"\n },\n \"name\": \"querytext23\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query23\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hub and spoke\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Virtual WAN\"\n },\n \"name\": \"tab3title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext24\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query24\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab3\"\n },\n \"name\": \"tab3\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## IP plan\"\n },\n \"name\": \"tab4title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab4\"\n },\n \"name\": \"tab4\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Firewall\"\n },\n \"name\": \"tab5title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information.\"\n },\n \"name\": \"querytext14\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query14\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information.\"\n },\n \"name\": \"querytext15\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query15\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information.\"\n },\n \"name\": \"querytext16\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query16\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information.\"\n },\n \"name\": \"querytext17\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query17\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information.\"\n },\n \"name\": \"querytext18\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query18\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab5\"\n },\n \"name\": \"tab5\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## PaaS\"\n },\n \"name\": \"tab6title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this.\"\n },\n \"name\": \"querytext20\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query20\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab6\"\n },\n \"name\": \"tab6\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Internet\"\n },\n \"name\": \"tab7title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab7\"\n },\n \"name\": \"tab7\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", + "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Landing Zone Review - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"100\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"9c01133e-fafd-4c38-99df-8f4f41f7f8b8\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Segmentation\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Segmentation\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"6793ac66-288b-4caf-8154-e1e7fcc4a45f\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"PaaS\",\n \"subTarget\": \"tab1\",\n \"preText\": \"PaaS\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"5ae2a108-56bc-4c9f-8ad5-412608c2257a\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Internet\",\n \"subTarget\": \"tab2\",\n \"preText\": \"Internet\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"aabc5105-c3ff-45ff-88dd-c7b0b0f03472\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hub and spoke\",\n \"subTarget\": \"tab3\",\n \"preText\": \"Hub and spoke\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"1a657065-9be8-4a54-aa5a-a0fae34f641b\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"IP plan\",\n \"subTarget\": \"tab4\",\n \"preText\": \"IP plan\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"3af800ff-34ee-44d0-b40e-d182ea5c91e5\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Virtual WAN\",\n \"subTarget\": \"tab5\",\n \"preText\": \"Virtual WAN\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"60fab3f8-1125-4e89-a901-64d6d3eefb7d\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Firewall\",\n \"subTarget\": \"tab6\",\n \"preText\": \"Firewall\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"4d2438d4-c86a-430f-be74-4ce24e0fa947\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Hybrid\",\n \"subTarget\": \"tab7\",\n \"preText\": \"Hybrid\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Segmentation\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use a /26 prefix for your Azure Firewall subnets. Check [this link](https://learn.microsoft.com/azure/firewall/firewall-faq#why-does-azure-firewall-need-a--26-subnet-size) for further information.\"\n },\n \"name\": \"querytext19\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureFirewallSubnet' | extend compliant = (subnetPrefixLength == 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query19\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use at least a /27 prefix for your Gateway subnets. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-howto-add-gateway-resource-manager#add-a-gateway) for further information.\"\n },\n \"name\": \"querytext21\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'GatewaySubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query21\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't rely on the NSG inbound default rules using the VirtualNetwork service tag to limit connectivity. Check [this link](https://learn.microsoft.com/azure/virtual-network/service-tags-overview#available-service-tags) for further information.\"\n },\n \"name\": \"querytext22\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/networksecuritygroups' | mvexpand properties.securityRules | project id,name,ruleAction=properties_securityRules.properties.access,rulePriority=properties_securityRules.properties.priority,ruleDst=properties_securityRules.properties.destinationAddressPrefix,ruleSrc=properties_securityRules.properties.sourceAddressPrefix,ruleProt=properties_securityRules.properties.protocol,ruleDirection=properties_securityRules.properties.direction,rulePort=properties_securityRules.properties.destinationPortRange | summarize StarDenies=countif(ruleAction=='Deny' and ruleDst=='*' and ruleSrc=='*' and ruleProt=='*' and rulePort=='*') by id,tostring(ruleDirection) | where ruleDirection == 'Inbound' | project id,compliant=(StarDenies>0) | union (resources | where type=='microsoft.network/networksecuritygroups' | where array_length(properties.securityRules)==0 | extend compliant=false | project id,compliant) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query22\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Do not implement more than 900 NSG rules per NSG, due to the limit of 1000 rules. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits) for further information.. [This training](https://learn.microsoft.com/azure/virtual-network/network-security-group-how-it-works) can help to educate yourself on this.\"\n },\n \"name\": \"querytext23\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/networksecuritygroups' | project id, rules = array_length(properties.securityRules) | project id, compliant = (rules < 900) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query23\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## PaaS\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Don't enable virtual network service endpoints by default on all subnets. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-service-endpoints-overview) for further information.. [This training](https://learn.microsoft.com/learn/paths/implement-network-security/?source=learn) can help to educate yourself on this.\"\n },\n \"name\": \"querytext20\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets = properties.subnets | mv-expand subnets | project id = subnets.id, resourceGroup, VNet = name, serviceEndpoints = subnets.properties.serviceEndpoints, compliant = (isnull(subnets.properties.serviceEndpoints) or array_length(subnets.properties.serviceEndpoints) == 0) | order by compliant asc | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query20\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Internet\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Bastion in a subnet /26 or larger. Check [this link](https://learn.microsoft.com/azure/bastion/bastion-faq#subnet) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'AzureBastionSubnet' | extend compliant = (subnetPrefixLength <= 26) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hub and spoke\"\n },\n \"name\": \"tab3title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If using Route Server, use a /27 prefix for the Route Server subnet. Check [this link](https://learn.microsoft.com/azure/route-server/quickstart-configure-route-server-portal#create-a-route-server-1) for further information.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | project id, subnetName = subnets.name, subnetPrefix = subnets.properties.addressPrefix | extend subnetPrefixLength = split(subnetPrefix, '/')[1] | where subnetName == 'RouteServerSubnet' | extend compliant = (subnetPrefixLength <= 27) | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you have more than 400 spoke networks in a region, deploy an additional hub to bypass VNet peering limits (500) and the maximum number of prefixes that can be advertised via ExpressRoute (1000). Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | summarize peeringcount = count() by id | extend compliant = (peeringcount < 450) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Limit the number of routes per route table to 400. Check [this link](https://learn.microsoft.com/azure/azure-resource-manager/management/azure-subscription-service-limits?toc=/azure/virtual-network/toc.json#azure-resource-manager-virtual-networking-limits) for further information.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/routetables' | mvexpand properties.routes | summarize routeCount = count() by id | extend compliant = (routeCount < 360) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use the setting 'Allow traffic to remote virtual network' when configuring VNet peerings. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-network-manage-peering) for further information.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | project id, peeringName=properties_virtualNetworkPeerings.name, compliant = (properties_virtualNetworkPeerings.properties.allowVirtualNetworkAccess == True) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab3\"\n },\n \"name\": \"tab3\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## IP plan\"\n },\n \"name\": \"tab4title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use IP addresses from the address allocation ranges for private internets (RFC 1918). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | project name, id, location, resourceGroup, subscriptionId, cidr = addressPrefix | extend compliant = (cidr matches regex @'^(10\\\\.|172\\\\.(1[6-9]|2[0-9]|3[01])\\\\.|192\\\\.168\\\\.)') | project id, compliant, cidr | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that IP address space isn't wasted, don't create unnecessarily large virtual networks (for example /16). Check [this link](https://learn.microsoft.com/azure/cloud-adoption-framework/ready/azure-best-practices/plan-for-ip-addressing) for further information.. [This training](https://learn.microsoft.com/learn/paths/architect-network-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/virtualnetworks' | extend addressSpace = todynamic(properties.addressSpace) | extend addressPrefix = todynamic(properties.addressSpace.addressPrefixes) | mvexpand addressSpace | mvexpand addressPrefix | extend addressMask = split(addressPrefix,'/')[1] | extend compliant = addressMask > 16 | project name, id, subscriptionId, resourceGroup, addressPrefix, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab4\"\n },\n \"name\": \"tab4\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Virtual WAN\"\n },\n \"name\": \"tab5title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For outbound Internet traffic protection and filtering, deploy Azure Firewall in secured hubs. Check [this link](https://learn.microsoft.com/azure/virtual-wan/howto-firewall) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-networking-infrastructure/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext24\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualhubs' | extend compliant = isnotnull(properties.azureFirewall.id) | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query24\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab5\"\n },\n \"name\": \"tab5\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Firewall\"\n },\n \"name\": \"tab6title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use application rules to filter outbound traffic on destination host name for supported protocols. Use FQDN-based network rules and Azure Firewall with DNS proxy to filter egress traffic to the Internet over other protocols. Check [this link](https://learn.microsoft.com/azure/firewall/fqdn-filtering-network-rules) for further information.\"\n },\n \"name\": \"querytext14\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.dnsSettings.enableProxy == true) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query14\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure Firewall Premium to enable additional security features. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features) for further information.\"\n },\n \"name\": \"querytext15\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.sku.tier == 'Premium') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query15\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall Threat Intelligence mode to Alert and Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps-signature-rules) for further information.\"\n },\n \"name\": \"querytext16\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.threatIntelMode == 'Deny') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query16\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure Azure Firewall IDPS mode to Deny for additional protection. Check [this link](https://learn.microsoft.com/azure/firewall/premium-features#idps) for further information.\"\n },\n \"name\": \"querytext17\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/firewallpolicies' | extend compliant = (properties.intrusionDetection.mode == 'Deny') | project id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query17\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"For subnets in VNets not connected to Virtual WAN, attach a route table so that Internet traffic is redirected to Azure Firewall or a Network Virtual Appliance. Check [this link](https://learn.microsoft.com/azure/virtual-network/virtual-networks-udr-overview) for further information.\"\n },\n \"name\": \"querytext18\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,name,subnetId=tostring(subnets.id), subnetName=tostring(subnets.name),subnetRT=subnets.properties.routeTable.id | where not (subnetName in ('GatewaySubnet', 'AzureFirewallSubnet', 'RouteServerSubnet', 'AzureBastionSubnet')) | extend hasRT = isnotnull(subnetRT) | distinct id, hasRT, subnetId | join kind=fullouter (resources | where type == 'microsoft.network/virtualnetworks' | mvexpand properties.virtualNetworkPeerings | extend isVWAN=(tolower(split(properties_virtualNetworkPeerings.name, '_')[0]) == 'remotevnettohubpeering') | mv-expand properties.subnets | project id, isVWAN, name, subnetId=tostring(properties_subnets.id), subnetName=tostring(properties_subnets.name) | summarize PeeredToVWAN=max(isVWAN) by id, subnetId | project id, subnetId, isVWANpeer = (PeeredToVWAN == true)) on subnetId | project id=iff(isnotempty(id), id, id1), subnetId=iff(isnotempty(subnetId), subnetId, subnetId1), hasRT, isVWANpeer | extend compliant = (hasRT==true or isVWANpeer==true) | distinct id, subnetId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query18\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab6\"\n },\n \"name\": \"tab6\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Hybrid\"\n },\n \"name\": \"tab7title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Select the right SKU for the ExpressRoute/VPN gateways based on bandwidth and performance requirements. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways?source=recommendations#gwsku) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier !in ('Basic', 'Standard')| project name, id, subscriptionId, resourceGroup, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure that you're using unlimited-data ExpressRoute circuits only if you reach the bandwidth that justifies their cost. Check [this link](https://learn.microsoft.com/azure/expressroute/plan-manage-cost) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/expressroutecircuits' | extend compliant = (tolower(sku.family) == 'metereddata' or tolower(sku.tier) == 'local') | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Leverage the Local SKU of ExpressRoute to reduce the cost of your circuits, if your circuit peering location supports your Azure regions for the Local SKU. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-faqs#expressroute-local) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project id, gwid=tostring(properties.virtualNetworkGateway1.id), circuitid=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitid=tostring(id), circuitsku=sku.tier) on circuitid | project id=gwid, compliant = (circuitsku == 'Local') | summarize compliant=max(compliant) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy a zone-redundant ExpressRoute gateway in the supported Azure regions. Check [this link](https://learn.microsoft.com/azure/expressroute/expressroute-about-virtual-network-gateways) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources| where type == 'microsoft.network/virtualnetworkgateways'| where properties.gatewayType =~ 'vpn' or properties.gatewayType == 'ExpressRoute'| extend SKUName = properties.sku.name, SKUTier = properties.sku.tier, Type = properties.gatewayType| extend compliant = SKUTier contains 'AZ'| project name, id, subscriptionId, resourceGroup, Type, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use zone-redundant VPN gateways to connect branches or remote locations to Azure (where available). Check [this link](https://learn.microsoft.com/azure/vpn-gateway/create-zone-redundant-vnet-gateway) for further information.. [This training](https://learn.microsoft.com/training/modules/intro-to-azure-vpn-gateway/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworkgateways' | where properties.gatewayType == 'Vpn' | extend compliant = (tolower(properties.sku.name) contains 'az') | distinct id, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use ExpressRoute circuits from different peering locations for redundancy. Check [this link](https://learn.microsoft.com/azure/expressroute/designing-for-disaster-recovery-with-expressroute-privatepeering#need-for-redundant-connectivity-solution) for further information.. [This training](https://learn.microsoft.com/learn/modules/design-implement-azure-expressroute/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext12\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/connections' | where properties.connectionType == 'ExpressRoute' | project cxId=id, gwId=tostring(properties.virtualNetworkGateway1.id), circuitId=tostring(properties.peer.id) | join (resources | where type=='microsoft.network/expressroutecircuits' | project circuitId=tostring(id), circuitLocation=tostring(properties.serviceProviderProperties.peeringLocation)) on circuitId | distinct gwId, circuitLocation | summarize countErLocations=count() by id=gwId | extend compliant = (countErLocations >= 2) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query12\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you are using a route table in the GatewaySubnet, make sure that gateway routes are propagated. Check [this link](https://learn.microsoft.com/azure/vpn-gateway/vpn-gateway-about-vpn-gateway-settings#gwsub) for further information.\"\n },\n \"name\": \"querytext13\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/virtualnetworks' | project id,resourceGroup,name,subnets=properties.subnets | mv-expand subnets | project id,resourceGroup,name,subnetName=tostring(subnets.name),routeTableId=tostring(subnets.properties.routeTable.id) | where subnetName == 'GatewaySubnet' | join kind=leftouter (Resources | where type == 'microsoft.network/routetables' | project routeTableName=name,routeTableId=id, disableBgpRoutePropagation=properties.disableBgpRoutePropagation) on routeTableId | project id,compliant = (disableBgpRoutePropagation == False or isnull(disableBgpRoutePropagation)) | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 0,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query13\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab7\"\n },\n \"name\": \"tab7\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", "version": "1.0", "sourceId": "[parameters('workbookSourceId')]", "category": "[parameters('workbookType')]" diff --git a/workbooks/appdelivery_checklist.en_network_counters_workbook.json b/workbooks/appdelivery_checklist.en_network_counters_workbook.json index b28ae85f8..004407903 100644 --- a/workbooks/appdelivery_checklist.en_network_counters_workbook.json +++ b/workbooks/appdelivery_checklist.en_network_counters_workbook.json @@ -413,7 +413,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query1Stats:$.Success}+{Query8Stats:$.Success}" + "resultVal": "{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}" } } ] @@ -432,7 +432,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query1Stats:$.Total}+{Query8Stats:$.Total}" + "resultVal": "{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}" } } ] @@ -470,7 +470,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}" + "resultVal": "{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}" } } ] @@ -489,7 +489,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}" + "resultVal": "{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}" } } ] @@ -527,7 +527,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}" + "resultVal": "{Query1Stats:$.Success}+{Query8Stats:$.Success}" } } ] @@ -546,7 +546,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}" + "resultVal": "{Query1Stats:$.Total}+{Query8Stats:$.Total}" } } ] @@ -584,7 +584,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query1Stats:$.Total}+{Query8Stats:$.Total}+{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}+{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}" + "resultVal": "{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}+{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query1Stats:$.Total}+{Query8Stats:$.Total}" } } ] @@ -603,7 +603,7 @@ "criteriaContext": { "operator": "Default", "resultValType": "expression", - "resultVal": "{Query1Stats:$.Success}+{Query8Stats:$.Success}+{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}+{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}" + "resultVal": "{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}+{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query1Stats:$.Success}+{Query8Stats:$.Success}" } } ] @@ -677,30 +677,30 @@ "style": "tabs", "links": [ { - "id": "ce0385d5-3492-4781-85f7-7285ad42908c", + "id": "82ac2f54-6c1a-4d4a-bfa0-ade36224c47a", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Load Balancer ({Tab0Success:value}/{Tab0Total:value})", + "linkLabel": "Front Door ({Tab0Success:value}/{Tab0Total:value})", "subTarget": "tab0", - "preText": "Load Balancer", + "preText": "Front Door", "style": "primary" }, { - "id": "6d15ce5a-5849-4d98-bfcd-ebd6bab12257", + "id": "ab61b946-0586-4581-977f-398a4863718d", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Front Door ({Tab1Success:value}/{Tab1Total:value})", + "linkLabel": "App Gateway ({Tab1Success:value}/{Tab1Total:value})", "subTarget": "tab1", - "preText": "Front Door", + "preText": "App Gateway", "style": "primary" }, { - "id": "bd04ea2f-fbfd-453d-9ad2-05f3ce74d94d", + "id": "8363866e-037f-4546-bc4a-904c37832a98", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "App Gateway ({Tab2Success:value}/{Tab2Total:value})", + "linkLabel": "Load Balancer ({Tab2Success:value}/{Tab2Total:value})", "subTarget": "tab2", - "preText": "App Gateway", + "preText": "Load Balancer", "style": "primary" } ] @@ -716,22 +716,22 @@ { "type": 1, "content": { - "json": "## Load Balancer" + "json": "## Front Door" }, "name": "tab0title" }, { "type": 1, "content": { - "json": "Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information." + "json": "Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." }, - "name": "querytext1" + "name": "querytext5" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -780,20 +780,20 @@ ] } }, - "name": "query1" + "name": "query5" }, { "type": 1, "content": { - "json": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information." + "json": "Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information." }, - "name": "querytext8" + "name": "querytext6" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -842,42 +842,20 @@ ] } }, - "name": "query8" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab0" - }, - "name": "tab0" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Front Door" - }, - "name": "tab1title" + "name": "query6" }, { "type": 1, "content": { - "json": "Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." + "json": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information." }, - "name": "querytext5" + "name": "querytext7" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -926,20 +904,20 @@ ] } }, - "name": "query5" + "name": "query7" }, { "type": 1, "content": { - "json": "Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information." + "json": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information." }, - "name": "querytext6" + "name": "querytext9" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -988,20 +966,42 @@ ] } }, - "name": "query6" + "name": "query9" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab0" + }, + "name": "tab0" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## App Gateway" + }, + "name": "tab1title" }, { "type": 1, "content": { - "json": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information." + "json": "Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext7" + "name": "querytext0" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1050,20 +1050,20 @@ ] } }, - "name": "query7" + "name": "query0" }, { "type": 1, "content": { - "json": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information." + "json": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext9" + "name": "querytext2" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1112,42 +1112,20 @@ ] } }, - "name": "query9" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab1" - }, - "name": "tab1" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## App Gateway" - }, - "name": "tab2title" + "name": "query2" }, { "type": 1, "content": { - "json": "Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext0" + "name": "querytext3" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1196,20 +1174,20 @@ ] } }, - "name": "query0" + "name": "query3" }, { "type": 1, "content": { - "json": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext2" + "name": "querytext4" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1258,20 +1236,20 @@ ] } }, - "name": "query2" + "name": "query4" }, { "type": 1, "content": { - "json": "Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information." }, - "name": "querytext3" + "name": "querytext10" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1320,20 +1298,20 @@ ] } }, - "name": "query3" + "name": "query10" }, { "type": 1, "content": { - "json": "Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." }, - "name": "querytext4" + "name": "querytext11" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1382,20 +1360,42 @@ ] } }, - "name": "query4" + "name": "query11" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab1" + }, + "name": "tab1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Load Balancer" + }, + "name": "tab2title" }, { "type": 1, "content": { - "json": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information." + "json": "Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information." }, - "name": "querytext10" + "name": "querytext1" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1444,20 +1444,20 @@ ] } }, - "name": "query10" + "name": "query1" }, { "type": 1, "content": { - "json": "Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." + "json": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information." }, - "name": "querytext11" + "name": "querytext8" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -1506,7 +1506,7 @@ ] } }, - "name": "query11" + "name": "query8" } ] }, diff --git a/workbooks/appdelivery_checklist.en_network_counters_workbook_template.json b/workbooks/appdelivery_checklist.en_network_counters_workbook_template.json index 4d07eeff2..96038e6c3 100644 --- a/workbooks/appdelivery_checklist.en_network_counters_workbook_template.json +++ b/workbooks/appdelivery_checklist.en_network_counters_workbook_template.json @@ -41,7 +41,7 @@ "dependsOn": [], "properties": { "displayName": "[parameters('workbookDisplayName')]", - "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"value::all\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query0Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query1Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query2Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query3Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query4Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query5Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6Stats\",\n \"type\": 1,\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query6Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7Stats\",\n \"type\": 1,\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query7Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query8Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9Stats\",\n \"type\": 1,\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query9Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query10Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query11Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query1Stats:$.Success}+{Query8Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query1Stats:$.Total}+{Query8Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab0Success}/{Tab0Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab1Success}/{Tab1Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab2Success}/{Tab2Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookTotal\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query1Stats:$.Total}+{Query8Stats:$.Total}+{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}+{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookSuccess\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query1Stats:$.Success}+{Query8Stats:$.Success}+{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}+{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookPercent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{WorkbookSuccess}/{WorkbookTotal})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"InvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Application Delivery Networking - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"50\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"WorkbookPercent\\\\\\\": \\\\\\\"{WorkbookPercent}\\\\\\\", \\\\\\\"SubTitle\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 4,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"WorkbookPercent\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"SubTitle\",\n \"formatter\": 1\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"ProgressTile\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"ce0385d5-3492-4781-85f7-7285ad42908c\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Load Balancer ({Tab0Success:value}/{Tab0Total:value})\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Load Balancer\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"6d15ce5a-5849-4d98-bfcd-ebd6bab12257\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Front Door ({Tab1Success:value}/{Tab1Total:value})\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Front Door\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"bd04ea2f-fbfd-453d-9ad2-05f3ce74d94d\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"App Gateway ({Tab2Success:value}/{Tab2Total:value})\",\n \"subTarget\": \"tab2\",\n \"preText\": \"App Gateway\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Load Balancer\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Front Door\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## App Gateway\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", + "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"crossComponentResources\": [\n \"value::all\"\n ],\n \"parameters\": [\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query0FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query0Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard')| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query1FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query1Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query2FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query2Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query3FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query3Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4Stats\",\n \"type\": 1,\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query4FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query4Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query5FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query5Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6Stats\",\n \"type\": 1,\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query6FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query6Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7Stats\",\n \"type\": 1,\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query7FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query7Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8Stats\",\n \"type\": 1,\n \"query\": \"resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query8FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query8Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9Stats\",\n \"type\": 1,\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query9FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query9Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query10FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query10Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11Stats\",\n \"type\": 1,\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode| summarize Total = count(), Success = countif(compliant==1), Failed = countif(compliant==0) | extend SuccessPercent = iff(Total==0, 100, 100*toint(Success)/toint(Total)) | extend FullyCompliant = iff(SuccessPercent == 100, 'Yes', 'No') | project Query1Stats=tostring(pack_all())\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Query11FullyCompliant\",\n \"type\": 1,\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"value\\\\\\\": \\\\\\\"{Query11Stats:$.FullyCompliant}\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"queryType\": 8\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab0Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab0Success}/{Tab0Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab1Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab1Success}/{Tab1Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Success\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query1Stats:$.Success}+{Query8Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Total\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query1Stats:$.Total}+{Query8Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Tab2Percent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{Tab2Success}/{Tab2Total})\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookTotal\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query5Stats:$.Total}+{Query6Stats:$.Total}+{Query7Stats:$.Total}+{Query9Stats:$.Total}+{Query0Stats:$.Total}+{Query2Stats:$.Total}+{Query3Stats:$.Total}+{Query4Stats:$.Total}+{Query10Stats:$.Total}+{Query11Stats:$.Total}+{Query1Stats:$.Total}+{Query8Stats:$.Total}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookSuccess\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"{Query5Stats:$.Success}+{Query6Stats:$.Success}+{Query7Stats:$.Success}+{Query9Stats:$.Success}+{Query0Stats:$.Success}+{Query2Stats:$.Success}+{Query3Stats:$.Success}+{Query4Stats:$.Success}+{Query10Stats:$.Success}+{Query11Stats:$.Success}+{Query1Stats:$.Success}+{Query8Stats:$.Success}\"\n }\n }\n ]\n },\n {\n \"id\": \"daf05c62-1d5b-4325-b241-d7ee468f23eb\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"WorkbookPercent\",\n \"type\": 1,\n \"isHiddenWhenLocked\": true,\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"criteriaData\": [\n {\n \"criteriaContext\": {\n \"operator\": \"Default\",\n \"resultValType\": \"expression\",\n \"resultVal\": \"round(100*{WorkbookSuccess}/{WorkbookTotal})\"\n }\n }\n ]\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\"\n },\n \"name\": \"InvisibleParameters\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Application Delivery Networking - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"50\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"{\\\"version\\\":\\\"1.0.0\\\",\\\"content\\\":\\\"{\\\\\\\"WorkbookPercent\\\\\\\": \\\\\\\"{WorkbookPercent}\\\\\\\", \\\\\\\"SubTitle\\\\\\\": \\\\\\\"Percent of successful checks\\\\\\\"}\\\",\\\"transformers\\\":null}\",\n \"size\": 4,\n \"queryType\": 8,\n \"visualization\": \"tiles\",\n \"tileSettings\": {\n \"titleContent\": {\n \"columnMatch\": \"WorkbookPercent\",\n \"formatter\": 4,\n \"formatOptions\": {\n \"min\": 0,\n \"max\": 100,\n \"palette\": \"redGreen\"\n }\n },\n \"subtitleContent\": {\n \"columnMatch\": \"SubTitle\",\n \"formatter\": 1\n },\n \"showBorder\": true\n }\n },\n \"customWidth\": \"50\",\n \"name\": \"ProgressTile\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"82ac2f54-6c1a-4d4a-bfa0-ade36224c47a\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Front Door ({Tab0Success:value}/{Tab0Total:value})\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Front Door\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"ab61b946-0586-4581-977f-398a4863718d\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"App Gateway ({Tab1Success:value}/{Tab1Total:value})\",\n \"subTarget\": \"tab1\",\n \"preText\": \"App Gateway\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"8363866e-037f-4546-bc4a-904c37832a98\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Load Balancer ({Tab2Success:value}/{Tab2Total:value})\",\n \"subTarget\": \"tab2\",\n \"preText\": \"Load Balancer\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Front Door\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## App Gateway\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Load Balancer\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", "version": "1.0", "sourceId": "[parameters('workbookSourceId')]", "category": "[parameters('workbookType')]" diff --git a/workbooks/appdelivery_checklist.en_network_workbook.json b/workbooks/appdelivery_checklist.en_network_workbook.json index 93b895e06..b4ac0b29d 100644 --- a/workbooks/appdelivery_checklist.en_network_workbook.json +++ b/workbooks/appdelivery_checklist.en_network_workbook.json @@ -70,30 +70,30 @@ "style": "tabs", "links": [ { - "id": "e39bec07-cd51-4252-b6f1-cb1e46b128f8", + "id": "2e2ea355-93b1-4743-ad7e-8402645e68b4", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Front Door", + "linkLabel": "App Gateway", "subTarget": "tab0", - "preText": "Front Door", + "preText": "App Gateway", "style": "primary" }, { - "id": "e75b826b-3fa7-4de8-a121-aa384c9fec60", + "id": "451e2e6a-f381-496f-b099-9e81b169da58", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "Load Balancer", + "linkLabel": "Front Door", "subTarget": "tab1", - "preText": "Load Balancer", + "preText": "Front Door", "style": "primary" }, { - "id": "afbcc605-4c1b-4b1a-a4bb-f797b5063a95", + "id": "f9d5f7b4-0f81-4725-8d8f-d8239cd632d9", "cellValue": "VisibleTab", "linkTarget": "parameter", - "linkLabel": "App Gateway", + "linkLabel": "Load Balancer", "subTarget": "tab2", - "preText": "App Gateway", + "preText": "Load Balancer", "style": "primary" } ] @@ -109,22 +109,22 @@ { "type": 1, "content": { - "json": "## Front Door" + "json": "## App Gateway" }, "name": "tab0title" }, { "type": 1, "content": { - "json": "Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." + "json": "Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext5" + "name": "querytext0" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -173,20 +173,20 @@ ] } }, - "name": "query5" + "name": "query0" }, { "type": 1, "content": { - "json": "Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information." + "json": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext6" + "name": "querytext2" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -235,20 +235,20 @@ ] } }, - "name": "query6" + "name": "query2" }, { "type": 1, "content": { - "json": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information." + "json": "Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext7" + "name": "querytext3" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -297,20 +297,20 @@ ] } }, - "name": "query7" + "name": "query3" }, { "type": 1, "content": { - "json": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information." + "json": "Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." }, - "name": "querytext9" + "name": "querytext4" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -359,42 +359,20 @@ ] } }, - "name": "query9" - } - ] - }, - "conditionalVisibility": { - "parameterName": "VisibleTab", - "comparison": "isEqualTo", - "value": "tab0" - }, - "name": "tab0" - }, - { - "type": 12, - "content": { - "version": "NotebookGroup/1.0", - "groupType": "editable", - "items": [ - { - "type": 1, - "content": { - "json": "## Load Balancer" - }, - "name": "tab1title" + "name": "query4" }, { "type": 1, "content": { - "json": "Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information." + "json": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information." }, - "name": "querytext1" + "name": "querytext10" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -443,20 +421,20 @@ ] } }, - "name": "query1" + "name": "query10" }, { "type": 1, "content": { - "json": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information." + "json": "Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." }, - "name": "querytext8" + "name": "querytext11" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -505,16 +483,16 @@ ] } }, - "name": "query8" + "name": "query11" } ] }, "conditionalVisibility": { "parameterName": "VisibleTab", "comparison": "isEqualTo", - "value": "tab1" + "value": "tab0" }, - "name": "tab1" + "name": "tab0" }, { "type": 12, @@ -525,22 +503,22 @@ { "type": 1, "content": { - "json": "## App Gateway" + "json": "## Front Door" }, - "name": "tab2title" + "name": "tab1title" }, { "type": 1, "content": { - "json": "Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." }, - "name": "querytext0" + "name": "querytext5" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -589,20 +567,20 @@ ] } }, - "name": "query0" + "name": "query5" }, { "type": 1, "content": { - "json": "Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information." }, - "name": "querytext2" + "name": "querytext6" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -651,20 +629,20 @@ ] } }, - "name": "query2" + "name": "query6" }, { "type": 1, "content": { - "json": "Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information." }, - "name": "querytext3" + "name": "querytext7" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -713,20 +691,20 @@ ] } }, - "name": "query3" + "name": "query7" }, { "type": 1, "content": { - "json": "Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this." + "json": "Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information." }, - "name": "querytext4" + "name": "querytext9" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -775,20 +753,42 @@ ] } }, - "name": "query4" + "name": "query9" + } + ] + }, + "conditionalVisibility": { + "parameterName": "VisibleTab", + "comparison": "isEqualTo", + "value": "tab1" + }, + "name": "tab1" + }, + { + "type": 12, + "content": { + "version": "NotebookGroup/1.0", + "groupType": "editable", + "items": [ + { + "type": 1, + "content": { + "json": "## Load Balancer" + }, + "name": "tab2title" }, { "type": 1, "content": { - "json": "Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information." + "json": "Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information." }, - "name": "querytext10" + "name": "querytext1" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -837,20 +837,20 @@ ] } }, - "name": "query10" + "name": "query1" }, { "type": 1, "content": { - "json": "Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information." + "json": "Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information." }, - "name": "querytext11" + "name": "querytext8" }, { "type": 3, "content": { "version": "KqlItem/1.0", - "query": "resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", + "query": "resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed", "size": 4, "queryType": 1, "resourceType": "microsoft.resourcegraph/resources", @@ -899,7 +899,7 @@ ] } }, - "name": "query11" + "name": "query8" } ] }, diff --git a/workbooks/appdelivery_checklist.en_network_workbook_template.json b/workbooks/appdelivery_checklist.en_network_workbook_template.json index 152457236..ceeb91d8f 100644 --- a/workbooks/appdelivery_checklist.en_network_workbook_template.json +++ b/workbooks/appdelivery_checklist.en_network_workbook_template.json @@ -41,7 +41,7 @@ "dependsOn": [], "properties": { "displayName": "[parameters('workbookDisplayName')]", - "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Application Delivery Networking - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"100\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"e39bec07-cd51-4252-b6f1-cb1e46b128f8\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Front Door\",\n \"subTarget\": \"tab0\",\n \"preText\": \"Front Door\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"e75b826b-3fa7-4de8-a121-aa384c9fec60\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Load Balancer\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Load Balancer\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"afbcc605-4c1b-4b1a-a4bb-f797b5063a95\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"App Gateway\",\n \"subTarget\": \"tab2\",\n \"preText\": \"App Gateway\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Front Door\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Load Balancer\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## App Gateway\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", + "serializedData": "{\n \"version\": \"Notebook/1.0\",\n \"items\": [\n {\n \"type\": 9,\n \"content\": {\n \"version\": \"KqlParameterItem/1.0\",\n \"parameters\": [\n {\n \"id\": \"497a107e-dde8-433e-b263-35ac8e8f7834\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"Subscription\",\n \"type\": 6,\n \"multiSelect\": true,\n \"quote\": \"'\",\n \"delimiter\": \",\",\n \"typeSettings\": {\n \"additionalResourceOptions\": [\n \"value::all\"\n ],\n \"includeAll\": true,\n \"showDefault\": false\n },\n \"timeContext\": {\n \"durationMs\": 86400000\n },\n \"value\": [\n \"value::all\"\n ]\n },\n {\n \"id\": \"844e4f4e-df51-4e3c-8eaf-0dc78b92c721\",\n \"version\": \"KqlParameterItem/1.0\",\n \"name\": \"OnlyFailed\",\n \"label\": \"Only show failed\",\n \"type\": 2,\n \"typeSettings\": {\n \"additionalResourceOptions\": [],\n \"showDefault\": false\n },\n \"jsonData\": \"[\\r\\n { \\\"value\\\":true, \\\"label\\\":\\\"True\\\" },\\r\\n { \\\"value\\\":false, \\\"label\\\":\\\"False\\\", \\\"selected\\\":true }\\r\\n]\"\n }\n ],\n \"style\": \"pills\",\n \"queryType\": 0,\n \"resourceType\": \"microsoft.operationalinsights/workspaces\"\n },\n \"name\": \"WorkbookSelectors\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"If you set \\\"Only show failed\\\" to \\\"Yes\\\", the different queries will only show items that have failed their compliance checks.\",\n \"style\": \"info\"\n },\n \"name\": \"InfoBox\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Azure Application Delivery Networking - Network\\n\\n---\\n\\nThis workbook has been automatically generated out of the checklists in the [Azure Review Checklists repo](https://github.com/Azure/review-checklists). This repo contains best practices and recommendations around generic Landing Zones as well as specific services such as Azure Virtual Desktop, Azure Kubernetes Service or Azure VMware Solution, to name a few. This repository of best practices is curated by Azure engineers, but open to anybody to contribute.\\n\\nIf you see a problem in the queries that are part of this workbook, please open a Github issue [here](https://github.com/Azure/review-checklists/issues/new).\"\n },\n \"customWidth\": \"100\",\n \"name\": \"MarkdownHeader\"\n },\n {\n \"type\": 11,\n \"content\": {\n \"version\": \"LinkItem/1.0\",\n \"style\": \"tabs\",\n \"links\": [\n {\n \"id\": \"2e2ea355-93b1-4743-ad7e-8402645e68b4\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"App Gateway\",\n \"subTarget\": \"tab0\",\n \"preText\": \"App Gateway\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"451e2e6a-f381-496f-b099-9e81b169da58\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Front Door\",\n \"subTarget\": \"tab1\",\n \"preText\": \"Front Door\",\n \"style\": \"primary\"\n },\n {\n \"id\": \"f9d5f7b4-0f81-4725-8d8f-d8239cd632d9\",\n \"cellValue\": \"VisibleTab\",\n \"linkTarget\": \"parameter\",\n \"linkLabel\": \"Load Balancer\",\n \"subTarget\": \"tab2\",\n \"preText\": \"Load Balancer\",\n \"style\": \"primary\"\n }\n ]\n },\n \"name\": \"Tabs\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## App Gateway\"\n },\n \"name\": \"tab0title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using Application Gateway v2 SKU. Check [this link](https://learn.microsoft.com/azure/application-gateway/overview-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext0\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgateways' | project id, compliant = properties.sku.name in ('Standard_v2', 'WAF_v2') | project id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query0\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Your Application Gateways v2 should be deployed in subnets with IP prefixes equal or larger than /24. Check [this link](https://learn.microsoft.com/azure/application-gateway/configuration-infrastructure#size-of-the-subnet) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext2\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/applicationgateways' | extend subnetId = tostring(properties.gatewayIPConfigurations[0].properties.subnet.id) | project id, subnetId | join (resources | where type=='microsoft.network/virtualnetworks' | project id,subnets=properties.subnets | mv-expand subnets | mv-expand subnets.properties.addressPrefixes | project id, subnetId = tostring(subnets.id), prefix1 = subnets.properties.addressPrefix, prefix2 = subnets.properties.addressPrefixes | mv-expand prefix2 | extend prefix = iff(isnotnull(prefix1), prefix1, prefix2) | extend subnetPrefixLength = split(prefix, '/')[1])on subnetId | extend compliant = (subnetPrefixLength <= 24 or subnetPrefixLength == 64) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query2\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Configure autoscaling with a minimum amount of instances of two. Check [this link](https://learn.microsoft.com/azure/application-gateway/application-gateway-autoscaling-zone-redundant) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext3\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(properties.autoscaleConfiguration) and properties.autoscaleConfiguration.minCapacity >= 2) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query3\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy Application Gateway across Availability Zones. Check [this link](https://learn.microsoft.com/azure/reliability/migrate-app-gateway-v2) for further information.. [This training](https://learn.microsoft.com/learn/paths/secure-application-delivery/) can help to educate yourself on this.\"\n },\n \"name\": \"querytext4\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type =~ 'microsoft.network/applicationGateways' | extend compliant = (isnotnull(zones) and array_length(zones) > 1) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query4\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Enable the Azure Application Gateway WAF bot protection rule set The bot rules detect good and bad bots. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/ag/bot-protection) for further information.\"\n },\n \"name\": \"querytext10\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/applicationgatewaywebapplicationfirewallpolicies' | mv-expand properties.managedRules.managedRuleSets | project id, rulesettype = properties_managedRules_managedRuleSets.ruleSetType | extend compliant1 = (rulesettype == 'Microsoft_BotManagerRuleSet') | project id, compliant1 | summarize compliant = max(compliant1) by id | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query10\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Application Gateway in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext11\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query11\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab0\"\n },\n \"name\": \"tab0\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Front Door\"\n },\n \"name\": \"tab1title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Deploy your WAF policy for Front Door in 'Prevention' mode. Check [this link](https://learn.microsoft.com/azure/web-application-firewall/afds/waf-front-door-policy-settings) for further information.\"\n },\n \"name\": \"querytext5\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/frontdoorwebapplicationfirewallpolicies' | project policyName=name, policyId=id,policySku=sku.name, links=properties.securityPolicyLinks, enabledState=properties.policySettings.enabledState, mode=properties.policySettings.mode | mvexpand links | extend securityPolicy=links.id | extend securityPolicyParts=split(securityPolicy, '/') | extend profileId=strcat_array(array_slice(securityPolicyParts, 0, -3), '/') | project id=profileId, compliant=((enabledState=='Enabled') and (mode=='Prevention')), enabledState, mode | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query5\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Disable health probes when there is only one origin in an Azure Front Door origin group. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#disable-health-probes-when-theres-only-one-origin-in-an-origin-group) for further information.\"\n },\n \"name\": \"querytext6\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups/origins' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups')) | extend originGroupId = substring(id, 0, indexof(id, '/origins')) | join kind=inner (cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend originGroupName = name | extend hasHealthProbe = isnotnull(properties.healthProbeSettings)) on $left.originGroupId == $right.id | summarize numberOrigins = count() by originGroupId, subscriptionId, frontDoorId, hasHealthProbe, originGroupName | extend compliant = not(numberOrigins == 1 and hasHealthProbe) | project id = frontDoorId, compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query6\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use HEAD health probes with Azure Front Door, to reduce the traffic that Front Door sends to your application. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-head-health-probes) for further information.\"\n },\n \"name\": \"querytext7\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/origingroups' | extend frontDoorId = substring(id, 0, indexof(id, '/origingroups/')) | extend compliant = (isnull(properties['healthProbeSettings']['probeRequestType']) or toupper(properties['healthProbeSettings']['probeRequestType']) == 'HEAD') | project compliant, id=frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query7\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use managed TLS certificates with Azure Front Door. Reduce operational cost and risk of outages due to certificate renewals. Check [this link](https://learn.microsoft.com/azure/frontdoor/best-practices#use-managed-tls-certificates) for further information.\"\n },\n \"name\": \"querytext9\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"cdnresources | where type =~ 'microsoft.cdn/profiles/customdomains' | extend frontDoorId = substring(id, 0, indexof(id, '/customdomains')) | extend compliant = (isnull(properties['tlsSettings']['certificateType']) or tolower(properties['tlsSettings']['certificateType']) =~ 'customercertificate') | project compliant, id = frontDoorId | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query9\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab1\"\n },\n \"name\": \"tab1\"\n },\n {\n \"type\": 12,\n \"content\": {\n \"version\": \"NotebookGroup/1.0\",\n \"groupType\": \"editable\",\n \"items\": [\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"## Load Balancer\"\n },\n \"name\": \"tab2title\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Ensure you are using the Standard SKU for your Azure Load Balancers. Check [this link](https://learn.microsoft.com/azure/load-balancer/load-balancer-overview) for further information.\"\n },\n \"name\": \"querytext1\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type == 'microsoft.network/loadbalancers' | project id, compliant=(tolower(sku.name) == 'standard') | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query1\"\n },\n {\n \"type\": 1,\n \"content\": {\n \"json\": \"Use Azure NAT Gateway instead of Load Balancer outbound rules for better SNAT scalability. Check [this link](https://learn.microsoft.com/azure/nat-gateway/nat-overview#outbound-connectivity) for further information.\"\n },\n \"name\": \"querytext8\"\n },\n {\n \"type\": 3,\n \"content\": {\n \"version\": \"KqlItem/1.0\",\n \"query\": \"resources | where type=='microsoft.network/loadbalancers' | extend countOutRules=array_length(properties.outboundRules) | extend compliant = (countOutRules == 0) | distinct id,compliant | extend onlyFailed = {OnlyFailed:label} | where compliant == 0 or not (onlyFailed == 1) | project-away onlyFailed\",\n \"size\": 4,\n \"queryType\": 1,\n \"resourceType\": \"microsoft.resourcegraph/resources\",\n \"crossComponentResources\": [\n \"{Subscription}\"\n ],\n \"gridSettings\": {\n \"formatters\": [\n {\n \"columnMatch\": \"id\",\n \"formatter\": 0,\n \"numberFormat\": {\n \"unit\": 0,\n \"options\": {\n \"style\": \"decimal\"\n }\n }\n },\n {\n \"columnMatch\": \"compliant\",\n \"formatter\": 18,\n \"formatOptions\": {\n \"thresholdsOptions\": \"icons\",\n \"thresholdsGrid\": [\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"1\",\n \"representation\": \"success\",\n \"text\": \"Success\"\n },\n {\n \"operator\": \"==\",\n \"thresholdValue\": \"0\",\n \"representation\": \"failed\",\n \"text\": \"Failed\"\n },\n {\n \"operator\": \"Default\",\n \"thresholdValue\": null,\n \"representation\": \"unknown\",\n \"text\": \"Unknown\"\n }\n ]\n }\n }\n ]\n }\n },\n \"name\": \"query8\"\n }\n ]\n },\n \"conditionalVisibility\": {\n \"parameterName\": \"VisibleTab\",\n \"comparison\": \"isEqualTo\",\n \"value\": \"tab2\"\n },\n \"name\": \"tab2\"\n }\n ],\n \"$schema\": \"https://github.com/Microsoft/Application-Insights-Workbooks/blob/master/schema/workbook.json\"\n}", "version": "1.0", "sourceId": "[parameters('workbookSourceId')]", "category": "[parameters('workbookType')]"

      U% zYz}cxbVA&D4*yLuaJUqO;#2MRGjHL{X`o!>9sQ;(x9yRV(U}$wob2L84P=1+mU(0g z2c8u?E92qTXq$ld=g-B18puYF9tB#ks&*Z8ubEV5&;vX5Hb8IW(Gh^GZ#xNrk_CZc zKLdgSKEiw`{r`&$?9t`_tIxe%g7_Z>3tE*(83-+=rmWcU&MNzv3waKgbOc_cfMnl4 zBBvLhP_v)8o995PBM_QGE!rlBFc)vgdOgvp_=^nu1O0zMc5_t$jqsfUi5ShgeB3Dy^`oy{d91E+luHXf632OK^hjQ^m%g#xyl`h?xxlby^3oSeB zS}R(5Gjka##T!{0k=c`(=-NSydzdHU! z2KFoTi~j#b2EaktXZi0c{x?;z`*b(bc$`}E1AV*@2q&?K^c?tpI5);S`&xNl4)aKA8{{!awD7kllxtnPN z)H@qL)VnCuZ{|3pD|sZSYtuVOS3zg!$I*;<=#M-HNbxpEiHT0ArH%m9(j01OKLfQ) zLAT8MBWB<*?#UC^I#NmB7gfAQYAQ~8gMW~}FRFQsbW)r=ah+F>3*22H!xR_2uXm`C zSz8xdz1e&!zsf3}$gu(XJfz(xNV|Vwmxqa-ifbajT0BMnfNh@~;NQsH$NV4Q z1^&daf2BmUApwXTbL;uM%VBr^{J)*44j1z-ccuc4$weWbkS{7Hzn|$!eUx1E_7gIx za#H$iSE_SzQG(49Su2k3LqO?!Q$;w4(%J9!>dfn~zmI`{k;Pn(ZdTrPZSq=Zg z{{sKBb{P|$;NpE*hf<`i4q*mW4;!(8|spLgbf@fMpMBt#vg=Vqj`^!D!lXsnbBE*KV?Jdh-BNRnv-B#G@T zBuNyKlxYG=T3b~C(=BpPoN?2;KWg!d8I1q`Uj8rce`dY}DYI+{nFW6d>EQ?IvB?E# zE(B`6bhl5s00~_RCn_Nukf$LVV8Fj=m$8rgkC?OjZi<6_7km1GD#0nJLD-Oj{Gd)- zk@g_ctIiV%*4>81;l7)#*K2{bCL%C|#rkfpUSD;dOt9`Z+~i8K9zb6Q(bpmLbr`%> zTaOs_f?3KQyZ%|fNv*9A_{+&~^tB7RzB7j*V4w+}kWH%w5IC+tJDgN!D-8(|wm`_r zSAQ~Sfd6&TwI|ov0@o$)6jyNR5^WQdF{%TFtU70aE%#Comy8>-2$e!JK;at&;}=0; zn&`G{{7_r+NT{th)D|HMaW=h!I1_6$?17nbJ8~$SY7IIJ!e2bR!tL zkss7(q7qVVc?jy`f5BdlwghnrfFv*Ff||^fXa1w&z(l8>4s3M@thJWs3l;VCx$X>k z&H>w_LtwQPEPwK$R>puPPobTOmDFOeP#O%Ztn?v^1zk55Ct$k3a{Sud&iu|&J+Qn2 zTg;b_F46|(KM0}RQL6wlI2yh_3f5WYicyQ-9i>q-pM_jDw?~%p3H6GQqn?g>DCV8j z^5O#U2fe->c|D;?s0N$nH$@18@0?uLv!))Ll2+cCgbBIsY{5{=JILTZq@IHGQ7qCU zM~>he$upT(m$Yhn^+M>#5nha=N9aK6LkkW^Yg=!fe%0Afp>ICbL34e5Ml;I- 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 diff --git a/spreadsheet/macrofree/waf_checklist.es.xlsx b/spreadsheet/macrofree/waf_checklist.es.xlsx index ee45296795a1aeb7262ca70fc5b189efd2f64ad7..9748d9d7f75c81a4810a6ef8a493d6d79d1fe469 100644 GIT binary patch delta 106239 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